1. 数据定义语句
- 模式
. 创建: CREATE SCHEMA
. 删除: DROP SCHEMA
- 表
. 创建: CREATE TABLE
. 删除: DROP TABLE
. 修改: ALTER TABLE
- 视图
. 创建: CREATE VIEW
. 删除: DROP VIEW
- 索引
. 索引: CREATE INDEX
. 删除: DROP INDEX
. 修改: ALTER INDEX
2. 模式的定义与删除
- 模式定义: CREATE SCHEMA < 模式名 > AUTHORIZATION < 用户名 >; // 为用户定义一个 XX 模式
- 在创建模式时, 创建基本表, 视图, 定义授权
CREATE SCHEMA < 模式名 > AUTHORIZATION < 用户名 > [< 表定义子句 >|< 视图定义子句 >|< 授权定义子句 >]
- 删除模式: DROP SCHEMA < 模式名 > <CASECADE|RESTRICT>;
. <CASECADE|RESTRICT> 二者必选其一
CASECADE: 级联 删除模式时, 把该模式中的所有数据库对象全部删除
RESTRICT: 限制 如果该模式已定义下属的数据库对象则拒绝删除
3. 基本表的定义, 删除, 修改
- 定义: CREATE TABLE < 表名 > (< 列名 > < 数据类型 > [列级完整性约束条件]
[,< 列名 > < 数据类型 > [列级完整性约束条件] ]
... [,< 表级完整性约束条件 >]);
- 修改基本表 ALTER TABLE < 表名 > [ADD [COLUMN] < 新列名 > < 数据类型 > [完整性约束]]
[ADD < 表级完整性约束 >]
[DROP [COLUMN] < 列名 > [CASECADE|RESTRICT] ]
[DROP CONSTRAINT < 完整性约束名 > [CASECADE|RESTRICT] ]
[ALTER COLUMN < 列名 > < 数据类型 > ] ;
. 删除时使用 STRICT 如果该列被其他对象引用 则拒绝删除该列
. DROP CONSTRAINT 子句用于删除指定的完整性约束条件
. ALTER COLUMN 修改原有的列定义
- 删除基本表 DROP TABLE < 表名 > [CASECADE|RESTRICT];
4. 索引的建立, 修改
- 建立索引 CREATE [UNIQUE] [CLUSTER] INDEX < 索引名 > ON < 表名 >(< 列名 > [次序] [,< 列名 > [次序]]...);
- 修改索引 ALTER INDEX < 就索引名 > RENAME TO < 新索引名 >
- 删除索引名 DROP INDEX < 索引名 >;
5. 数据查询
- 一般格式 SELECT [ALL | DISTINCT] < 目标列表达式 > [,< 目标列表达式 >] ...
FROM < 表名或视图名 > [,< 表名或者视图名 >...] | (<SELECT 语句 >) [AS] < 别名 >
[WHERE < 条件表达式 >]
[GROUP BY < 列名 1> [HAVING < 条件表达式 >]]
[ORDER BY < 列名 2> [ASC|DESC]]
. DISTINCT 去掉重复元素
. ORDER BY 排序: ASC 升序, DESC 降序
. GROUP BY 将查询结果按一列或者多列的值分组, 值相等的为一组
6. 常用查询条件
- 确定范围: BETWEEN AND, NOT BETWEEN AND
- 确定集合: IN, NOT IN
- 字符匹配: LIKE, NOT LIKE
. 通配符 % _
% : 任意长度的字符串 例如: a%b 以 a 开头 b 结尾
_ : 任意字符串
- 空值: IS NULL, IS NOT NULL
- 逻辑运算: AND, OR, NOT
7. 聚集函数
- 统计元组个数 COUNT(*)
- 统计列中值个数 COUNT([DISTINCT|ALL] < 列名 >)
- 统计列值总和 SUM([DISTINCT|ALL] < 列名 >)
- 平均值 AVG([DISTINCT|ALL] < 列名 >)
- 最大值 MAX([DISTINCT|ALL] < 列名 >)
- 最小值 MIN([DISTINCT|ALL] < 列名 >)
8. 查询例子
- 查询名字中第二个字为阳的学生的名字和学号
SELECT Sname,Sno FROM Student WHERE Sname LIKE '_阳 %'
- 查询计算机科学系年龄在 20 岁以下的学生姓名
SELECT Sname FROM Student WHERE Sdept='CS' AND Sage<20;
- 查询一号课程学生平均成绩
SELECT AVG(Grade) FROM CS WHERE Cno='1';
- 查询平均成绩大于等于 90 分的学生学号和平均成绩
SELECT Sno,AVE(Grade) FROM CS GROUP BY Sno HAVING AVG(Grade)>=90;
来源: http://www.bubuko.com/infodetail-3047710.html