23r111 发表于 2014-8-11 10:44:40

SQL中数据库之间不兼容的语法汇总

1.TOP
SQL Server的语法:
SELECT TOP number columnName
FROM tableName
MySQL的语法:
SELECT columnName
FROM tableName
LIMIT number
Oracle的语法:
SELECT columnName
FROM tableName
WHERE ROWNUM<=number
2.创建表时添加UNIQUE/PRIMARY KEY/FOREIGN KEY/CHECK(不需名为约束人为命时才有不兼容)
   (接下来举例说明)

SQL Server/Oracle/Access的语法:
CREATE TABLE Students
(Name char(10) NOT NULL,
Id char(10) NOT NULL UNIQUE

)
MySQL的语法:
CREATE TABLE Students
(Name char(10) NOT NULL,
Id char(10) NOT NULL,
UNIQUE(Id)

)
PRIMARY KEY和UNIQUE同理,只是把UNIQUE换成PRIMARY KEY而已;
FOREIGN KEY也是同理,只不过要加上REFERENCES的内容而已;
CHECK也是同理,只不过要加上约束的内容而已;

3.撤销UNIQUE
SQL Server/Oracle/Access的语法:
ALTER TABLE TableName
DROP CONSTRAINT constraintName
MySQL的语法:
ALTER TABLE TableName
DROP INDEX indexName
4.撤销PRIMARY KEY
SQL Server/Oracle/Access的语法:
ALTER TABLE TableName
DROP CONSTRAINT constraintName
MySQL的语法:
ALTER TABLE TableName
DROP PRIMARY KEY
5.撤销FOREIGN KEYSQL Server/Oracle/Access的语法:
ALTER TABLE TableName
DROP CONSTRAINT constraintName
MySQL的语法:
ALTER TABLE TableName
DROP FOREIGN KEY foreignKeyName

6.撤销CHECKSQL Server/Oracle/Access的语法:
ALTER TABLE TableName
DROP CONSTRAINT constraintName
MySQL的语法:
ALTER TABLE TableName
DROP CHECK checkName7.为已有的表添加DEFAULT
SQL Server/Oracle/Access的语法:
ALTER TABLE tableName
ALTER columnName SET DEFAULT 'defaultValue'
MySQL的语法:
ALTER TABLE tableName
ALTER COLUMN columnName SET DEFAULT 'defaultValue'
8.撤销DEFAULT
SQL Server/Oracle/Access的语法:
ALTER TABLE tableName
ALTER columnName DROP DEFAULT
MySQL的语法:
ALTER TABLE tableName
ALTER COLUMN columnName DROP DEFAULT

9.撤销引索SQL Server的语法:
DROP INDEX tableName.columnName
Oracle的语法:
DROP INDEX indexName
Access的语法:
DROP INDEX indexName ON tableName
MySQL的语法:
ALTER TABLE tableName
DROP INDEX indexName

当然,不同的数据库在时间处理等方面还有不同,但由于文本过长,在此不再赘述。
页: [1]
查看完整版本: SQL中数据库之间不兼容的语法汇总