设为首页 收藏本站
查看: 677|回复: 0

[经验分享] MySQL 查询语句select讲解与练习

[复制链接]

尚未签到

发表于 2018-10-7 09:45:20 | 显示全部楼层 |阅读模式
  select语句执行流程:
  START------>1.FROM
  ------>2.WHERE(选择,合适的行)
  ------>3.GROUP BY(分组)
  ------>4.HAVING(对分组进行过滤)
  ------>5.ORDER BY(排序)
  ------>6.SELECT(投影,合适的字段)
  ------>7.LIMIT ------>end result
  select单表查询:
  关键字:
DISTINCT        #数据去重  
     例:select DISTINCT gender from students;
  
VARIABLES       #mysql服务器自身内置变量
  
     例:select variables like 'query%';
  
AS              #显示时使用别名
  
     例:select name as  stuname  from  students;
  
IN
  
     例:select name,age from students where age in  (18,19,25);
  
IS NULL         #取值为空,IS NOT NULL: 取值不为空
  
like            #%任意长度任意字符  _任意单个字符
  
RLIKE           #使用正则表达式
  
GROUP           #根据指定的条件把查询结果进行分组以用于做聚合运算
  
内置函数:avg() , max() , min() , count() , sum()
  
order  by       #根据指定字段对查询结果进行排序
  
                  升序:ASC(默认)   降序:DESC
  
LIMIT [[offset,]row_count] #对查询的结果进行输出行数数量的限制
  
对查询结果中的数据请求施加‘锁’:
  
       FOR  UPDATE :写锁,独占锁,排他锁
  
       LOCK IN SHARE MODE :读锁,共享锁
  例:查看男女同学的平均年龄
       select avg(age),gender  from  students  group  by  gender ;  例:查看平均年龄大于20的性别
       select avg(age),gender as '年龄' from  students  group  by  gender having 年龄>20;  例:查看姓名,年龄以年龄倒序排序
       select name,age from students order  by age desc;  例:年龄从小到大查看排名11至20的同学的姓名
select name,age from students order  by age limit 10,10 ;  练习题:
  1. 在students表中,年龄大于25,且为男性的同学的姓名和年龄
select name,age  from students  where gender='m' and age>25;  2. 以classID为分组依据,显示每组的平均年龄
select  avg(age),classID from students where classID is not null group by classID;  3. 显示第二题中平均年龄大于30的分组及平均年龄
select  avg(age),classID from students  group by classID  having avg(age)>30;  4. 显示名字以L开头的同学的相关信息
select * from students  where name like  'L%';  5. 显示teacherID非空的同学的相关信息
select * from students  where teacherID is not null;  6. 以年龄排序后显示年龄最大的前10位同学的信息
select * from students  order by  age DESC limit 10;  7. 查询年龄大于等于20岁,小于等于25岁的同学的信息,用三种方法
select * from students where age>=20 and age(select avg(age) from students);  (2)用在IN中的子查询:子查询应该单键查询并返回一个或多个值构成列表
  例:查找老师年龄和同学年龄相等的
select  name,age  from students where age  in (select age from teachers);  (3)用于EXISTS
  用于from子句中的子查询:
  例查找平均年龄是30的班级:
select s.aage,s.classID from (select avg(age) as aage,classID from students where classID is not null group by classID) as s where s.aage=30;  联合查询:把两个表查询的结果合并成一个。以前面表的字段为准,后面的表填充内容。
  例:
select name,age  from  students  UNION select  name,age  from teachers;


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-614201-1-1.html 上篇帖子: MySQL下的表分区简述 下篇帖子: MySQL日志简介
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表