MySQL-9复杂操作-查询

1.数据查询

基本语法select 字段列表/* from 表名 [where 条件];

完整语法select [select 选项] 字段列表 [字段别名] / * from 数据源 [where 条件子句][group by 子句] [having 子句] [order by 子句] [limit 子句];

--1.select选项 :select 对产出来的结果的处理方式

        all(默认),保留所有的结果 select * from 表名 === select all * from 表名

        destinct,去重 查出来的结果,将重复给去除(只发生在所有字段都相同的情况下)

distinct 的使用

2.字段别名 :当数据进行查询时,有时候名字并不一定满足需求(多表查询是,会有同名字段),需要对字段名进行重命名 :既别名

--1.as  :字段名 as 别名

--2.字段名 别名

添加查询时添加别名的两种方式

3.数据源

数据源即为 数据来源,关系行数据库的来源都是数据表:本质上只要保证数据类似二维表,都可以作为数据源

数据源 分为多种,既单表数据源、多表数据源、查询语句

--1.单表数据源:select * from 表名

--2.多表数据源:select * from 表名1,表名2,表名3...........;

表1 my_default 7条数据
表2 king_class 2条数据

select * from 表1,表2;

多表数据源 14条数据

从一张表中 取出一条记录,去另外一张表中匹配所有记录,且全部保留:(记录数和字段数),将这种结果 称之为笛卡尔集 既一种交叉连接 

笛卡尔集一般并没有什么卵用,耗费相当多资源 ,需要尽量避免出现笛卡尔集

--3.子查询 数据的来源是一条查询语句(查询语句的结果是一张二维表)

select * from (select 语句) as 表名 ; 相当于将括号内select 语句 的查询结果起一个别名(as 表名)

子查询1
子查询2

4.where 子句 

where 子句用来判断数据,筛选数据

where 子句返回结果 0或者1 false or true

            基本运算符:> ,< ,>= 等等

            逻辑运算符:&&(and),|| (or) ,! (not)

            模糊查询 :like , %表示任意多个字符 ,_表示一个任意字符

            select * from students where name like '黄%'  (表示查询姓黄的学生)

            select * from students where name like '黄_'  (查询姓黄并且名字是一个字的学生)

            select * from students where name like “黄%” or name like "%静" (查询姓黄或叫静的学生)

            范围查询:between .......and..........(在...区间)(当存在多个and 时 ,将优先匹配between and),in/not in  


where 是唯一一个直接从磁盘获取数据的时候就开始判断的条件,从磁盘取出一条记录,则开始进行where 判断,判断结果成立则加载进内存,如果不成立则放弃(从源头保证尽可能避免的无效数据占用内存);而其他的判断,都是后期对内存进行的判断

--1.集合 in( )

利用多个或找出符合条件的数据


利用集合in ( ) 完成查找

--2.between A and B (在 A 到 B 之间)

其中 between 本身是闭区间 且 左边的值必须小于右边的值

在某范围区间 的实现

5.Group by 子句 (根据某个字段进行分组,相同的放一组,不同的放不同的组)

Group by 只会将同类型数据进行分组,且只展示该组第一个数据 

在新MySQL 中 group by 字段 必须被 select 约束 

按照字段分组,表示此字段相同的数据会被放在一个组中

分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中

可以对分组后的数据进行统计,做聚合运算

--1.基础语法

select 列1,列2,聚合.......from 表名 group by 列1,列2,列3.。。

select male as male ,count(*) from my_stu group by male;
基础使用1
基础使用2
group by 约束字段 male,age 并未被 select 严格声明 导致报错
同理报错2

--2.having  对分组的结果进行筛选

select male as male,count(*) from my_stu group by male having male = 0;
select male as male,count(*) from my_stu group by having count(*)>2;
约束别名


where 和 having 的区别

where 对 from 后面指定的表进行筛选 ,属于筛选原始数据

having 对group by  的结果进行筛选


--3.分组的意义是为了统计数据(按照分组字段 进行数据统计)

SQL 提供了一系列的统计函数:

count () :统计分组后的记录数

            里面可以使用两种参数: * 代表统计记录,字段名代表统计对应的字段 (null  不进行统计)

select count(*) from my_stu;

max():统计最大值

min ():最小值

avg():平均值

sum():和

使用示例1
使用示例2

--4.分组的排序

group by 字段 [asc/desc] 分组 会自动排序,根据分组字段, 默认升序asc ,需要降序desc需要声明出

对分组排序的结果 合并之后的整体结果进行排序  而不是对于分组内部的数据进行排序

--5. 多字段分组 ,先班级,后男女

当前表所有字段
其中主键id为逻辑主键 子增长

查询每个班级 对应性别下有多少人 先按照班级排序 后按照性别排序

select class_id,male,count(*) from my_stu group by class_id,male;

以班级为条件 查询性别 总数,并以先班级后性别排序
以班级id为条件查询每班性别总数,并以先性别 后 班级排序

--6.group_concat() 函数

可以对分组的结果中某个字段进行 字符串链接(保留该组所有的某个字段)

group_concat() 函数的使用
group_concat 其他两种使用方法

--7.回溯统计 with rollup

任何一个分组后 都会有一个小组 , 最后都需要向上级分组进行一次汇报统计:(根据当前分组的字段)

这就是回溯统计:回溯统计时,会将分组字段至空

单字段分组 回溯统计  

既 查询每一个班级,然后按照班级排序 完成后进行一次回溯

单字段分组 回溯统计 

多字段分组 回溯统计

既 先按照班级分组 班级又按照性别分组 ------->既性别会按照班级统计一次( x3 ),而班级会单独统计一次,

既:第一层分组 会有一次回溯 ,第二次分组 需要考虑 上一层分组的组数  。。。。。。。。。。直到最后一层分组

多字段分组 回溯统计

6.order by 子句

order by 排序 ,根据某个字段进行升序或者降序排序,依赖校对集(大小写等)

基本语法:

order by 字段1 [asc/desc],字段2[asc/desc].............. 其中 asc 是升序(默认操作) desc是降序

order by 基本使用

多字段排序 :先根据某个字段进行排序,然后在排序好的内部,再按照某个数据再进行一次排序

多字段排序,先按照class_id 升序排列 再按照 male 降序排列 
都按照升序排列
班级降序排列, male 升序排列

7.limit子句 

是一种限制结果的子句:可以用来限制数量 多用于分页

way1:只用来限制数据量 limit 数据量

select * from my_stu limit 2;

way2:限制起始位置 & 限制长度 多用于分页 既从指定的位置开始 向后找多少条数据

select * from my_stu limit 2,2;

两个参数分别对应偏移量和长度

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容