14 外键联合查询连接查询子查询视图理论版Word格式文档下载.docx
- 文档编号:20714492
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:8
- 大小:128.52KB
14 外键联合查询连接查询子查询视图理论版Word格式文档下载.docx
《14 外键联合查询连接查询子查询视图理论版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《14 外键联合查询连接查询子查询视图理论版Word格式文档下载.docx(8页珍藏版)》请在冰豆网上搜索。
select选项(all和distinct),字段别名,数据源(单表,多表和子查询[别名]),五子句(where,groupby[count,max,min,sum,avg],having,orderby,limit)
联合查询
什么是联合查询?
联合查询:
将多个查询的结果进行合并处理:
只有记录数增加,字段数不增加.
联合查询的条件:
多个查询查到的结果,字段数必须一致.
联合查询基本语法
联合查询意义
需求:
所有的学生按照班级进行分类:
2班之前的所有学生按照年龄升序排序;
3班以后的学生按照年龄降序排序.
Union意义
1.能够对于从同一张表中查询的不同结果(排序)进行合并处理(解决需求问题)
2.在大型数据库设计中,通常会因为数据量太大将表进行分割:
分到不同的表中进行保存:
最终查询结果的时候需要一次性查询所有表中保存的结果.
3.缺点:
若是不同的表,不同字段混合在一起了,容易混乱
联合查询排序
联合查询与orderby要共同使用:
必须满足一下条件
1.为了保证语法没有错误:
系统无法区分orderby是对当前sql语句排序还是对整个union的结果进行排序:
对select语句使用括号()
2.Union想要使用orderby实现排序:
必须搭配limit:
每一条SQL语句中都应该有limit
存储引擎
1.什么是存储引擎?
数据在数据库中存储的方式.Mysql有多种存储方式:
5种
Innodb,myisam,memory,BDB和archive:
其中myisam和innodb是免费的,其他三个是收费的
在mysql5以前(5.4),mysql的默认存储引擎是myisam;
5.5以后,默认的存储引擎是innodb
数据表选择存储引擎的时候,大体使用默认的即可.
Myisam与innodb的典型区别
1.Myisam是独立存储数据和索引:
只要产生一个myisam存储引擎的表:
会出现三个独立文件(结构文件,数据文件,索引文件),而innodb只有一个文件
2.Innodb只有一个结构文件:
所有innodb的表的数据(索引)都存储在ibdata1文件中
外键
什么是外键?
外键:
外面的键,如果一张表中有一个字段与另外一张表的主键有关(建立关系),建立的关系就叫做外键.
foreignkey
创建外键的前提
外键所指向的表必须先创建.
主表:
被其他表所指向的表
从表:
如果当前表指向另外表的主键(从表)
创建外键的方法
方法一:
在创建表的时候就指定外键(从表:
学生表)
方法二:
在创建表之后增加外键(指定)
外键约束(默认)
1.子表(从表)插入数据的时候,不能插入父表中不存在的主键,但可以删除.
2.父表不能删除(更新)一个主键字段(被子表引用),主表不能删除或者更新一个被从表引用的记录
Ps:
:
所谓的不能更新是指外键关联的字段不能更新:
其他都可以更新
删除外键
外键是不能被修改的,但是可以被删除
外键条件
1.只有innodb存储引擎支持外键
2.外键字段(c_id)必须与父表主键字段(id)的数据类型要严格一致
3.如果是后期增加外键:
表中的数据必须严格符合外键的约束条件
外键约束(自定义)
(1)严格约束:
district,父表和子表都不允许随意操作
(2)制空约束:
setnull,父表如果删除自己的记录,但是记录又被子表引用(子表的外键字段就置空)(前提是子表的外键字段必须允许为空:
如果子表字段不允许为空(外键创建失败)
)
(3)级联约束:
cascade,父表如果删除或者更新自己的记录,那么子表相关记录的外键一起改变
PHP很少使用外键:
外键增加了php对数据的维护性.
连接查询joinon
什么是连接查询?
连接(Join)查询:
将两张表(多张),从字段上进行连接(字段数增加).
为什么要连接查询?
大多数实体都不是单独存在,实体与实体之间都有关系.导致在数据进行查看的时候,通常需要从多张表中去获取数据:
就需要使用连接查询.
连接查询分类
内连接,外连接,自然连接和交叉连接.
Ø
内连接
什么是内连接
按照条件拿着左表的记录去右表中匹配,符合条件的就保存下来
内连接原理
从左表中取出记录去右边挨个匹配,匹配成功就保留,失败就放弃;
内连接的连接条件
Where、on
可以使用where而不是使用on:
但是效率没有on高:
where每一条都匹配,然后判断:
on先判断后匹配;
外连接
什么是外连接
左表作为主表匹配右表,显示的行数以左表为准,匹配不到右表的就添加null制空
外连接类型
如果选择左表为主表:
左外连接(左连接)
如果选择右表为主表:
右外连接(右连接)
不管是左连接还是右连接:
都是左表的字段出现在前面,以左表的字段数为准,右表的字段出现在后面.左边的不足的字段会补null
内连接和外连接的区别
内连接只保存显示满足条件的
外连接以左表数量为准显示个数
交叉连接
交叉连接的结果是笛卡尔积:
多表查询的时候的结果是笛卡尔积
没有指定连接条件的内连接就是交叉连接
交叉连接:
crossjoin:
一张表的每一条记录都与另外一张表的每一条进行匹配:
每次匹配都成功.
记录数:
表1记录数*表2记录数
字段数:
表1字段数+表2字段数
交叉连接没有意义:
存在的意义是为了保证连接结构的完整性.
自然连接natural
自然连接:
系统自动的寻找条件进行匹配,系统只会认为名字相同的字段就是连接条件.如果有多个相同的条件,所有相同的字段都用来做条件.
自然连接类型
自然内连接和自然外连接
子查询
什么是子查询?
子查询:
在一个查询语句(select)里面还有一个select语句,里面的select语句就称之为子查询.
子查询分类?
根据位置进行分类
根据子查询在select语句中出现的位置进行判断
From子查询:
子查询语句接from关键字之后
Where子查询:
子查询语句接where之后
Exists子查询:
子查询出现在exists之后(exists出现在where之后:
exists返回的结果:
0和1)
根据子查询查到的结果进行分类:
标量子查询:
子查询得到的结果只有一行一列
列子查询:
子查询得到结果是一列多行
行子查询:
子查询的二级果通常是一行多列(多行):
前仨都属于where子查询
表子查询:
子查询的结果就是多行多列(属于from子查询)
标量子查询
列子查询
行子查询
表子查询
Exists子查询
Exists是一种专门用于条件判断的子查询
视图
什么是视图?
视图:
view,是一个能够显示数据,保存结构的虚拟表(只有结构不存数据)
创建视图
基本语法
Createview视图名字asselect语句;
createviewv1asselect*fromstu_student;
查看视图
视图是一种结构:
查看结构(凡是查看表的语句都可以查看视图:
showtables/showcreatetable/desc)
修改视图
视图可以修改:
可以修改视图的组成语句(select)
Alterview视图名字asselect语句;
删除视图
Dropview视图名字;
视图结构文件会从数据库对应的文件夹下被删除
视图数据操作条件
视图的确可以进行数据写操作:
但是有条件
1.多表视图是不能新增和删除数据:
(1)创建多表视图的时候,不能有同名字段
(2)创建合理的多表视图
(3)多表示视图不能新增数据
(4)多表视图不能删除数据
(5)多表视图可以更新数据
2.单表视图可以进行数据写操作:
单表视图可以删除和新增
(1)删除数据
(2)新增数据:
视图中必须包含基表中所有不能为空的字段:
视图对基表进行数据插入的时候,如果视图中不包含基表中的对应字段,会插入null
视图算法
任何一个视图其实是有算法:
算法分为三类
1.Undefined:
未定义,这是系统默认的算法:
是一种让系统自动选择算法的算法
2.Merge:
合并算法:
将调用视图的select语句与视图内部的select语句先进行合并,后执行(执行一次:
效率高:
系统会经常选择merge)
3.Temptable:
临时表算法:
将视图内部的select语句先执行,当做外部select语句的数据源(执行两次),指定算法为temptable:
临时表,视图优先执行(先orderby,后groupby)
视图算法选择
大部分的时候直接忽略(使用默认的),如果在视图中和调用视图查询的过程中,会出现五子句的顺序问题:
建议在创建视图的时候指定算法为temptable.
视图意义
1.视图能够将复杂的select语句进行结构维护,使得查询变得简单(简化SQL)
2.视图通常是对外提供数据的时候才需要
(1)外部用户不一定需要基表中的所有字段:
为了保护基表的隐私,通常使用视图(安全性)
(2)视图可以在不修改基表的情况下,对外提供不同形式的数据:
增加用户友好性(每个公司都是单独一张属于自己的视图,不需要共享)
(3)可以根据不同视图进行权限控制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 14 外键联合查询连接查询子查询视图理论版 联合 查询 连接 视图 理论