一、差异集锦
在建表的时候,只有自增的语法不同。
下面给出3种数据库通用的建表与初始化测试语句:
CREATE TABLE Country(
Id int PRIMARY KEY,
Name varchar(20)
); CREATE TABLE Person (
Id int PRIMARY KEY,
CountryId int,
Name varchar(20) NOT NULL UNIQUE,
Sex int DEFAULT 0,
CONSTRAINT FK_CID_PID FOREIGN KEY (CountryId) REFERENCES Country(Id)
);
插入测试数据:
INSERT INTO Country VALUES(1, '蜀国');
INSERT INTO Country VALUES(2, '魏国');
INSERT INTO Country VALUES(3, '吴国'); INSERT INTO Person VALUES(1,1,'刘备',1);
INSERT INTO Person VALUES(2,1,'关羽',1);
INSERT INTO Person VALUES(3,1,'张飞',1);
INSERT INTO Person VALUES(4,2,'曹操',1);
INSERT INTO Person VALUES(5,2,'郭嘉',1);
INSERT INTO Person VALUES(6,2,'典韦',1);
INSERT INTO Person VALUES(7,3,'孙权',1);
INSERT INTO Person VALUES(8,3,'周瑜',1);
INSERT INTO Person VALUES(9,3,'大乔',2);
SQLServer | MySQL | Oracle | |
自增 | identity(1,1) | AUTO_INCREMENT | SEQUENCE/触发器 |
自增行插入 | INSERT INTO Person VALUES(NULL,1,'魏延',1) | INSERT INTO Person VALUES(1,'魏延',1) | INSERT INTO Person VALUES(SEQID.NEXTVAL,1,'魏延',1) |
取前几条 | SELECT TOP 5 * FROM Person | SELECT * FROM Person LIMIT 0,5 | SELECT * FROM Person WHERE ROWNUM < 5 |
表别名 | SELECT * FROM Person AS P INNER JOIN Country AS C ON P.CountryId = C.Id | SELECT * FROM Person AS P INNER JOIN Country AS C ON P.CountryId = C.Id | SELECT * FROM Person P INNER JOIN Country C ON P.CountryId = C.Id |
字段名大小写 | 与SELECT相同 | 与SELECT相同 | Oracle中,字段名都是大写的,即使SELECT语句中是小写,得到的结果也是大写。 |
获取当前时间&查询临时值 | SELECT now() AS NOWDATE | SELECT getdate() AS NOWDATE | SELECT sysdate AS NOWDATE FROM Dual--需加Dual虚表 |