总体要求
理解数据库的基本概念、理解 DDL 及 DML
语言、能够根据业务需求及数据特征使用查询语言从数据库中获取准确、完整的数据信息、能够应用数据库函数进行数据处理及计算
【领会】
数据库分类
数据库的功能定位:OLTP
数据仓库的功能定位:OLAP
联机事务处理 ( OLTP ) 系统旨在针对小工作单元进行快速写入,例如,用于快速创建单个事件。 联机分析处理 ( OLAP )
数据仓库旨在促进跨大型数据集进行快速分析,例如,在去年创建的所有事件中快速确定服务级别协议 SLA 的遵从。
SQL 语言的功能
【熟知】加载数据库、数据库管理系统与 SQL 之间的关系
DDL 适⽤于定义和管理数据库元素的语⾔,主要⽤于数据库中的数据表、索引、视图的创建、修改和删
除等。常⽤的关键字主要包括 create、drop、alter 等。
【领会】
数据库基本结构
最小的储存单位:字段
【熟知】
数据类型约束条件
为了保证数据的完整性,可以通过四种方式来实现,约束、规则、默认值、触发器。
完整性约束包括:主键约束(PRIMARY KEY)、外键约束(FOREIGN KEY)、 唯一约束(UNIQUE)、非空约束(NOT
NULL)、检查约束(CHECK)。
CREATE TABLE emp(
depid CHAR(3) PRIMARY KEY,
depname VARCHAR(20) NOT NULL,
peoplecount INT UNIQUE DEFAULT 0);
【应用】
创建、选用、删除数据库
CREATE DATABASE 库名
USE 库名
DROP 库名
创建、修改、删除表
CREATE TABLE 表名(数据名 类型 约束条件,……);
ALTER TABLE 表名 RENAME 新表名; #修改表名
ALTER TABLE 表名 MODIFY 字段名 数据类型; #修改数据类型
ALTER TABLE 表名 CHANGE 字段名 新字段名 数据类型; #修改字段名和数据类型
ALTER TABLE 表名 ADD 字段名 数据类型 约束条件; #添加新字段
ALTER TABLE 表名 MODIFY 字段名 数据类型 FIRST; #将字段的排列顺序改为第一位
ALTER TABLE 表名 MODIFY 字段名1 数据类型 AFTER 字段名2; #将字段1的排列顺序改到字段2之后
ALTER TABLE 表名 DROP 字段名 #删除字段
DROP TABLE 表名(只有DROP不用跟数据类型)
DML是对数据库中表记录的操作,⽤于添加、删除、更新和查询记录,并检查数据完整性。
常⽤的关键字主要包括: insert、delete、update 等,是开发⼈员⽇常使⽤最频繁的操作。
【领会】
添加数据的步骤
【熟知】
添加、修改、删除数据的语法规则
【应用】
添加数据
insert into 表名(字段名,……)
values( 值1,……),(值2,……)
![](https://www.www.zyiz.net/i/ll/?i=20210405154846765.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Nhc2hhOTg=,size_16,color_FFFFFF,t_70)
修改数据
** update ** 表名
set 列=新值,列=新值,……
where 筛选条件;
![](https://www.www.zyiz.net/i/ll/?i=202104051550110.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Nhc2hhOTg=,size_16,color_FFFFFF,t_70)
删除数据
** delete from ** 表名 where 筛选条件
(删除数据但保留表结构)
【领会】
虚拟结果集
【熟知】
运算符
![](https://www.www.zyiz.net/i/ll/?i=20210405155210218.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Nhc2hhOTg=,size_16,color_FFFFFF,t_70)
![](https://www.www.zyiz.net/i/ll/?i=20210405155239228.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Nhc2hhOTg=,size_16,color_FFFFFF,t_70)
SQL 语句的书写顺序和执行逻辑
FROM-->WHERE-->GROUP BY-->HAVING-->SELECT-->ORDER BY
【应用】
基本查询:去重查询、设置别名
别名是在WHERE⼦句后计算的,所以WHERE⼦句中不能⽤别名,FROM⼦句中可以⽤表别名。
Distinct 必须出现在字段开头
select id, distinct name from A; -- 会提示错误
select count(distinct name) from A; --正确
条件查询:多条件查询、空值查询、模糊查询 分组查询:分组聚合、分组后筛选
HAVING 子句中的筛选字段必须是可以出现在分组结果中的字段。
SELECT deptid,AVG(sal) FROM employee GROUP BY deptid HAVING job=’clerk’; (x)
查询结果排序、限制查询结果数量
【领会】
对应关系:一对一、一对多、多对多连接方式:内连接、左连接、右连接连接条件:等值连接、不等值连接
【熟知】
连接查询的逻辑和联合查询规则
连接的关键字段可以有一个或多个
【应用】
连接查询:内连接、左连接、右连接联合查询:去重、不去重
** Union: ** 合并,去重,相当distinct
** Union all ** ** : ** 合并,不去重
【领会】
子查询分类
所有的连接查询都能表示为子查询(√)
Where 子句的查询条件是聚合函数时不能表示为连接查询
【熟知】
子查询位置、子查询操作符
Any :满足其中任意一个条件
All :满足所有条件
Exists :表示存在,返回布尔值
Limit :查询后只显示limit指定数字的行数结果
【应用】
子查询语法规则
一定在小括号内
子查询可以出现在SELECT、WHERE、HAVING、FROM、JOIN子句中。
子查询优化
【领会】
计算字段
【熟知】
函数功能及参数
聚合函数不能出现在where子句中
【应用】
数学函数、字符串函数、日期时间函数、分组合并函数、逻辑函数
** 数学函数 ** :round 四舍五入
Ceil 向上取整
Floor 向下取整数
Mod 取余
Truncate 截断
DECIMAL 保留精度
** 字符串函数 ** :concat 字符串连接
Substr 截取
Instr 返回第一次出现的索引
Upper/lower 返回大小写
** 日期时间函数 ** :now curdate curtime
** Group_concat() ** 返回由属于一组的列值连接组合而成的结果,常与group by一起使用,将分组后的字段值都显示出来。
如:使用group_concat查询不同s_id下所有的f_name信息
Select s_id,group_concat(f_name) from fruits group by s_id;
** Cast() ** 将一个值转换为指定的数据类型