- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
昨日回顾
高级操作
复制表结构
create table 表A like 表B;
复制表结构,包含列属性
复制表中的数据
create table 表A select *或字段列表 from 表B;
复制表中的数据,也有结构,但没有列属性
蠕虫复制
insert into 表名 select *或字段列表 from 表名;
限制操作:
limit n;用于限制更新、限制删除、限制查询
查询
select 【all|distinct】 *|字段列表|字段名 【as】 别名 from 数据源 【where】【group by】【having】【order by】【limit】
all 默认显示所有的数据
distinct 在显示的时候去掉重复数据
数据源:
单表数据源
多表数据源 会产生迪卡尔积
字段数:两个表的字段相加
记录数:两个表的字段数相乘
子查询数据源
from后是一个select查询语句得到的一个结果集,需要使用括号括起来,并且赋予一个别名。
【where】
= 专用于比较null
本质:将数据从磁盘中读取到内存,一条条先读取到内存,再进行判断,判断成功放到结果集中。
【group by】
根据字段进行分组。分组并不是group by真正的目的,主要对分组后的小数据区域再进行统计。
统计函数
count(*或字段名);
* 表示统计记录数
字段名 表示根据字段名进行统计记录数,如果某一条记录中的被统计的字段值为null,则不统计。
max(); 统计最大值
min(); 统计最小值
sum(); 求和
avg(); 求平均值
多字段分组
语法:
group by 字段1,字段2....
先使用字段1进行分组,再使用字段2,在上一级分组的结果中每一组,再进行分组。出现具层级的分组。如果不使用with rollup,那么所有的统计函数,都是对最小的组进行统计。
with rollup使用汇总,多字段分组产生和层级结构的分组,由里向外再对最小组之上的,每一个层级的组,再进行与统计函数相同的操作。
【having】
对分组后的结果再进行筛选。
where与having都是进行筛选,只是筛选的时机不同。
having可以使用统计函数作为条件,where不可以使用统计函数作为条件。
外键
创建:
方式1:在创建表时使用foreign key(字段名) references 表名(主键);
方式2:通过修改表结构add foreign key(字段名) references 表名(主键);
删除:
alter table 表名 drop foreign key 外键名;
如果查看外键名:show create table 表名;
外键的约束:
B表中的某一个字段是A表的主键字段。
A表为主表,B表为从表:
主表被从表约束。
1、A表本身不能随意 被删除
2、A表中的记录的变动,不能随意删除或更新数据,言外之意有一定的约束
置空约束
当主表的记录删除时,那么从表中的记录中的外键字段调用为null
语法:
on delete set null
级联约束
当主表的记录更新时,那么从表中的记录中的外键字段同步更新。
从表被主表约束
1、从表的数据:从表中的外键字段的值,必须是,主表中的主键字段中的某一个值。
子查询
一个select中还包含另一个select,其中最里面的select语句称之为子查询
根据select出现的位置可以将子查询分为以下几类:
from子查询
where子查询
exists子查询
从select返回的结果,那么子查询又可以分为:
标量子查询
查询的结果只有一个值。
示例:
需求:查询zhangsan所在的教室
思路:
首先,先写最终想得到查询==》教室
select room from class ......
再行,条件==》查询zhangsan
where id =(select c_id from stu where s_name=zhangsan)
列子查询
查询得到的结果,是一个一列多行的数据。
需求:
查询班级为php的所有的学生
select * from stu where c_id =(select id from class where c_name=php);
查询班级为php和ios的所有的学生
select * from stu where c_id in (select id from class where c_name = php or c_name=ios);
示例:
行子查询
查询的结果是一行多列。
需求:查询学生表中,sex为1,age为最大的记录
select * from stu where
您可能关注的文档
最近下载
- 时间域激电中梯、测深作业指导书.pdf VIP
- 2025年水利工程监理工作报告.pdf VIP
- 激电中梯、激电测深工作概要.pptx VIP
- 药物分析与常用组学技术在药学服务中的应用题库答案-2025年华医网继续教育.docx VIP
- 2025年杭州临安区公开招聘专职社区工作者和两新专职党务工作者35人笔试参考题库附答案解析.docx VIP
- 蒸馏法海水淡化阻垢剂性能评价方法 动态模拟试验法 编制说明.pdf VIP
- 无障碍设计PPT课件.ppt VIP
- CTD格式申报资料(原料药)新.pdf VIP
- 中小学心理健康教育指导纲要考试试题及答案.docx VIP
- 《无障碍设计原则》课件.ppt VIP
文档评论(0)