数据库:笔记03SQL
模式的定义与删除
个关系数据库管理系统的实例(instance)中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象。
定义
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
[<表定义子句>|<视图定义子句>|<授权定义子句>];
删除
DROP SCHEMA <模式名> <CASCADE|RESTRICT>;
级联 限制
基本表的定义、删除、修改
定义
CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束条件]
[,<列名><数据类型>[列级完整性约束条件]]
···
[表级完整性约束条件>]
);
数据类型:
删除
DROP TABLE <表名> [RESTRICT|CASCADE];
限制 级联
修改
ALTER TABLE <表名>
[ADD [COLUMN] <新列名> <数据类型> [完整性约束]] 增加新列、新的列级完整性约束条件和新的表级完整性约束条件
[ADD <表级完整性约束> ]
[DROP [COLUMN] <列名> [CASCADE|RESTRICT]] 删除表中的列
[DROP CONSTRAINT <完整性约束名> [RESTRICT|CASCADE]] 删除指定的完整性约束条
[ALTER COLUMN <列名><数据类型>]; 修改原有的列定义
查询
SELECT [ ALL | DISTINCT] <目标列表达式> [,<目标列表达>]···
默认 删除相同行
FROM <表名或视图名> [,<表名或视图名>···]|(<SELECT语句>)[AS]<别名>
[WHERE<条件表达式>]
[GROUP BY<列名1>[HAVING<条件表达式>]]
[ORDER BY<列名2>[ASC|DESC]];
聚集函数
COUNT(*) | 统计元组个数 |
---|---|
COUNT([DISTINCT|ALL]<列名>) | 统计一列中值的个数 |
SUM([DISTINCT|ALL]<列名>) | 计算一列值的总和(此列必须是数值型) |
AVG([DISTINCT|ALL]<列名>) | 计算一列值的平均值(此列必须是数值型) |
MAX([DISTINCT|ALL]<列名>) | 求一列值中的最大值 |
MIN([DISTINCT|ALL]<列名>) | 求一列值中的最小值 |
注意:WHERE子句中是不能用聚集函数作为条件表达式的。聚集函数只能用于SELECT子句和GROUPBY中的HAVING子句。
WHERE
比较大小
用于进行比较的运算符一般包括=(等于),>(大于),<(小于),>=(大于等于),<=(小于等于),!=或<>(不等于),!>(不大于),!<(不小于)
确定范围
BETWEEN···AND···和NOT BETWEEN···AND···
BETWEEN后是范围的下限(即低值),AND后是范围的上限(即高值)
确定集合
谓词IN可以用来查找属性值属于指定集合的元组。
NOT IN用于查找属性值不属于指定集合的元组。
字符匹配
谓词LIKE可以用来进行字符串的匹配。
[NOT] LIKE <匹配串> [ESCAPE’<换码字符>’]
%(百分号)代表任意长度(长度可以为0)的字符串。
_(下横线)代表任意单个字符。
注意:数据库字符集为ASCII时一个汉字需要两个__ ,当字符集为GBK时只需要一个 __ 。
涉及空值的查询
IS NULL
IS NOT NULL
多重条件查询
逻辑运算符AND和OR可用来连接多个查询条件。AND的优先级高于OR,但用户可以用括号改变优先级。##
GROUP BY
将查询结果按某一列或多列的值分组,值相等的为一组。
连接查询
内连接:舍弃不匹配的元组。
外连接
左外连接:内连接 + 左边关系中失配的元组(缺少的右边关系属 性值用null表示)。
右外连接:内连接 + 右边关系中失配的元组(缺少的左边关系属 性值用null表示)。
全外连接:内连接 + 左边关系中失配的元组(缺少的右边关系属 性值用null表示)+ 右边关系中失配的元组(缺少的 左边关系属性值用null表示)。
嵌套查询
IN
让我好好看一下吧
数据更新
插入数据
INSERT
INTO<表名>[(<属性列1>[,<属性列2>]···)]
VALUES(<常量1>[,<常量2>]···);
修改数据
UPDATE<表名>
SET<列名>=<表达式>[,<列名>=<表达式>]···
[WHERE<条件>];
删除数据
DELETE
FROM<表名>
[WHERE<条件>];
视图
定义视图
CREATE VIEW<视图名>[(<列名>[,<列名>]···)]
AS<子查询>
[WITH CHECK OPTION];
查询、更新和表一样