Structured Query Language
检索数据
数据操作
SELECT|INSERT|DELETE|UPDATE
数据定义
CREATE|DROP|ALTER TABLE
CREATE|DROP VIEW
CREATE|DROP INDEX
CREATE|DROP SCHEMA
CREATE|DROP|ALTER DOMAIN
访问控制
GRANT|REVOKE
事务控制
COMMIT|ROLLBACK|SET TRANSACTION
编程SQL
DECLARE|EXPLAIN|OPEN|FETCH|CLOSE|PREPARE|EXECUTE|DESCRIBE
ANSI/ISO SQL2关键字
ABSOLUTE|ACTION|ADD|ALL|ALLOCATE|ALTER|AND|ANY|ARE|AS|ASC|ASSERTION|AT|AUTHORIZATION|AVG
BEGIN|BETWEEN|BIT|BIT_LENGHT|BOTH|BY
CASCADE|CASCADED|CASE|CAST|CATALOG|CHAR|CHARACTER|CHAR_LENGTH|CHARACTER_LENGTH|CHECK|CLOSE|COALESCE|COLLATE|COLLATION|COLUMN|COMMIT|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONTINUE|CONVERT|CORRESPONDING|COUNT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR
DATE|DAY|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DESC|DESCRIBE|DESCRIPTOR|DIAGNOSTICS|DISCONNECT|DISTINCT|DOMAIN|DOUBLE|DROP
ELSE|END|END_EXEC|ESCAPE|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXISTS|EXTERNAL|EXTRACT
FALSE|FETCH|FIRST|FLOAT|FOR|FOREIGN|FOUND|FROM|FULL
GET|GLOBAL|GO|GOTO|GRANT|GROUP|
HAVING|HOUR
IDENTITY|IMMEDIATE|IN|INDICATOR|INITIALLY|INNER|INPUT|INSENSITIVE|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|IS|ISOLATION
JOIN
KEY
LANGUAGE|LAST|LEADING|LEFT|LEVEL|LIKE|LOCAL|LOWER
MATCH|MAX|MIN|MINUTE|MODULE|MONTH
NAMES|NATIONAL|NCHAR|NULLIF|NUMERIC|NEXT|NO|NOT|NULL
OCTET_LENGTH|OF|ON|ONLY|OPEN|OPTION|OR|ORDER|OUTER|OUTPUT|OVERLAPS
PAD|PARTIAL|POSITION|PRECISION|PREPARE|PRESERVE|PRIMARY|PRIOR|PRIVILEGES|PUBLIC
READ|REAL|REFERENCES|RELATIVE|RESTRICT|REVOKE|RIGHT|ROLLBACK|ROWS
SCHEMA|SCROLL|SECOND|SECTION|SELECT|SESSION|SESSION_USER|SET|SIZE|SMALLINT|SOME|SPACE|SQL|SQLCODE|SQLERROR|SQLSTATE|SUBSTRING|SUM|SYSTE_USER
TABLE|TEMPORARY|THEN|TIME|TIMESTAMP|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TRAILING|TRANSACTION|TRANSLATE|TRANSLATION|TRIM|TRUE
UNION|UNIQUE|UNKNOWN|UPDATE|UPPER|USAGE|USER|USING
VALUE|VALUES|VARCHAR|VARYING|VIEW
WHEN|WHENEVER|WHERE|WITH|WORK|WRITE
YEAR
ZONE
ANSI/SQL2潜在的关键字
AFTER|ALIAS|ASYNC
BEFORE|BOOLEAN|BREADTH
COMPLETION|CALL|CYCLE
DATA|DEPTH|DICTIONARY
EACH|ELSEIF|EQUALS
GENERAL
IF|IGNORE
LEAVE|LESS|LIMIT|LOOP
MODIFY
NEW|NONE
OBJECT|OFF|OID|OLD|OPERATION|OPERATIONS|OTHERS
PARAMETERS|PENDANT|PREORDER|PRIVATE|PROTECTED
RECURSIVE|REF|REFERENCING|REPLACE|RESIGNAL|RETURN|RETURNS|ROLE|ROUTING|ROW
SAVEPOINT|SEARCH|SENSITIVE|SEQUENCE|SIGNAL|SIMILAR|SQLEXCEPTION|SQLWARNING|STRUCTURE
TEST|THERE|TRIGGER|TYPE
UNDER
VARIABLE|VIRTUAL|VISIBLE
WAIT|WHILE|WITHOUT
ANSI/ISO SQL数据类型
CHAR(len)|CHARACTER(len)|VARCHAR(len)|CHAR VARYING(len)|CHARACTER VARYING(len)|NCHAR(len)|NCHAR VARYING(len)
NATIONAL CHAR(len)|NATIONAL CHARACTER(len)|NATIONAL CHAR VARYING(len)|NATIONAL CHARACTER VARYING(len)
INTEGER|INT|SMALLINT
BIT(len)|BIT VARYING(len)
NUMERIC(precision,scale)|DECIMAL(precision,scale)|DEC(precision,scale)|FLOAT(precision)|REAL|DOUBLE PRECISION
DATE
TIME(precision)|TIMESTAMP(precision)
INTERVAL
IBM SQL 日期和时间格式
美国 mm/dd/yyyy hh:mm am/pm
欧洲 dd.mm.yyyy hh.mm.ss
日本 yyyy-mm-dd hh:mm:ss
ISO yyyy-mm-dd hh.mm.ss
TIMESTAMP yyyy-mm-dd hh.mm.ss.nnnnnn
内嵌的SQL2函数
BIT_LENGTH(string)|CHAR_LENGTH(string)|OCTET_LENGTH(string)|
CAST(value AS data_type)
CONVERT(string USING conv)|TRANSLATE(string USING trans)
CURRENT_DATE|CURRENT_TIME(precision)|CURRENT_TIMESTAMP(precision)
EXTRACT(port FROM source)
LOWER(string)|UPPER(string)
POSITION(target IN source)
SUBSTRING(source FROM n FOR len)
TRIM(BOTH char FROM string)
TRIM(LEADING char FROM string)
TRIM(TRAILING char FROM string)
简单查询
SELECT [ALL|DISTINCT] *|[表名 *]|[值表达式 AS 字段名]
FROM 表说明
WHERE 搜索条件
GROUP BY 分组字段列表
HAVING 搜索条件
ORDER BY 排序字段列表
搜索条件
比较测试:表达式1 =|<>|<|<=|>|>= 表达式2
范围测试:测试表达式 [NOT] BETWEEN 表达式下限 AND 表达式上限
组成员测试:测试表达式 [NOT] IN ([,])
模式匹配测试:字段名 [NOT] LIKE 模式 [ESCAPE 转义字符],%,_
NULL值测试:字段名 IS [NOT] NULL
复合搜索条件:AND|OR|NOT
组合查询结果:UNION [ALL]
多表查询(连接)
简单连接(等连接)
父子查询
不等连接
自连接
表的别名 表名 [表的别名]
外连接 *=,=*,*=*
SQL1连接:FROM [,] WHERE
自连接表达式:表1 NATURAL INNER|[[FULL|LEFT|RIGHT]OUTER] JOIN 表2
SQL2连接
连接表达式:表1 INNER|[[FULL|LEFT|RIGHT]OUTER] JOIN 表2 [ON 发送条件]|[USING 字段列表]
交叉表达式:表1 CROSS JOIN 表2
合并表达式:表1 UNION JOIN 表2
汇总查询
SQL字段函数
SUM(表达式|[DISTINCT 字段名])
AVG(表达式|[DISTINCT 字段名])
MIN(表达式)
MAX(表达式)
COUNT([DISTINCT] 字段名)
COUNT(*)
SELECT查询的步骤:
如果语句是SELECT语句的一个UNION,将第2步到第7步应用到每一条语句,以生成他们各自的查询结果
形成在FROM子句中提到的表的乘积。如果FROM子句命名了一个表,则积就是那个表
如果有一条WHERE子句,把它的搜索条件应用到积表的每一条记录,保留搜索条件为TRUE的记录。如果WHERE子句含有一个子查询,对于要测试的每一条记录,执行这个子查询
如果有一条GROUP BY子句,把积表的剩余记录安排到记录组中,以便每个组中的记录在所有的分组字段中有同样的值
如果有一条HAVING子句,把它的搜索条件应用到每个记录组,保留其搜索条件为TRUE的那些组。如果HAVING子句含有一个子查询,对于要测试的每一个记录组,执行这个子查询
对于每个保留的记录(组),计算选择列表中每一项的值。对于每个字段的引用,使用当前记录中字段的值。对于一个字段函数,如果指定了GROUP BY,使用当前记录组作为它的参数,否则使用全部记录
如果指定了SELECT DISTINCT,消除所生成的查询结果中任何重复的记录
如果语句是SELECT语句的一个UNION,把各条语句的查询结果合并到一个表中。消除重复的记录,除非指定了UNION ALL
如果存在一条ORDER BY子句,按指定的那样排序查询结果
子查询和查询表达式
子查询不含ORDER BY子句
WHERE/HAVING子查询
子查询搜索条件
比较测试:表达式 =|<>|<|<=|>|>= 子查询
组成员测试:测试表达式[NOT] IN 子查询
存在测试:[NOT] EXISTS 子查询
限定性比较测试:表达式 =|<>|<|<=|>|>= ANY|ALL子查询
标量值表达式
CAST表达式:CAST(值表达式|NULL AS 数据类型|域名)
CASE表达式:CASE WHEN 搜索条件 THEN 结果表达式|NULL ELSE 结果表达式|NULL
CASE 测试值 WHEN 值 THEN 结果表达式|NULL ELSE 结果表达式|NULL
COALESCE表达式:COALESCE([,])
NULLIF表达式:NULLIF([,])
记录值表达式:(值表达式|NULL|DEFAULT|[,])
表值表达式:VALUES(记录值结果|[,])
查询表达式:连接|并|差|交,JOIN|UNION|DIFFERENCE|INTERSECT
更新数据
INSERT|UPDATE|DELETE
单行INSERT语句:INSERT INTO 表名[(字段名|[,])] VALUES(常量|NULL|[,])
多行INSERT语句:INSERT INTO 表名[(字段名)|[,]] 查询
大容量装载工具
删除数据
DELETE FROM 表名 |[WHERE 搜索条件]
修改数据
UPDATE 表名 SET [字段名=表达式]|[,] WHERE 搜索条件
数据完整性
要求的数据|有效性检查|实体完整性|引用完整性|其他数据关系|商业规则|一致性
删除和更新规则
RESTRICT|CASCADE|SET NULL|SET DEFAULT
CREATE TABLE完整性约束
MATCH FULL|MATCH PARTIAL
高级约束功能
字段约束|域|表约束|断言
断言:CREATE ASSERTION assert CHECK
SQL约束类型:NOT NULL|PRIMARY KEY|UNIQUE|FOREIGN KEY|CHECK
延期约束检验:DEFERRABLE|NOT DEFERRABLE
约束初始状态:INITIALLY IMMEDIATE|INITIALLY DEFERRED
触发器
SQL Server:CREATE TRIGGER trigger ON table FOR INSERT|DELETE|UPDATE|[,] AS action
DB2:CREATE TRIGGER trigger AFTER INSERT|DELETE|UPDATE|[,] ON table REFERENCING NEW AS new_ FOR EACH ROW MODE DB2SQL BEGIN ATOMIC action END
Informix:CREATE TRIGGER trigger INSERT|UPDATE|DELETE|[,] ON table AFTER action
事务处理
ANSI/ISO事务模型
COMMIT|ROLLBACK|成功终止程序|非正常终止程序
Sybase事务模型
BEGIN TRANSACTION|COMMIT TRANSACTION|SAVE TRANSACTION|ROLLBACK TRANSACTION
锁定
共享锁|独占锁
死锁
高级锁定技术
明锁|绝缘锁|锁定参数
明锁
独占模式|共享模式
LOCK TABLE 表名 IN SHARE|EXCLUSIVE MODE
绝缘锁
SERIALIZABLE|REPEATABLE READ|READ COMMITTED|READ UNCOMMITTED
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE|REPEATABLE READ|READ COMMITTED|READ UNCOMMITTED READ WRITE|READ ONLY
版本化
数据库结构
创建数据库
数据库定义语言
CREATE|DROP|ALTER
数据库定义:CREATE|DROP DATABASE
表定义
创建表
CREATE TABLE 表名(字段定义|表约束定义|[,])
字段定义:字段名 数据类型 DEFAULT|[] []|NOT NULL
表约束定义 [CONSTRAINT 约束名] 主键字约束|外键字约束|唯一性约束|检验约束 [[NOT] DEFERRABLE] [[INITIALLY IMMEDIATE]|[INITIALLY DEFERRED]]
主键字约束:PRIMARY KEY(字段名|[,])
外键字约束:FOREIGN KEY (字段名|[,]) REFERENCES 表名[字段名|[,]] [MATCH FULL|DEFAULT] [ON DELETE CASCADE|SET NULL|SET DEFAULT|NO ACTION] [ON UPDATE CASCADE|SET NULL|SET DEFAULT|NO ACTION]
唯一性约束:UNIQUE(字段名|[,])
检验约束:CHECK(搜索条件)
删除表
DROP TABLE 表名 [CASCADE|RESTRICT]
改变表
ALTER TABLE 表名 [ADD 字段定义]|[ALTER 字段定义 [SET DEFAULT 值]|[DROP DEFAULT]] |[DROP 字段名 CASCADE|RESTRICT] |[ADD 主键字定义|外键字定义|唯一性约束|检验约束] |[DROP CONSTRAINT 字段名 CASCADE|RESTRICT]
约束定义
断言
CREATE ASSERTION 断言 CHECK 搜索条件
DROP ASSERTION 断言
域
CREATE DOMAIN 域 数据类型 CHECK 搜索条件
DROP DOMAIN 域 CASCADE|RESTRICT
别名|匿名
CREATE ALIAS 别名 FOR 表名
DROP ALIAS 别名
索引
CREATE [UNIQUE] INDEX 索引名 ON 表名([字段名 [ASC|DESC]] |[,])
数据库结构
单个数据库|多个数据库|多区域|多台服务器体系结构
SQL环境组件
DBMS软件|命名的用户|程序模块|目录|数据库数据
SQL2模式
表|视图|域|断言|权限|字符集|校勘|转换
CREATE SCHEMA [模式名 [AUTHORIZATION 用户名]] |[AUTHORIZATION 用户名] [DEFAULT CHARACTER SET 字符集名] [[CREATE TABLE] |[CREATE VIEW] |[CREATE DOMAIN] |[CREATE ASSERTION] |[CREATE CHARACTER SET] |[CREATE COLLATION] |[CREATE TRANSLATION] |GRANT]
DROP SCHEMA 模式名 RESTRICT|CASCADE
视图
CREATE VIEW 视图名[(字段名|[,])] AS 查询 [WITH CHECK OPTION]
水平视图|垂直视图|记录/字段子集视图|分组视图|连接视图
DROP VIEW 视图名 CASCADE|RESTRICT
SQL安全
用户|数据库对象|权限
GRANT [[DELETE|[SELECT|INSERT|UPDATE|REFERENCES[(字段名|[,])]]] |[,] |[ALL PRIVILEGES] ON 表名] |[USAGE ON [DOMAIN 域名] |[CHARACTER SET 字符集名] |[COLLATION 校勘名] |[TRANSLATION 转换名]] TO 用户名|PUBLIC|[,] [WITH GRANT OPTION]
REVOKE [GRANT OPTION FOR] DELETE|USAGE|[SELECT|INSERT|UPDATE|REFERENCES[(字段名|[,])] ON 表名|[DOMAIN 域名] |[CHARACTER SET 字符集名] |[COLLATION 校勘名] |[TRANSLATION 转换名] FROM 用户名|PUBLIC|[,] [CASCADE|RESTRICT]
系统目录
表|字段|用户|视图|权限
SQL编程
嵌入式|应用程序接口
存储过程
条件执行|循环|块结构|命名变量|命名过程