数据库快速复习【基础篇】
SQL分类

1.DDL

2.DML

3.DQL
3.1 聚合函数

3.2 分组查询
不符和条件也是不会参与分组操作的

例子
这里的having就把员工数量小于3的工作弟弟那个过滤了

3.3 排序查询

示例

3.4 分页查询
起始索引不是页数,是你要查询的第多少页的第一行

示例

3.5 执行顺序

小结

4.DCL
4.1 如果在“@”后加“ '%' ”,就说明任意主机可以访问该数据库

4.3


函数与约束
1.字符串函数

示例
这里是对数据库进行修改,所以用的是update
如果 这里workno 是 int类型则会不起作用,数据库会自动忽略左侧的 0,需要是string类型才能成功

2.数值函数

示例


生成的随机数在0到1之间,所以要用round进行小数精度为0的四舍五入
但是!若随机生成的小数第一位还为0,那么在*10000000后则会少一位数字,所以这里要用哪个lpad或者rpad在不满六位数的时候补全
3.日期函数
interval n.间歇;音程;休息时间;(其他事情)穿插出现的间隙

示例
计算员工入职时长并且倒序排序
这里datediff理解不要错误,第一个数字是被减数,第二个数字是减数(大在前,小在后)
别名不需要加单引号,直接写就行,order by排序别忘了写上根据什么排序

4.日期函数

示例

when是可以并列的,when后也可以是一个范围

5.约束

示例
创建表格式:字段名+字段类型+约束条件+[comment注释]


用图形化界面设置主键更方便,通过“设计表”的“外键”来添加
外键删除更新行为

多表关系


为了限定这是一对一,所以要把外键设置成UNIQUE(不允许重复值)

连接
出现笛卡尔积的情况是需要用where来限定显示两张表某条属性相等


1.内连接

2.外连接

示例

3.自连接
相当于自查询关联,managerid是它们本表的领导id
在自连接查询中,必须给表起别名


示例
这里把emp表分成两个一模一样的a,b表


多表查询
1.联合查询

2.子查询(嵌套查询)

2.1 标量子查询
返回结果单行单列

2.2 列子查询

示例
查询所有财务部人员工资出来的是每个人员的一列工资

2.3 行子查询

示例
查询了张无忌的几个信息,出来了一行

2.4 表子查询
返回结果是多行多列
一定要注意sql中“and”是同时满足两个条件的意思,而“or”是“要么这个,要么那个”,也就是两个都要
既然是多行,就不能用等于号,就用“in”了
示例

事务


并发事务
不可重复读主要是读过的数值变了,而幻读是出现了新的满足条件的行。

隔离等级依次升高 对钩代表的是可以解决的问题

