目录
查询:
distinct 去重
sql中的不等于:!= 和<>
% 通配符匹配任意多个,_ 匹配一个字符。
between and 带等号
in 关键字:
排序查询 order by
常见函数:
分组函数:
分组函数:
having 关键字用于分组 group by后的删选
连接查询:
1.笛卡尔积:
注:在sql中l外连接包括左连接(left join )和右连接(right join),全外连接(full join),等值连接(inner join)又叫内连接。
基本定义:
left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。
right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。
inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。
full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。
非等值连接:不用值相等去查找,也可能没有相同列。
自连接:同一张表找了两遍,起了别名e用于区分
内连接,外连接实际上都是在笛卡尔积(join)的基础上对记录进行筛选。
等值连接和非等值连接:这两者同时包含在内连接和外连接中,因为内连接和外连接都是需要连接条件的,条件为=则为等值连接,反之为非等值连接。
自然连接:等值连接的一种,使用natural join后面可以不使用on接查询条件,默认会将关联表中的相同字段进行比较,查询出的结果相同的字段会去重(值必须相等)。
内连接:使用inner join和join连接都行,重点是要有查询条件,条件使用on或者where引导查询都行,查询出的结果为两表都匹配的记录。
外连接:分为左外连接,右外连接,要有查询条件,条件只能使用on引导查询。左外连接查询出的结果除了两表都匹配的记录外,还会查询出左表的其余记录,同时右表对应记录置为null,左外连接则相反。
sql 99 语法:
非等值连接:
外连接:
左连接:
交叉连接就是笛卡尔积:
子查询:
标量子查询
列子查询:any是任意一个,即随便哪个都行,all是所有。
等价于:
行子查询:
等价于:
放在select后的子查询:
1。原始方法
三:from 后面的子查询,子查询一般返回一个表
四:放在exists后面的子查询(相关子查询)
exists返回一个布尔值。
分页查询:
联合查询:union
union可以在不同表上使用,这个是优势,局限是查询的内容必须相同。
DML语言:插入,删除,更新
插入:
两种方式对比:
修改语句:
删除语句:
DDL语言:数据定义语言
表的管理:
表的删除:
表的复制:
ddl常见约束:
面试题:主键和唯一的对比:组合是指多个列组合成一个。
外键的特点:为了保证数据一致性,其实是从表必须满足主表的约束。即这一列的类型必须和主表一致或者兼容。
修改表时添加约束:
修改表时删除约束:
标识列:自增长列
数据类型介绍:
小数:
字符型:
char定义后,输入数据的长度固定。
日期型:
TCL语言:事务控制语言
事务:
在commit之前,只是把数据保存到了内存,这时可以rollback取消。
事务的隔离性
不可重复读:一个事物修改了一个字段,在commit之前,被另一个事务读取,commit之后,另一个事务读到的是commit后的字段,这个叫不可重复读。
幻读:一个事务操作过程中,被另一个事务插入数据,导致更新操作实际改变的数据偏多。
串行化之后,会导致其他事务操作被阻塞,所以实现了最高级别隔离。
delete支持回滚,trancate不支持。
视图
举个栗子,领导来某学校视察跳舞,学校临时从每个班抽几个人组建舞蹈班,这个舞蹈班就是视图。领导走了之后就解散了。并不真实存在。领导二次来,就可以直接再用这些同学。普通班就是表。
视图是存储在数据库中的查询的SQL 语句,它主要出于两种原因:安全原因, 视图可以隐藏一些数据,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。这个视图就像一个“窗口”,从中只能看到你想看的数据列。这意味着你可以在这个视图上使用SELECT *,而你看到的将是你在视图定义里给出的那些数据列:
视图的修改:
视图的更新:修改视图的数据,有的能实现原始表更新,有的不能。注意视图的权限。
变量,存储过程和函数,流程控制结构
变量:
会话变量:
自定义变量:
局部变量:
存储过程和函数:
带in模式参数的存储过程:
带out的存储过程:
带inout模式的存储过程:
删除存储过程:
desc是错误的。
函数:
函数的查看和删除:
流程控制结构: