第8章 关系数据库操作语言SQL
8.1 SQL支持的数据类型
8.1.1 数值型
1、 准确型
2、 近似型
8.1.2 字符串型
1、 普通编码字符串类型;
2、 统一编码字符串类型—Unicode编码;
3、 二进制字符串类型;
8.1.3 日期时间类型
8.1.4 货币类型
8.2 定义和维护关系表
8.2.1 关系表的定义与删除
1、定义表
CREATE TABLE <表名> (<列名><数据类型>[列级完整性约束定义]{, <列名><数据类型>[列级完整性约束定义]…}[,表级完整性约束定义])
1、 列级完整性约束:
(1) NOT NULL:取值非空;
(2) DEFAULT:指定列的默认值,形式:DEFAULT 常量;
(3) UNIQUE:列取值不重复;
(4) CHECK:列的取值范围,形式:CHECK(约束表达式);
(5) PRIMARY KEY:指定本列为主码;
(6) FOREIGN KEY:定义本列为引用其他表的外码;
2、 删除表
DROP TABLE <表名>
8.2.2 修改表结构
ALTER TABLE <表名>
8.3 数据操作语言
8.3.1 数据查询
1、查询语句的基本结构:
SELECT <目标列名序列> FROM <数据源> {WHERE , GROUP BY , HAVING , ORGER BY}
(1) 比较:SELECT A,B,C FROM TABLE_A WHERE A>30;
(2) 确定范围:WHERE A (NOT)BETWEEN 初始值 AND 结束值;
(3) 确定集合:WHERE A (NOT)IN (‘A1’,‘A2’….‘A3’);
(4) 字符串匹配:WHERE A LIKE <匹配符>;
(5) 四种<匹配符>:
(A)_(下划线):匹配任意一个字符;
(B)%(百分号):匹配0个或多个字符;
(C)[ ]:匹配[ ]中的任意一个字符;
(D)[^]:不匹配[ ]中的任意一个字符;
(6) 涉及空值的查询:WHERE A IS (NOT)NULL;
(7) 多重条件查询:AND(条件必须全部为TRUE,结果才为TRUE),OR(任一条件为TRUE,结果即为TRUE);
(8) 对查询结果进行排序:ORDER BY A [ASC(顺序) | DESC(逆序)];
(9) 列别名:列名 AS 新列名;
(10) 消除取值相同的行:SELECT DISTINCT A FROM TABLE_A;
(11) 使用聚合函数统计数据:SQL的聚合函数:
(A) COUNT(*):统计表中元组的个数;
(B) COUNT([ALL (全部)| DISTINCT(无重复)] <列名>):统计本列非空列值的个数;
(C) SUM(列名):计算列值的总和(必须是数值型列);
(D) AVG(列名):计算列值平均值(必须是数值型列);
(E) MAX(列名):求列最大值;
(F) MIN(列名):求列最小值;
(12) 对查询结果进行分组计算:
(A) 使用GROUP BY;
(B) 使用HAVING子句;
3、 连接查询
(1) 内连接:FROM 表1 JOIN 表2 ON (连接条件);
(2) 自连接:一种特殊的内连接,相互连接的表在物理上是同一张表,但通过为表取别名的方法,在逻辑上分为两张表;
(3) 外连接:输出不满足连接条件的元组,格式:
FROM 表1 LEFT|RIGHT OUTER JOIN 表2 ON (连接条件)
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |