查询
全部查询
类别 | 详细解示 |
---|---|
基本语法 | select * from 表; |
示例 | select * from money; |
示例说明 | 查询money表中所有字段中的所有结果 |
指定查询
类别 | 详细解示 |
---|---|
基本语法 | select 字段 from 表; |
示例 | select id,username, balance from money; |
示例说明 | 查询money表中id,username, balance字段中的所有结果 |
不重复查询
类别 | 详细解示 |
---|---|
基本语法 | select distinct 字段 from 表; |
示例 | select distinct age from money; |
示例说明 | 查询money表中age唯一的所有结果 |
条件查询
类别 | 详细解示 |
---|---|
基本语法 | select 字段 from 表 where where条件; |
示例 | select * from money where age = 29; |
示例说明 | 查询money表中年龄为29的所有结果 |
比较运算符和逻辑运算符都可以使用在条件查询。注意:逻辑比较等于为=,而不是==,字符表达为单引号。
示例 | select * from money where name = '小磊'; |
示例说明 | 查询money表中name为小磊的所有结果 |
模糊查询
小% 表示以“小”字符开头,而后面可以是任意字符。同样, %小 表示以“小”结尾,而 %小%则表示包含“小”这个字符。还有可以使用not like表示否定。
统计类函数:
函数 | 说明 |
---|---|
sum | 求和 |
count | 统计总数 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
使用方法如下
类别 | 详细解示 |
---|---|
基本语法 | select 函数(字段) from 表 |
示例 | select count(id) from money |
示例说明 | 查询money表的id总数 |
子查询
有时候,当我们查询的时候,需要的条件是另外一个select语句的结果,这时就需要使用子查询。用于子查询的关键字包括in、not in、=、!=、exists、not exists等。
类别 | 详细解示 |
---|---|
基本语法 | select 字段 from 表 where 字段 in(条件) |
示例1 | select * from money where id in (1,3,4); |
示例1说明 | 按照id 查询指定用户 |
示例2 | select * from money where id in (select id from order_goods); |
示例2说明 | 将购买过商品的用户信息显示出来 |
结果集排序
类别 | 详细解示 |
---|---|
基本语法 | select 字段 from 表 order by 字段 排序关键词 |
示例 | select id,username, balance from money order by balance desc; |
示例说明 | 查询money表中的id,username,balance字段,按照余额进行降序排序 |
排序用到的关键词:
关键词 | 说明 |
---|---|
asc | 升序排列,从小到大(默认) |
desc | 降序排列,从大到小 |
在 select 出来之后的结果集中排序使用 order by,desc 表示按照字段进行降序排列,asc 表示升序排列,如果不写关键字默认升序排列。
多字段排序
order by 后面可以跟多个不同的字段排序,并且排序字段的不同结果集的顺序也不同,如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序。
类别 | 详细解示 | |
---|---|---|
基本语法 | select 字段 from 表 order by 字段1 排序关键词,… …字段n desc | asc; |
示例 | select id,username, balance from money order by balance desc,age asc; | |
示例说明 | 查询money表中的id,username,balance字段,按照余额进行降序排序,若余额全都一样,则再使用age进行升序排序 |
注:如果第一个字段已经将结果给排好。第二个字段排序字段不生效。本例中,第二个字段无效。
字段取别名
类别 | 详细解示 |
---|---|
基本语法 | select 字段 as 别名 from 表 |
示例 | select uersname as name from money; |
示例说明 | 查询 money表中的uersname并改为name显示 |
可省略,但是建议写上as,增加可读性。
分组 group by
我们拿金额表里面的省份进行分组数据,分组数据后你会发现。有相同的省份会去掉。即,一个省份为一个组。
类别 | 详细解示 |
---|---|
基本语法 | select * from 表 group by 字段 |
示例 | select * from money group by province; |
示例说明 | 按照province进行分组 |
如果要对两个及以上数据分组,语法为select * from 表 group by 字段,字段,……
结果再过滤having
having子句与where有相似之处但也有区别,都是设定条件的语句。
having 是筛选组 而where是筛选记录。
类别 | 详细解示 |
---|---|
基本语法 | select * from 表 group by 字段 having 条件 |
示例 | select count(province) as result ,province from money group by province having result >2; |
示例说明 | 对地区分组并统计总数,将分组结果中大于2的分组地区显示出来 |
内连接
inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。
基本语法一:
类别 | 详细解示 |
---|---|
基本语法 | select 表1.字段 [as 别名],表n.字段 from 表1 [as 别名],表n [as 别名]where 条件; |
示例 | SELECT u.device_id,q.question_id,q.result from question_practice_detail as q,user_profile as u where university = '浙江大学'and q.device_id=u.device_id |
示例说明 | 查询浙江大学学生的device_id,question_id,result |
基本语法二:
类别 | 详细解示 |
---|---|
基本语法 | select 表1.字段 [as 别名],表n.字段 from 表1 [as 别名]INNER JOIN 表n [as 别名]on 条件; |
示例 | select q.device_id, q.question_id, q.result FROM question_practice_detail q INNER JOIN user_profile p ON (p.device_id = q.device_id AND university = '浙江大学') |
示例说明 | 查询浙江大学学生的device_id,question_id,result |
外连接
说明 | 详解 |
---|---|
基本语法 | select 表1.字段 [as 别名],表n.字段 from 表1 LEFT JOIN 表n on 条件; |
示例 | select * from user left join order_goods on user.uid = order_goods.uid; |
示例说明 | 以左边为主,查询哪些用户未购买过商品,并将用户信息显示出来 |
外连接又分为左连接和右链接,具体定义如下。
左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录
右连接:包含所有的右边表中的记录甚至是右边表中没有和它匹配的记录
类别 | 详细解示 |
---|---|
基本语法 | select 表1.字段 [as 别名],表n.字段 from 表1 right JOIN 表n on 条件; |
示例 | select * from user right join order_goods on user.uid = order_goods.uid; |
示例说明 | 查询商品表中哪些用户购买过商品,并将用户信息显示出来 |
内连接只显示符合连接条件的记录,外连接除了显示符合条件的记录外,还显示表中的记录,例如,如果使用左外连接,还显示左表中的记录。
全连接
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
具体可以看这个博客写的
左连接 ,右连接,内连接和全外连接的4者区别_灰太狼_cxh的博客-CSDN博客_左连接,右连接,内连接,外连接的区别
在mysql中,round函数用于数据的四舍五入,它有两种形式:
1、round(x,d) ,x指要处理的数,d是指保留几位小数
这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0;
2、round(x) ,其实就是round(x,0),也就是默认d为0;
注明:大部分内容来自《3天入门MySQL》,其实就是一篇《3天入门MySQL》的小总结,作者为进击的皇虫 ,书籍链接如下《3天入门MySQL》 - 书栈网 · BookStack,本文只做学习交流使用,如有侵权行为,十分抱歉,请及时联系本人删除博客。