MySQL常用sql语句-----数据表的查询操作
常用的sql语句如下,应对工作足以
1.查询指定字段
select c_id,c_age,c_name from t_student;
select c_id as 编号,c_name as 姓名,c_age 性别 from t_student;
2.去重查询
select distinct c_address from t_student
select distinct c_address,c_name from t_student
3.比较运算符查询
select c_name,c_gender from t_student where c_gender ="女 ";
select c_id ,c_name,c_age,c_gender from t_student where c_age <>18;
4.逻辑运算符查询
select c_name,c_age,c_gender from t_student where c_gender = "女" and c_age <20;
select c_name,c_age from t_student where c_age =18 or 20; # 有问题.会产生注入问题
select c_name ,c_age from t_student where not c_age = 18; # not一般用在非空的地方
5.模糊查询
like
%: 表示任意多个字符
_: 表示任意一个字符
select c_id,c_name from t_student where c_name like "孙";
select c_id,c_name from t_student where c_name like "孙_";
select c_id,c_name from t_student where c_name like "%三%";
6.范围查询
in:非连续 / between:连续
select c_id,c_name from t_student where c_id in (1,5,8,23,7,12,100000);
select c_name,c_age from t_student where c_age between 18 and 20; # 包括18和20
7.判空
select c_name,c_age from t_student where c_age is Null;
select c_name,c_age from t_student where c_age is not Null;
8.查询结果排序 order by
select c_name ,c_id,c_age from t_student order by c_age; # 默认升序
select c_name ,c_id,c_age from t_student where c_gender = "女" order by c_age desc; # 降序
9.分页查询
select c_id ,c_name from t_student limit 10,10; # 从11开始 20结束
select c_id ,c_name from t_student limit 30,10; # 从31开始 40结束
-- 每页显示2个,第3个页面
select * from students limit 4,2;
-- 每页显示m个,第n个页面
select * from students limit m(n-1),m;
10.聚合函数 # 很少单独用,一般结合分组一起用
select sum(c_age) from t_student;
select sum(c_age),avg(c_age),max(c_age),min(c_age),count(*) from t_stuudent where c_gender = "女"
11.分组:
1. where....group by....having: 先经过where大筛选,再.group by分组,再对分组的结果用having限制查询
2.单分组没有意义,相当于去重,往往结合:group_concat(c_name)使用
3.having中like查询不再适用,只能配合group by 使用
单字段分组:
select c_gender from t_student group by c_gender;
多字段分组: having 对group分组后进行筛选
select c_address,c_gender from t_student group by c_gender,c_address;
select c_address,c_gender,group_concat(c_name) from t_student group by c_gender,c_address having c_gender = "女"; <====>select c_address,c_gender,group_concat(c_name) from t_student where c_gender ="女"group by c_gender,c_address;
例1:mysql> select c_address,c_name from t_student group by c_address,c_name having c_gender = "女";
ERROR 1054 (42S22): Unknown column 'c_gender' in 'having clause'
注意1:having用在group by分组后,但是分组后并没有 c_gender这一字段
12.多表查询
没外键的时候:不会连接c_class_id为空的数据
select s.c_name,c.c_name from t_student as s,t_class as c where s.c_class_id = c.c_id;
1.内连接:on
"""注意:数据库默认为内连接,也可以不写inner join 用,隔开2个表但是连接方式需要用where
但是不能再接where了
即:t_a , t_b where 连接关系; <=====> t_a inner join t_b on 连接关系 [+where]
这里有where=情况下先执行where语句
"""
select s.c_name,c.c_name from t_student s inner join t_class c on s.c_class_id = c.c_id where c_gender = "女";
2.左连接:以左表为基准
select s.c_name ,c.c_name from t_student s left join t_class c on s.c_class_id = c.c_id;
3.右连接
select s.c_name,c.c_name from t_student s right join t_class c on s.c_class_id =c.c_id;
4.适用场景
左A表 右B表
如果 A>B且无包含关系 :right join
如果 A<B且无包含关系 :left join
如果 A>B且有包含关系 :inner join
如果 A<B且有包含关系 :inner join
13.标量子查询
select c_name,c_age from t_student where c_age > (select avg(c_age) from t_student);
13-1列级子查询: 结果为一列 (主查询 where 条件 in )
例:查询所有学生所在班级的班级名称
第一步:抽取关键字:所有学生---->student表, 班级名称---->class表
第二步:在student表中找出所有学生所在的教室id:select c_class_id from t_student
第三步:在class中根据这些教室id找出对应的教室名字(class表中可能不止这几个教室)
select c_name from t_class where c_id in (select c_class_id from t_student);
13-2行级子查询 : 结果为一行 (主查询 where (字段1,2,...) = (行子查询))
例:查找班级里 年龄最大 且 所在班号最小 的学生
第一步:抽取关键字 :年龄最大----->student表 , 所在班号最小的学生--->student表
第二步:选出最大年龄的学生和最小的班号:select max(c_age),min(c_class_id) from t_student
第三步:找出年龄和班号满足条件的学生 :
如果所有学生中年龄最大的在2班,则找回的结果为空
select * from t_student where (c_age,c_class_id) = (select max(c_age),min(c_class_id) from t_student); # (c_age ,c_class_id )中的顺序后后面select语句限制
<======>select * from t_student where (c_age = (select max(c_age) from t_student)) and (c_class_id = (select min(c_class_id) from t_student));
14.自连接查询--省--市--区
在查询数据时,只有一张表,查询时使用自己连接自己。 语法: select * from 表1 inner join 表2 on 表1.列 运算符 表2.列 where 条件;
1.查询一共有多少个省
select count(*) from areas where pid is null;
2.查询山西省的所有城市=====>要用到where 所以要用inner join ..on 语法
第一步:拆分表:省表(字段:aid ,atitle) 市表(字段:aid ,atitle,pid)
第二步:找出省表(p)中的山西省
第三步:分析表可知,省表中的aid = 市表(c)中的cid 即有所属关系,并不是简单的aid = pid
select c.* from areas as c inner join areas as p on c.pid = p.aid where p.atitle ="山西省"; # 必须是p.atitle
3.查询市的名称为“广州市”的所有区县
select qu.* from areas as qu inner join areas as c on c.aid = qu.pid where c.atitle ='广州市';
如果你和我有共同爱好,我们可以加个好友一起交流哈!

MySQL常用sql语句-----数据表的查询操作的更多相关文章
- MySQL常用sql语句-----数据表的增删改操作
常用sql操作如下: 1.查看当前数据库的所有表 show tables; 2.创建表 create table stu(sid int,sname char(20),sage int default ...
- Mysql 常用 SQL 语句集锦
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
- Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
- Mysql常用sql语句(14)- 多表查询
测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...
- mysql 常用 sql 语句 - 快速查询
Mysql 常用 sql 语句 - 快速查询 1.mysql 基础 1.1 mysql 交互 1.1.1 mysql 连接 mysql.exe -hPup ...
- Mysql常用sql语句(19)- in / exists 子查询
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 子查询在我们查询方法中是比较常用的,通过子查询可 ...
- Mysql常用sql语句(21)- regexp 正则表达式查询
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 正则的强大不言而喻,Mysql中也提供了 reg ...
- Mysql常用sql语句(22)- insert 插入数据
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 终于讲完基础的查询语句了...这篇讲的就是插入数 ...
- Mysql常用sql语句(3)- select 查询语句基础使用
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 针对数据表里面的每条记录,select查询语句叫 ...
随机推荐
- 05 (OC) 二叉树 深度优先遍历和广度优先遍历
总结深度优先与广度优先的区别 1.区别 1) 二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列. 2) 深度优先遍历:对每一个可能的分支路径深入到不能再深入 ...
- 一套基于SpringBoot+Vue+Shiro 前后端分离 开发的代码生成器
一.前言 最近花了一个月时间完成了一套基于Spring Boot+Vue+Shiro前后端分离的代码生成器,目前项目代码已基本完成 止步传统CRUD,进阶代码优化: 该项目可根据数据库字段动态生成 c ...
- Nginx 配置Https转发http、 websocket
系统启动Nginx后,报 [emerg] bind() to 0.0.0.0:XXXX failed (13: Permission denied)错误的处理方式,分为两种: 第一种:端口小于1024 ...
- cocos meta 文件git显示
是如果提交meta文件后,并且大家是用git来做版本控制的话,CCC可能会在打开时自动修改meta(即使你是刚从最新版本拉下来的),这个问题的原因是git在windows和linux不同系统间换行符不 ...
- 常用HBase操作
HBase是一个分布式.面向列的数据库,可以用来存储非结构化和半结构化的松散数据,具有高可靠.高性能.面向列.可伸缩的特性.通过行键(RowKey).列族(ColumnFamily).列(Column ...
- Scala Basis
基础 Scala 中数据类型也是 class 7 种数值类型: Byte, Char, Short, Int, Long, Float, and Double Boolean 类型 原始类型与 cla ...
- Scrapy项目 - 实现斗鱼直播网站信息爬取的爬虫设计
要求编写的程序可爬取斗鱼直播网站上的直播信息,如:房间数,直播类别和人气等.熟悉掌握基本的网页和url分析,同时能灵活使用Xmind工具对Python爬虫程序(网络爬虫)流程图进行分析. 一.项目 ...
- 阿里云服务器CentOS6.9安装maven
1.下载maven http://maven.apache.org/download.cgi 2.移动到linux yangyuke用户下(此处由于我设置进入linux的是自定义用户yangyuke, ...
- springboot jpa使用
1.添加pom依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId ...
- C语言I—2019秋作业02
1.[新增内容] 这个作业属于那个课程 C语言程序设计 这个作业要求在哪里 <C语言I-2019秋作业02> 我在这个课程的目标是 这个作业在那个具体方面帮助我实现目标 <实现一些基 ...