SQL语法
基本操作
1  | SELECT <field>, DISTINCT <field>  | 
数据库、表、索引、视图
创建
1  | !-- 创建数据库  | 
自增字段
1  | !-- MSSQL  | 
丢弃
1  | !-- 丢弃索引  | 
修改表
1  | !-- 添加列  | 
关键字
TOP
- MSSQL:
SELECT TOP <num>/<num> PERCENT * - MYSQL:
LIMIT <num> - ORACLE:
WHERE ROWNUM <= <num> 
Alias
AS:指定行、列别名
Join
[INNER] JOINLEFT JOINRIGHT JOINFULL JOIN
Union
UNION:合并SELECT结果集- 要求结果集中列数量、类型必须相同
 
NULL
IS [NOT] NULL:比较是否为NULL值
- 比较符无法测试
 NULL值
符号
运算符
=:有些方言可以使用==<>:有些方言可以使用!=><>=<=BETWEEN <value> AND <value>[NOT] IN (<value>)[NOT] LIKE <pattern>%:匹配0个、多个字符_:匹配一个字符[<char>]:字符列中任意字符^[<char>]/[!<char>]:非字符列中任意字符
逻辑运算
ANDOR
符号
':SQL中使用单引号包括文本值- 大部分方言也支持
"双引号 
- 大部分方言也支持
 
数据类型
MySQL
| TEXT类型 | 描述 | 
|---|---|
CHAR([<size>]) | 
|
VARCHAR([<size>]) | 
|
TINYTEXT | 
|
LONGTEXT | 
|
MEDIUMITEXT | 
|
BLOB | 
|
MEDIUMBLOB | 
|
LONGBLOB | 
|
ENUM(<val_list>) | 
|
SET | 
| NUMBER类型 | 描述 | 
|---|---|
TINYINT([<size>]) | 
|
SMALLINT([<size>]) | 
|
MEDIUMINT([<size>]) | 
|
INT([<size>]) | 
|
BIGINT([<size>]) | 
|
FLOAT([<size>]) | 
|
DOUBLE([<size>]) | 
|
DECIMAL([<size>]) | 
| DATE类型 | 描述 | 
|---|---|
DATE() | 
|
DATETIME() | 
|
TIMSTAMP() | 
|
TIME() | 
|
YEAR() | 
MSSQL
| ASCII类型 | 描述 | 
|---|---|
CHAR([<size>]) | 
|
VARCHAR([<size>]) | 
|
TEXT | 
| UNICODE类型 | 描述 | 
|---|---|
CHAR([<size>]) | 
|
VARCHAR([<size>]) | 
|
text | 
| BINARY类型 | 描述 | 
|---|---|
bit | 
|
binary([<n>]) | 
|
varbinary([<n>]) | 
|
image | 
| NUMBER类型 | 描述 | 
|---|---|
TINYINT | 
|
SMALLINT | 
|
MEDIUMINT | 
|
INT | 
|
BIGINT | 
|
DECIMAL(p, s) | 
|
FLOAT([<n>]) | 
|
REAL | 
|
SMALLMONEY | 
|
MONEY | 
| DATE类型 | 描述 | 
|---|---|
DATETIME | 
|
DATETIME2 | 
|
SMALLDATETIME | 
|
DATE | 
|
TIME | 
|
DATETIMEOFFSET | 
|
TIMESTAMP | 
约束
建表时添加约束
- MSSQL、ORACLE:可直接在字段声明后添加约束
 - MySQL:需独立指定约束
 
向已有表添加约束
- 可以添加匿名、具名约束
 - MSSQL、ORACLE:有
COLUMN关键字 
删除约束
- MySQL:使用约束关键字指定
 - MSSQL、ORACLE:使用
CONSTRAINT关键字指定 
NOT NULL
1  | <field> <dtype> NOT NULL  | 
DEFAULT
DEFAULT
1  | !-- 建表  | 
UNIQUE
UNIQUE
1  | !-- 建表  | 
PRIMARY KEY
PRIMARY KEY
1  | !-- 建表  | 
FOREIGN KEY
FOREIGN KEY
1  | !-- 建表  | 
CHECK
CHECK
1  | !-- 建表  | 
内建函数
Date
MySQL
NOW()CURDATE()CURTIME()DATE()EXTRACT()DATE_ADD()DATE_SUB()DATE_DIFF()DATE_FORMAT()
MSSQL
GETDATE()DATEPART()DATEADD()DATEDIFF()CONVERT()
NULL
MSSQL
ISNULL(<field>, <replacement>)
ORACLE
NVL(<field>, <repalcement>)
MySQL
IFNULL(<field>, <replacement>)COALESCE(<field>, <replacement>)