day35_mysql单表查询与多表查询

1、单表查询

1.1 单表查询语法:

SELECT 字段1,字段2... FROM 表名

    WHERE 条件
    GROUP BY field
    HAVING 筛选
    ORDER BY field
    LIMIT 限制条数

1.2 关键字执行优先级:

from
where
gropu by
having
select
distinct
order by
limit

1.3 where 约束

  • 比较运算符:> < >= <= != <>
  • between 80 and 100
  • in(a,b,c)
  • like 'x%' 以x开头
  • 逻辑运算符 and/or
  • NULL的判断:只能用is,不能用=

1.4 group by

按照优先级,gropu by分组发生在where之后

分组:将所有记录按照某个相同字段进行归类,比如针对员工信息表职位分组,或者按照性别分组

注意:

1、select优先级在group by之后,所以select 只能查询分组后的结果

2、分组后不能直接使用select查询每个组内的数据,可以通过聚合函数查看组内的相关内容

1.5 聚合函数

聚合函数聚合的是组的内容,若是没有分组,则默认一组

where执行在group by之前,因此where约束中绝不能使用聚合函数

count(字段名a) # 统计组内字段a的数据个数
max()
min()
avg()
sum()

1.6 having 过滤

having的执行优先级在group by之后

因此having只能过滤使用where或者group后的字段,并且可以使用聚合函数

1.7 order by

按字段排序

order by 字段名  # 默认按照字段升序排序
order by 字段名 desc # 按照字段降序排序

order by 字段名1,字段2 desc  # 先按照字段1升序排序,在这个排序的基础上,相等记录按照字段2降序排序

1.8 limit

限制查询的记录数量

优先级最低

limit a,b  # 按照排序的顺序,取从a到b的记录,a默认位0

1.9 正则查询

对字符串匹配的方式

where 字段名 regexp 're_format'
having 字段名 regexp 're_format'

2、多表查询

2.1 什么是多表查询

即联合多个表查询信息

2.2 使用多表查询的好处

在表中存储记录时,存在多个表格中的字段重复的情况,为了减少内存占用,也为了修改数据的便利性,设计了多表查询的方式

2.3 如何实现多表查询

2.3.1 外键

定义表格时,将某个字段定义为外键,即通过这个字段可以找到别的表的相应的值

语法:在定义表格时

constraint 外键名 foreign key(被约束的字段) references 约束的表(约束的字段)

2.3.2 查询方式

1、拼接表格

2、查询表格

拼接表格的方式:

基本连接方式:

1、select * from 表1 left join 表2  on 表1.外键=表2.外键
2、select * from 表1 right join 表2  on 表1.外键=表2.外键
3、select * from 表1 inner join 表2 on 表1.外键=表2.外键

# left   以表1的记录为准
# right  以表2的记录为准
# inner  以匹配的为准

全连接方式:

全外连接:在内连接的基础上增加左边有右边没有的和右边有左边没有的结果

select * from 表1 left join 表2 on 表1.外键 = 表2.外键
union
select * from 表1 right join 表2 on 表1.外键 = 表2.外键
;

注意:
mysql不支持全外连接 full JOIN

2.4 子查询

即以查询语句作为另一个查询语句的参数

  • 当查询结果时多个值时,可ui使用关键字in
  • 当查询结果为一个值时,可以使用比较运算符
  • 可以用exist语句判断
select id,name from department
where id in (select dep_id from employee group by dep_id having avg(age) > 25);

select name,age from emp where age > (select avg(age) from emp);

mysql> select * from employee
where exists (select id from department where id=200);
posted @ 2019-10-30 21:56  W文敏W  阅读(168)  评论(0编辑  收藏  举报