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] JOIN
LEFT JOIN
RIGHT JOIN
FULL JOIN
Union
UNION
:合并SELECT
结果集- 要求结果集中列数量、类型必须相同
NULL
IS [NOT] NULL
:比较是否为NULL
值
- 比较符无法测试
NULL
值
符号
运算符
=
:有些方言可以使用==
<>
:有些方言可以使用!=
>
<
>=
<=
BETWEEN <value> AND <value>
[NOT] IN (<value>)
[NOT] LIKE <pattern>
%
:匹配0个、多个字符_
:匹配一个字符[<char>]
:字符列中任意字符^[<char>]/[!<char>]
:非字符列中任意字符
逻辑运算
AND
OR
符号
'
: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>)