一、数据库概述
基本概念
RDBMS(关系型数据库)和非DBMS对比
RDBMS
实质:
优势:
非DBMS
介绍:
类型:
RDBMS设计规则
表、字段、记录
表之间的关联关系
1、一对一
2、一对多
3、多对多
4、自我引用
二、SELECT使用
1、基本SELECT查询
1.1 SQL分类
1.2 书写规则
1.3 大小写规范
1.4 注释
1.5 导入现有数据库(仅介绍非图形化界面方式)
sourse 文件全路径名
1.6 基本SELECT语句
SELECT......FROM
举例:
列的别名
去除重复行
空值(null)参与运算,结果一定为null
null不等同于0、''、'null'。
着重号
查询常数
举例:
显示表结构
where过滤数据
格式:
where 过滤条件
举例:
2、运算符
2.1 算术运算符
2.2 比较运算符
非符号类型运算符:
空运算符(IS NULL/ISNULL)
TIP:
2.3 逻辑运算符
2.4 位运算符
2.5 运算符优先级(了解)
3、排序与分页
3.1 ORDER BY实现排序
规则
举例:
①如果ORDER BY没有显式指明排序方式的话,默认升序排序。
②可以使用列的别名来排序,不能再where中使用列的别名。
③where在FROM之后,在ORDER BY之前。
二级排序
3.2 LIMIT实现分页
需求:每页显示PageSize条记录,此时显示第PageNo页。
格式:LIMIT 位置偏移量 条目数;
公式:LIMIT (PageNo-1)*PageSize PageSize;
声明顺序:WHERE...ORDER BY...LIMIT
4、多表查询
4.1 等值连接vs非等值连接
等值连接举例:
SELECT a.value1,b.value2
FROM table_a a,table_b b
WHERE a.value_id=b.value_id;
4.2 自连接vs非自连接
4.1中例子皆为非自连接
自连接举例:
4.3 内连接vs外连接
MySQL支持SQL99语法,在SQL99语法中使用JOIN...ON的方式实现多表查询。
但是MySQL不支持满外连接(FULL OUTER JOIN)
4.4 UNION的使用
4.5 使用SQL99实现7种JOIN操作
4.6 SQL99语法新特性
自然连接
USING连接
5、单行函数(常用、了解使用)
5.1 数值函数
基本函数
三角函数
角度与弧度互换函数
指数与对数
进制转换
5.2 字符串类型函数
5.3 日期时间类型函数
获取日期、时间
日期与时间戳转换
获取月份、天数、星期数等函数
日期操作函数
时间和秒钟转换的函数
计算日期和时间的函数
日期的格式化与解析
上述函数怎么用需要自己查询
5.4 流程控制函数
5.5 加密与解密函数
6、聚合函数
6.1 常用聚合函数
分别是求平均值、总和、最大值、最小值、计数(不包含null值)。
6.2 GROUP BY的使用
举例使用
使用多个列进行分组
tip:
WITH ROLLUP
6.3 HAVING的使用
使用上上图的例子
WHERE和HAVING的对比
6.4 SELECT的执行过程
查询结构
执行顺序
底层原理
7、子查询
7.1 单行子查询
操作符:
举例:
having有关:
case语句中子查询:
空值:
非法使用子查询:
7.2 多行子查询
操作符:
示例:
多行子查询在having和空值问题上与单行子查询类似
7.3 相关子查询
执行流程:
示例:
关键字EXSIT和NOT EXSIT:
相关更新:
相关删除:
三、DDL、DML、DCL
1、创建管理表
标识符命名规则
1.1 创建和管理数据库
创建数据库:
使用数据库:
修改数据库:
删除数据库:
1.2 创建表
数据类型:
其中常用介绍:
创建表:
举例练习:
练习2中WHERE 1=2;也可以实现,只要筛选条件false就只能复制表头。
1.3 修改表
添加列:
修改列:
删除列:
重命名列:
重命名表:
删除表:
回滚类似撤销
清空表:
1.4 DCL中COMMIT和ROLLBACK
对比TRUNCATE TABLE和DELETE FROM:
DDL和DML说明:
2、数据处理之增删改
2.1 插入数据
方式一:VALUE
情况1:插入一整条记录
方式二:将查询结果插入表中
举例:
2.2 更新数据
省略WHERE,表中所有数据都将更新。
2.3 删除数据
2.4 MySQL新特性:计算列
3、MySQL数据类型(详细)
前期在三、1、1.2创建表中提过
常见数据类型属性:
3.1 整数类型
介绍:
可选属性:
适用场景:
3.2 浮点类型
介绍:
精度讲解:
精度误差:
3.3 定点数类型
3.4 位类型:BIT
3.5 日期时间类型
YEAR:
DATE:
TIME:
DATETIME:
TIMESTAMP:
TIMESTAMP和DATETIME的区别:
3.6 文本字符串类型
CHAR和VARCHAR类型:
TEXT类型:
ENUM类型:
SET类型:
3.7 二进制字符串类型
3.8 JSON类型
3.9 空间类型
4、约束
4.1 约束介绍
为什么需要约束?
什么是约束?
约束分类:
4.2 非空约束
作用:
关键字:NOT NULL
特点:
添加非空约束:
①建表时:
②建表后:
删除非空约束:
4.3 唯一性约束
作用:
关键字:UNIQUE
特点:
添加唯一约束:
①建表前:
②建表后指定唯一约束:
关于复合唯一约束:
删除唯一约束:
4.4 PRIMARY约束(主键约束)
作用:用来唯一标识表中的一行记录。
关键字:primary key
特点:
添加主键约束:
①建表时指定主键约束:
②建表后添加主键约束:
复合主键:
删除主键约束:
4.5 自增列:AUTO_INCREMENT(关键字)
作用:某个字段的值自增。
特点和要求:
指定自增约束:
①建表时:
②建表后:
删除自增约束:
4.6 FOREIGN KEY约束(外键约束)
关键字:FOREIGN KEY
主表从表:
特点:
添加外键约束:
①建表时:
②建表后:
约束等级:
删除外键约束:
4.7 检查约束(CHECK)
作用:检查某个字段的值是否符合xx要求,一般指的是值的范围。
关键字:CHECK
举例:
4.8 默认值约束(DEFAULT)
作用:
关键字:DEFAULT
给字段添加默认值:
①建表时:
②建表后:
删除默认值:
四、其他数据库对象
常见的其他数据库对象:
1、视图
1.1 概述
1.2 创建视图
创建单表视图:
创建多表联合视图:
基于视图创建视图:
1.3 查看视图
1.4 更新视图数据
一般情况:
不可更新视图:
1.5 修改视图
1.6 删除视图
2、存储过程与函数
2.1 存储过程概述
存储过程与视图、函数的对比:
分类:
2.2 创建存储过程
2.3 调用存储过程
2.4 存储函数的使用
调用存储函数:
对比存储函数和存储过程:
2.5 存储过程和函数的查看、修改、删除
查看:
修改:
删除:
2.6 存储过程优缺点
优点:
缺点:
3、变量、流程控制与游标
3.1 变量
系统变量
分类:
查看系统变量:
修改系统变量的值:
用户变量
分类:
定义会话用户变量:
查看会话用户变量的值:
查看某个未声明变量时将得到null值。
局部变量:
对比会话用户变量和局部变量:
3.2 定义条件与处理程序
定义条件
处理程序
定义处理程序几种方式:
3.3 流程控制
分支结构
①IF
②CASE
循环结构
①LOOP
②WHILE
③REPEAT
跳转语句
①LEAVE
②ITERATE
3.4 游标
使用步骤:
①声明游标:
②打开游标:
③使用游标(从游标中获取数据):
④关闭游标:
总结:
tip:
4、触发器
4.1 概述
4.2 触发器的创建
4.3 查看、删除触发器
4.4 触发器优缺点
优点:
①确保数据完整性
②帮助记录操作日志
③在操作数据前对数据进行合法性检查
缺点:
①可读性差
②相关数据变更可能导致触发器出错
五、MySQL8Q新特性(部分)
1、窗口函数
适用场景:在需要用到分组统计的结果对每一条记录进行计算的场景下,使用窗口函数更好。
1.1 分类
1.2 语法结构
2、公用表表达式
2.1 普通公用表表达式
2.2 递归公用表表达式
小结: