MySQL(三)之表的查询(聚合函数、常用关键字、运算符、多表查询)

申明:资料来源于网络及书本,通过理解、实践、整理成学习笔记。

MySQL聚合函数

示例表格:
select * from userinfo_1;
执行结果:
+----+------+-------+
| id | name | score |
+----+------+-------+
|  1 | 路飞 |    90 |
|  2 | 索隆 |    85 |
|  3 | 娜美 |    87 |
|  4 | 罗宾 |    96 |
+----+------+-------+
  1. 最大值(max):select max(字段名) from 表名
    mysql> select max(score) from userinfo_1;
    执行结果:示例表格中score的最大值为96
    +------------+
    | MAX(score) |
    +------------+
    |         96 |
    +------------+
    
  2. 最小值(min):select min(字段名) from 表名
    mysql> select min(score) from userinfo_1;
    执行结果:示例表格中score的最小值为85
    +------------+
    | min(score) |
    +------------+
    |         85 |
    +------------+
    
  3. 平均值(avg):select avg(字段名) from 表名
    mysql> select avg(score) from userinfo_1;
    执行结果:示例表格中score的绝对值为89.5000
    +------------+
    | avg(score) |
    +------------+
    |    89.5000 |
    +------------+
    
  4. 计数(count):select count(字段名) from 表名
    mysql> select count(name) from userinfo_1;
    执行结果:示例表格中name的个数为4
    +-------------+
    | count(name) |
    +-------------+
    |           4 |
    +-------------+
    
  5. 求和(sum):select sum(字段名) from 表名
    mysql> select sum(score) from userinfo_1;
    执行结果:实例表格中score的总和为358
    +------------+
    | sum(score) |
    +------------+
    |        358 |
    +------------+
    

MySQL常用关键字

  1. group By:分组
    select 字段2,聚合函数字段 from 表名 group by 字段1
  2. order by:排序(asc升序 desc降序)
    select * from 表名 order by 字段名 asc/desc
  3. limit:返回指定的记录数(n指定第一个返回记录行的偏移量,m指定返回记录行的最大数目。)
    select * from 表名 order by 字段名 asc/desc limit n,m
  4. distinct:去除重复数据
    select distinct name,id from user;
  5. as:取表的别名
  6. Constraints :SQL 约束
  7. primary key :主键约束
  8. auto_increment :自增
  9. foreign key:外键约束
  10. unique:唯一约束
  11. not null:非空约束
  12. default:默认值约束
  13. unsigned:无符号
  14. Index 索引
  15. like:模糊查询
  16. % :通配符,匹配所有字符、数字和空字符,可以匹配多个
  17. -:通配符,匹配单个字符、数字和空字符

MySQL运算符

算术运算符

符号作用符号作用
+加法运算%求余运算
-减法运算DIV除法运算,返回商
*乘法运算MOD求余运算,返回余数
/除法运算

比较运算符

运算符名称运算符名称
=等于is not null不为空
>大于between and两者之间
<小于in在…中
>=大于等于not in不在…中
<=小于等于like模式匹配
!=加法运算not like模式匹配
is null为空regexp正则表达式

逻辑运算符

符号作用符号作用
ANDNOT
ORXOR异或

位运算符

符号作用
&按位与。进行该运算时,数据库系统会先将十进制的数转换为二进制的数。然后对应操作数的每个二进制位上进行与运算。1和1相与得1,与0相与得0。运算完成后再将二进制数变回十进制数
|按位或。将操作数化为二进制数后,每位都进行或运算。1和任何数进行或运算的结果都是1,0与0或运算结果为0
~与按位取反。将操作数化为二进制数后,每位都进行取反运算。1取反后变成0,0取反后变成I
^按位异或。将操作数化为二进制数后,每位都进行异或运算。相同的数异或之后结果是0,不同的数异或之后结果为l
<<按位左移。“m<<n”表示m的二进制数向左移n位,右边补上n个0。例如,二进制数001左移l位后将变成010
>>按位右移。“m>>n”表示m的二进制数向右移n位,左边补上n个0。例如,二进制数011右移l位后变成001,最后一个1直接被移出

运算符的优先级

符号运算符
1
2~
3^
4*,/,%,MOD
5+,-
6>>,<<
7&
8|
9=,<=>,<,>,<=,>=,<>,IN,IS,NULL,LIKE,REGEXP
10BETWEEN AND,CASE,WHEN,THEN,ELSE
11NOT
12&&,AMD
13||,OR,XOR

MySQL多表查询

实例表格
表1:
mysql> select * from t1;
+----+------+-------+
| id | name | score |
+----+------+-------+
|  1 | 路飞 |    90 |
|  2 | 索隆 |    85 |
|  3 | 娜美 |    87 |
|  4 | 罗宾 |    96 |
+----+------+-------+2:
mysql> select * from t2;
+----+------+-------+
| id | name | score |
+----+------+-------+
|  1 | 路飞 |    90 |
|  2 | 索隆 |    85 |
|  3 | 凯多 |    99 |
|  4 | 红发 |    98 |
+----+------+-------+
4 rows in set (0.00 sec)

内连接

内连接:(inner join …on)查询两个表的公有部分
在这里插入图片描述
select 表1.字段,表2.字段 from 表1 inner join 表2 on 表1.字段 = 表2.字段

mysql> select * from t1 inner join t2 on t1.name = t2.name;
+----+------+-------+----+------+-------+
| id | name | score | id | name | score |
+----+------+-------+----+------+-------+
|  1 | 路飞 |    90 |  1 | 路飞 |    90 |
|  2 | 索隆 |    85 |  2 | 索隆 |    85 |
+----+------+-------+----+------+-------+

左连接

左连接:(left join …on)以左表为基准,右表提供数据与左表组成新的表,如果右表中有左表没有的数据则不显示,右表中缺失左表中的数据则以null补充
在这里插入图片描述
select 表1.字段,表2.字段 from 表1 left join 表2 on 表1.字段 = 表2.字段

mysql> select * from t1 left join t2 on t1.name = t2.name;
+----+------+-------+------+------+-------+
| id | name | score | id   | name | score |
+----+------+-------+------+------+-------+
|  1 | 路飞 |    90 |    1 | 路飞 |    90 |
|  2 | 索隆 |    85 |    2 | 索隆 |    85 |
|  3 | 娜美 |    87 | NULL | NULL |  NULL |
|  4 | 罗宾 |    96 | NULL | NULL |  NULL |
+----+------+-------+------+------+-------+

右连接

右连接:(right join …on)以左表为基准,左表提供数据与右表组成新的表,如果左表中有右表没有的数据则不显示,左表中缺失右表中的数据则以null补充
在这里插入图片描述
select 表1.字段,表2.字段 from 表1 right join 表2 on 表1.字段 = 表2.字段

mysql> select * from t1 right join t2 on t1.name = t2.name;
+------+------+-------+----+------+-------+
| id   | name | score | id | name | score |
+------+------+-------+----+------+-------+
|    1 | 路飞 |    90 |  1 | 路飞 |    90 |
|    2 | 索隆 |    85 |  2 | 索隆 |    85 |
| NULL | NULL |  NULL |  3 | 凯多 |    99 |
| NULL | NULL |  NULL |  4 | 红发 |    98 |
+------+------+-------+----+------+-------+

全连接

select 表1.字段,表2.字段 from 表1 left join 表2 on 表1.字段 = 表2.字段
union
select 表1.字段,表2.字段 from 表1 right join 表2 on 表1.字段 = 表2.字段

mysql> select * from t1 left join t2 on t1.name = t2.name
    -> union
    -> select * from t1 right join t2 on t1.name = t2.name;
+------+------+-------+------+------+-------+
| id   | name | score | id   | name | score |
+------+------+-------+------+------+-------+
|    1 | 路飞 |    90 |    1 | 路飞 |    90 |
|    2 | 索隆 |    85 |    2 | 索隆 |    85 |
|    3 | 娜美 |    87 | NULL | NULL |  NULL |
|    4 | 罗宾 |    96 | NULL | NULL |  NULL |
| NULL | NULL |  NULL |    3 | 凯多 |    99 |
| NULL | NULL |  NULL |    4 | 红发 |    98 |
+------+------+-------+------+------+-------+

一个坚持学习,坚持成长,坚持分享的人,即使再不聪明,也一定会成为优秀的人!

整理不易,如果看完觉得有所收获的话,记得一键三连哦,谢谢!

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拿头来坚持

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值