|
|
|
|
|
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MySQL: INT、TINYINT
PostgreSQL: INTEGER、BIGINT
Oracle: NUMBER(10) (无独立INT类型)
SQL Server: INT、SMALLINT
MySQL: VARCHAR(255)、TEXT
PostgreSQL: VARCHAR、TEXT (不限长度!)
Oracle: VARCHAR2(4000)
SQL Server: NVARCHAR(MAX)
PostgreSQL: JSONB、几何类型(GIS专用)
Oracle: CLOB(超大文本)、BLOB
SQL Server: XML、HIERARCHYID
-- MySQL
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY);
-- PostgreSQL
CREATE TABLE users (id SERIAL PRIMARY KEY);
-- 或使用 GENERATED BY DEFAULT AS IDENTITY
CREATE TABLE users (
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY
);
-- 或更严格的 GENERATED ALWAYS AS IDENTITY
CREATE TABLE users (
id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY
);
-- Oracle
CREATE SEQUENCE user_seq;
CREATE TABLE users (id NUMBER DEFAULT user_seq.nextval PRIMARY KEY);
-- SQL Server
CREATE TABLE users (id INT IDENTITY(1,1) PRIMARY KEY);
-- MySQL/PostgreSQL
SELECT * FROM table LIMIT 10 OFFSET 20;
-- Oracle
SELECT * FROM (
SELECT t.*, ROWNUM rn FROM (
SELECT * FROM table ORDER BY id
) t WHERE ROWNUM <= 30
) WHERE rn > 20;
-- SQL Server
SELECT * FROM table ORDER BY id
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
-- MySQL
SELECT CONCAT(name, '来自', city); -- CONCAT遇到NULL时会返回NULL!
-- PostgreSQL/Oracle
SELECT name || '来自' || city;
-- SQL Server
SELECT name + '来自' + city;
-- MySQL/PostgreSQL/SQL Server
SELECT SUBSTRING('HelloWorld', 2, 5); -- 输出 elloW
-- Oracle
SELECT SUBSTR('HelloWorld', 2, 5) FROM dual; -- 输出 ellow
想了解更多干货,可通过下方扫码关注
可扫码添加上智启元官方客服微信👇