模式的定义与删除
模式的定义
CREATE SCHEMA <模式名> AUTHORZATION <用户名> [<表定义字句>|<视图定义字句>|<授权定义字句>];
如果没有指定模式名,那么模式名隐含为用户名。
模式的删除
DROP SCHEMA <模式名><CASCADE|DESTRICT>
CASCADE(级联) 和 DESTRICT(限制) 两者比选其一
基本表的定义、删除与修改
定义基本表
CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束条件]
[,<列名><数据类型>[列级完整性约束条件]]
....
[,[表列级完整性约束条件]);
- 主码由一个属性构成,可将 PRIMARY KEY 作为列级完成性约束条件
- 主码由多个属性构成,PRIMARY KEY(<列名 1>[,<列名 2>…]) 必须作为表级完整性约束条件
- 定义外码:FOREIGN KEY (外码名) REFERENCES <被参照表名>(被参照列名);
修改基本表
ALTER TABLE <表名>
[ADD [COLUMN] <新列名><数据类型> [完整性约束]]
[ADD <表级完整性约束>]
[DROP [COLUMN] <列名> [CASCADE|RESTRICT]]
[DROP CONSTRAINT<完整性约束名> [RESTRICT|CASCADE]]
[ALTER COLUMN <列名><数据类型>];
删除基本表
DROP TABLE <表名> [RESTRICT|CASCADE];
索引的建立与删除
建立索引
CREATE [UNIQUE][CLUSTER] INDEX <索引名>
ON <表名>(<列名> [<次序>][,<列名>[<次序>]]...);
在SQL Server中使用CLUSTERED而不是CLUSTER。
次序1
修改索引
ALTER INDEX <旧索引名> RENAME TO <新索引名>;
删除索引
DROP INDEX <索引名>;
数据查询
SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>....]
FROM <表名或试图名> [,<表名或试图名>...] | ( <SELECT语句> ) [AS] <别名>
[WHERE<条件表达式>]
[GROUP BY <列名 1> [HAVING<条件表达式>]]
[ORDER BY <列名 2> [ASC|DESC]];
- 取消重复行:使用关键字 DISTINCT, 没有指定关键字则默认为ALL
- 目标列表达式,即查询结果以经过表达式运算后的结果显示
- WHERE字句中不能使用聚集函数作为条件表达式
- 外连接`SELECT <目标列表达式> FROM <表名> [LEFT|RIGHT] OUTER JOIN <连接表名> ON (连接条件)
- 嵌套查询中,子查询的SELECT语句中不能使用 ORDER BY 子句,即 OERDER BY 子句只能对最终查询结果排序
- 嵌套查询中可使用IN, ANY(或SOME), ALL, EXISTS(代表量词:存在),使用存在量词EXISTS后,若内层查询结果非空,则外层的 WHERE 子句true,否则返回 false。
- 集合查询主要使用并操作 UNION,交操作 INTERSECT 和差操作 EXCEPT。
数据更新
插入元组
INSERT INTO <表名> [(<属性列 1>[,<属性列 2>]....)]
VALUES (<常量 1>[,<常量 2>]....);
- 如果INTO子句中没有指明任何属性列名,则新插入的元组并需在每个属性列上均有值。
插入子查询结果
INSERT INTO <表名> [(<属性列 1>[,<属性列 2>....])]
子查询;
修改数据
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]....
[WHERE<条件>];
删除数据
DELETE
FROM <表名>
[WHERE <条件>];
视图
建立视图
CREATE VIEW <视图名> [(<列名>[,<列名>] ....]
AS <子查询>
[WITH CHECK OPTION];
删除视图
DROP VIEW <视图名> [CASCADE];
查询视图
同基本表的查询操作相同。
更新视图
由于视图是不实际存储数据的虚表,因此对视图的更新最终要转换为对基本表的跟新。但并不是所有的视图都是可更新的,因为有些视图的更新不能唯一地有意义地转换成对相应基本表的更新。
常用的查询条件表
查询条件 | 谓词 |
---|---|
比较 | =,>,<,>=,<=,!=,<>,!>,!<; NOT+上述比较运算符 |
确定范围 | BETWEEN AND, NOT WETWEEN AND |
确定集合 | IN, NOT IN |
字符匹配 | LIKE, NOT LIKE |
空值 | IS NULL, IS NOT NULL |
多重条件(逻辑运算) | AND, OR, NOT |
LIKE '<匹配串>' [ESCAPE '<换码字符>']
- %(百分号) 代表任意长度的字符串
- _(下划线) 代表任意单个字符
聚集函数表
函数名 | 功能 |
---|---|
COUNT(*) | 统计元组个数 |
COUNT([DISTINCT | ALL) <列名> | 统计一列中值的个数 |
SUM([DISTINCT | ALL) <列名> | 计算一列值的总和(此列必须是数值型) |
AVG([DISTINCT | ALL) <列名> | 计算一列值的平均值(此列必须是数值型) |
MAX([DISTINCT | ALL) <列名> | 求一列值中的最大值 |
MIN([DISTINCT | ALL) <列名> | 求一列值中的最小值 |
数据类型表
数据类型 | 含义 |
---|---|
CHAR(n),CHARACTER(n) | 长度为n的定长字符串 |
VARCHAR(n),CHARACTERARYING(n) | 最大长度为n的变长字符串 |
CLOB | 字符串大对象 |
BLOB | 二进制大对象 |
INT,INTEGER | 长整数(4字节) |
SMALLINT | 短整数(2字节) |
BIGINT | 大整数(8字节) |
NUMERGIC(p,d) | 定点数,由p位数字(不包括符号、小数点)组成,小数点后面有d位数字 |
DECIMAL(p,d),DEC(p,d) | 同NUMERGIC |
REAL | 取决于机器精度的单精度浮点数 |
DOUBLE PRECISION | 取决于机器精度的双精度浮点数 |
FLOAT(n) | 可选精度的浮点数,精度至少为n位数字 |
BOOLEAN | 逻辑布尔量 |
DATE | 日期,包含年、月、日,格式为YYYY-MM-DD |
TIME | 时间,包含一日的时、分、秒,格式为HH:MM:SS |
TIMESTAMP | 时间戳类型 |
INTERVAL | 时间间隔类型 |
- 次序可选 ASC(升序)或DESC(降序),默认值为ASC ↩