文章目录
- 无水印脑图
- 表结构
- 简单查询
- 脑图
- 单列查询
- 多列查询
- 查询所有列 *
- distinct去重
- 起别名 as
- 条件查询
- 大于判断 >
- 小于判断 <
- 等于判断 =
- 大于等于判断 >=
- 小于等于判断 <=
- 不等于判断 <> 或 !=
- BETWEEN ... AND ...包含判断
- IN(...)
- IS NULL
- IS NOT NULL
- AND 或 &&
- OR 或 ||
- 模糊查询
- 脑图
- % 多个任意字符
- _ 单个任意字符
- 排序查询
- 脑图
- ASC 升序
- DESC 降序
- limit 选学
- 位置问题
- 聚合函数
- 脑图
- AVG()
- COUNT()
- MAX()
- MIN()
- SUM()
- 分组查询
- 脑图
- 分组
- 过滤
- having和where的区别
- select子句查询顺序
- 分页查询
- 多表查询
- 脑图
- 内连接
- 显示内连接
- 隐式内连接
- 外连接
- 左外连接
- 右外连接
- 子查询
- 单行单列
- 多行单列
- 多行多列
无水印脑图
表结构
mysql> desc stus;+---------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+---------+--------------+------+-----+---------+----------------+| id | int(11) | NO | PRI | NULL | auto_increment || gradeId | int(11) | YES | MUL | NULL | || NAME | varchar(100) | NO | | NULL | || age | int(3) | YES | | NULL | || bir | date | YES | | NULL | || english | int(3) | YES | | NULL | || chinese | int(3) | YES | | NULL | |+---------+--------------+------+-----+---------+----------------+mysql> select * from stus;+----+---------+--------------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+--------------+------+------------+---------+---------+| 1 | 1 | 周棋洛 | 18 | 2001-06-01 | 78 | NULL || 2 | 2 | 张郁苗 | 18 | 2002-11-07 | 130 | 120 || 3 | 1 | 小猪佩奇 | 6 | 2015-06-10 | 34 | NULL || 4 | 3 | 猪爸爸 | 8 | 2012-09-12 | 34 | 56 || 5 | 3 | 猪妈妈 | 7 | 2012-09-11 | 56 | 78 |+----+---------+--------------+------+------------+---------+---------+
简单查询
脑图
单列查询
select 列名 from 表;
从stus表中查询名字的字段
mysql> select name from stus;+--------------+| name |+--------------+| 周棋洛 || 张郁苗 || 小猪佩奇 || 猪爸爸 || 猪妈妈 |+--------------+
多列查询
select 列名,列名…… from 表;
从stus表中查询名字和年龄这两个字段
mysql> select name,age from stus;+--------------+------+| name | age |+--------------+------+| 周棋洛 | 18 || 张郁苗 | 18 || 小猪佩奇 | 6 || 猪爸爸 | 8 || 猪妈妈 | 7 |+--------------+------+
查询所有列 *
select * from 表;
从stus表查询所有字段
mysql> select * from stus;+----+---------+--------------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+--------------+------+------------+---------+---------+| 1 | 1 | 周棋洛 | 18 | 2001-06-01 | 78 | NULL || 2 | 2 | 张郁苗 | 18 | 2002-11-07 | 130 | 120 || 3 | 1 | 小猪佩奇 | 6 | 2015-06-10 | 34 | NULL || 4 | 3 | 猪爸爸 | 8 | 2012-09-12 | 34 | 56 || 5 | 3 | 猪妈妈 | 7 | 2012-09-11 | 56 | 78 |+----+---------+--------------+------+------------+---------+---------+
distinct去重
distinct关键字可以出去重复出现的内容,注意:不能部分使用distinct
mysql> select distinct age from stus;+------+| age |+------+| 18 || 6 || 8 || 7 |+------+
起别名 as
我们在查询时,如果对原有字段名不满意,这时就可以通过as关键字对字段起别名,注意:as是可省略的,如下所示
mysql> select name as "姓名" from stus;+--------------+| 姓名 |+--------------+| 周棋洛 || 张郁苗 || 小猪佩奇 || 猪爸爸 || 猪妈妈 |+--------------+mysql> select name "姓名" from stus;+--------------+| 姓名 |+--------------+| 周棋洛 || 张郁苗 || 小猪佩奇 || 猪爸爸 || 猪妈妈 |+--------------+
条件查询
大于判断 >
😀 : 查找stus表中年龄大于18岁的学生姓名
mysql> select name from stus where age > 18;Empty set (0.00 sec)
小于判断 <
😀 : 查找stus表中年龄小于18岁的学生姓名
mysql> select name from stus where age < 18;+--------------+| name |+--------------+| 小猪佩奇 || 猪爸爸 || 猪妈妈 |+--------------+
等于判断 =
😀 : 查找stus表中年龄等于18岁的学生姓名
mysql> select name from stus where age = 18;+-----------+| name |+-----------+| 周棋洛 || 张郁苗 |+-----------+
大于等于判断 >=
😀 : 查找stus表中年龄大于等于18岁的学生姓名
mysql> select name from stus where age >= 18;+-----------+| name |+-----------+| 周棋洛 || 张郁苗 |+-----------+
小于等于判断 <=
😀 : 查找stus表中年龄小于等于18岁的学生姓名
mysql> select name from stus where age <= 18;+--------------+| name |+--------------+| 周棋洛 || 张郁苗 || 小猪佩奇 || 猪爸爸 || 猪妈妈 |+--------------+
不等于判断 <> 或 !=
😀 : 查找stus表中年龄不等于18岁的学生姓名
mysql> select name from stus where age <> 18;+--------------+| name |+--------------+| 小猪佩奇 || 猪爸爸 || 猪妈妈 |+--------------+mysql> select name from stus where age != 18;+--------------+| name |+--------------+| 小猪佩奇 || 猪爸爸 || 猪妈妈 |+--------------+
BETWEEN … AND …包含判断
😀 : 查找stus表中年龄在10~18岁的学生姓名
mysql> select name,age from stus where age between 8 and 20;+-----------+------+| name | age |+-----------+------+| 周棋洛 | 18 || 张郁苗 | 18 || 猪爸爸 | 8 |+-----------+------+
IN(…)
😀 : 查找stus表中年龄为8岁或7岁的学生姓名
mysql> select name,age from stus where age in(7,8);+-----------+------+| name | age |+-----------+------+| 猪爸爸 | 8 || 猪妈妈 | 7 |+-----------+------+
IS NULL
😀 : 查找stus表中名字为空的学生信息
mysql> select * from stus where name is null;Empty set (0.02 sec)
IS NOT NULL
😀 : 查找stus表中名字不为空的学生信息
mysql> select * from stus where name is not null;+----+---------+--------------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+--------------+------+------------+---------+---------+| 1 | 1 | 周棋洛 | 18 | 2001-06-01 | 78 | NULL || 2 | 2 | 张郁苗 | 18 | 2002-11-07 | 130 | 120 || 3 | 1 | 小猪佩奇 | 6 | 2015-06-10 | 34 | NULL || 4 | 3 | 猪爸爸 | 8 | 2012-09-12 | 34 | 56 || 5 | 3 | 猪妈妈 | 7 | 2012-09-11 | 56 | 78 |+----+---------+--------------+------+------------+---------+---------+
AND 或 &&
只有多个条件都成立才会返回真,否则就认为false
😀 : 查找stus表中年龄为18岁的周棋洛的学生信息
mysql> select * from stus where name = "周棋洛" AND age = "18";+----+---------+-----------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+-----------+------+------------+---------+---------+| 1 | 1 | 周棋洛 | 18 | 2001-06-01 | 78 | NULL |+----+---------+-----------+------+------------+---------+---------+mysql> select * from stus where name = "周棋洛" && age = "18";+----+---------+-----------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+-----------+------+------------+---------+---------+| 1 | 1 | 周棋洛 | 18 | 2001-06-01 | 78 | NULL |+----+---------+-----------+------+------------+---------+---------+
OR 或 ||
只要有一个条件成立就返回真,都不成立返回false
😀 : 查找stus表中名字叫周棋洛或者叫张郁苗的学生信息
mysql> select * from stus where name = "周棋洛" OR name = "张郁苗";+----+---------+-----------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+-----------+------+------------+---------+---------+| 1 | 1 | 周棋洛 | 18 | 2001-06-01 | 78 | NULL || 2 | 2 | 张郁苗 | 18 | 2002-11-07 | 130 | 120 |+----+---------+-----------+------+------------+---------+---------+mysql> select * from stus where name = "周棋洛" || name = "张郁苗";+----+---------+-----------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+-----------+------+------------+---------+---------+| 1 | 1 | 周棋洛 | 18 | 2001-06-01 | 78 | NULL || 2 | 2 | 张郁苗 | 18 | 2002-11-07 | 130 | 120 |+----+---------+-----------+------+------------+---------+---------+
模糊查询
糊查询
需要使用 like
占位符,几个案例学会模糊查询,下面是stus表的数据
脑图
mysql> select * from stus;+----+---------+--------------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+--------------+------+------------+---------+---------+| 1 | 1 | 周棋洛 | 18 | 2001-06-01 | 78 | NULL || 2 | 2 | 张郁苗 | 18 | 2002-11-07 | 130 | 120 || 3 | 1 | 小猪佩奇 | 6 | 2015-06-10 | 34 | NULL || 4 | 3 | 猪爸爸 | 8 | 2012-09-12 | 34 | 56 || 5 | 3 | 猪妈妈 | 7 | 2012-09-11 | 56 | 78 |+----+---------+--------------+------+------------+---------+---------+
% 多个任意字符
1.查询 stus 表中 name 以猪开头的学生信息
mysql> select * from stus where name like "猪%";+----+---------+-----------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+-----------+------+------------+---------+---------+| 4 | 3 | 猪爸爸 | 8 | 2012-09-12 | 34 | 56 || 5 | 3 | 猪妈妈 | 7 | 2012-09-11 | 56 | 78 |+----+---------+-----------+------+------------+---------+---------+
2.查询 stus 表中 name 以爸爸结尾的学生信息
mysql> select * from stus where name like '%爸爸';+----+---------+-----------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+-----------+------+------------+---------+---------+| 4 | 3 | 猪爸爸 | 8 | 2012-09-12 | 34 | 56 |+----+---------+-----------+------+------------+---------+---------+
3.查询 stus 表中 name 中包含猪的学生信息
mysql> select * from stus where name like '%猪%';+----+---------+--------------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+--------------+------+------------+---------+---------+| 3 | 1 | 小猪佩奇 | 6 | 2015-06-10 | 34 | NULL || 4 | 3 | 猪爸爸 | 8 | 2012-09-12 | 34 | 56 || 5 | 3 | 猪妈妈 | 7 | 2012-09-11 | 56 | 78 |+----+---------+--------------+------+------------+---------+---------+
_ 单个任意字符
4.查询 stus 表中 name 以猪开头的且名字长度为2的学生信息
mysql> select * from stus where name like '猪_';Empty set (0.00 sec)
5.查询 stus 表中 name 以猪开头的且名字长度为3的学生信息
mysql> select * from stus where name like '猪__';+----+---------+-----------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+-----------+------+------------+---------+---------+| 4 | 3 | 猪爸爸 | 8 | 2012-09-12 | 34 | 56 || 5 | 3 | 猪妈妈 | 7 | 2012-09-11 | 56 | 78 |+----+---------+-----------+------+------------+---------+---------+
6.查询 stus 表中 name 以妈妈结尾的且名字长度为3的学生信息
mysql> select * from stus where name like '_妈妈';+----+---------+-----------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+-----------+------+------------+---------+---------+| 5 | 3 | 猪妈妈 | 7 | 2012-09-11 | 56 | 78 |+----+---------+-----------+------+------------+---------+---------+
7.查询 stus 表中 name 以张开头以苗结尾的且名字长度为3的学生信息
mysql> select * from stus where name like '张_苗';+----+---------+-----------+------+------------+---------+---------+| id | gradeId | NAME | age | bir | english | chinese |+----+---------+-----------+------+------------+---------+---------+| 2 | 2 | 张郁苗 | 18 | 2002-11-07 | 130 | 120 |+----+---------+-----------+------+------------+---------+---------+
排序查询
关键字:order by
关系型数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出来的数据的顺序有意义,可以使用 order by 子句
对查询结果进行排序,默认是升序
,即从小到大 ASC
,如果想要降序
排序,则需要指定 DESC
脑图
ASC 升序
1. 查询stus表中名字字段,要求按照年龄的升序进行排序
mysql> select name from stus order by age;+--------------+| name |+--------------+| 小猪佩奇 || 猪妈妈 || 猪爸爸 || 周棋洛 || 张郁苗 |+--------------+
2. 查询stus表中名字,年龄字段,要求按照年龄大于7进行筛选之后按照年龄的升序进行排序
mysql> select name,age from stus where age > 7 order by age;+-----------+------+| name | age |+-----------+------+| 猪爸爸 | 8 || 周棋洛 | 18 || 张郁苗 | 18 |+-----------+------+
DESC 降序
3. 查询stus表中名字字段,要求按照年龄的升序进行排序,如果年龄相同再按照英语成绩降序排列
mysql> select name from stus order by age,english desc;+--------------+| name |+--------------+| 小猪佩奇 || 猪妈妈 || 猪爸爸 || 张郁苗 || 周棋洛 |+--------------+
limit 选学
这个还没讲到,如果你不知道,可以跳过,后面会将到哦
4. 查询stus表中名字字段,要求按照年龄的升序进行排序,并通过limit返回一条数据,即年龄最小的
mysql> select name from stus order by age asc limit 1;+--------------+| name |+--------------+| 小猪佩奇 |+--------------+
哦,原来小猪佩奇是最小的
位置问题
在使用 order by 子句对检索出的数据进行排序时,应该保证它是位于 from,如果有条件,应位于where之后,如果使用 limit ,它必须位于 order by 之后,使用子句的次序不对将产生错误消息
聚合函数
MySQL 提供了5个聚合函数,聚合函数能够汇总数据,这些函数是高效设计的,它们返回结果一般比你自己在客户机应用程序中计算要快的多
脑图
AVG()
返回某列的平均值
查看stus表学生的平均英语成绩
mysql> select avg(english) as avgEnglish from stus;+------------+| avgEnglish |+------------+| 66.4000 |+------------+
COUNT()
返回某列的行数
查看stus表一共有多少行
mysql> select count(*) as num from stus;+-----+| num |+-----+| 5 |+-----+
MAX()
返回某列的最大值
查看stus表中英语成绩最高分
mysql> select max(english) as score from stus;+-------+| score |+-------+| 130 |+-------+
MIN()
返回某列的最小值
查询stus表英语成绩的最低分
mysql> select min(english) as score from stus;+-------+| score |+-------+| 34 |+-------+
还不错,没有0蛋
SUM()
返回某列之和
查询stus表中学生英语成绩的总分
mysql> select sum(english) as score from stus;+-------+| score |+-------+| 332 |+-------+
分组查询
脑图
分组
对stus表的数据按照班级进行分组,并查看每个班都有多少人
mysql> select gradeId,count(*) as num from stus group by gradeId;+---------+-----+| gradeId | num |+---------+-----+| 1 | 2 || 2 | 1 || 3 | 2 |+---------+-----+
对stus表的数据按照班级进行分组,查看每个班都有多少人以及班级英语平均分
mysql> select gradeId,avg(english)as english from stus group by gradeId;+---------+----------+| gradeId | english |+---------+----------+| 1 | 56.0000 || 2 | 130.0000 || 3 | 45.0000 |+---------+----------+
过滤
mysql> select gradeId,count(*) as num from stus group by gradeId having count(*) > 1;+---------+-----+| gradeId | num |+---------+-----+| 1 | 2 || 3 | 2 |+---------+-----+
having和where的区别
- 执行时间不一样:where是分组之前进行限定,不满足where条件,就不参与分组,而having是分组之后对结果进行过滤
- 可判断的条件不一样:where 不能对聚合函数进行判断,having可以
- where > 聚合函数 > having
select子句查询顺序
select
from
where 行级过滤
group by 分组
having 组级过滤
order by 输出排序顺序
limit 要检索的条目数
分页查询
关键字: limit
MySQL中使用limit来限制返回的条目数
一个参数,从开始处返回几条数据
select * from XXX limit 5;
mysql> select id,name,age from stus limit 3;+----+--------------+------+| id | name | age |+----+--------------+------+| 1 | 周棋洛 | 18 || 2 | 张郁苗 | 18 || 3 | 小猪佩奇 | 6 |+----+--------------+------+
两个参数,注意检索出来的数据第一行为0而不是1,所以下面语句意思就是,从第一条数据算起,查询3条数据
select * from XXX limit 0,3;
mysql> select id,name,age from stus limit 0,2;+----+-----------+------+| id | name | age |+----+-----------+------+| 1 | 周棋洛 | 18 || 2 | 张郁苗 | 18 |+----+-----------+------+mysql> select id,name,age from stus limit 2,2;+----+--------------+------+| id | name | age |+----+--------------+------+| 3 | 小猪佩奇 | 6 || 4 | 猪爸爸 | 8 |+----+--------------+------+
假如规定一页有10条记录
当查询第一页时就是 limit 0,10;
当查询第二页时就是 limit 10,10;
当查询第三页时就是 limit 20,10;
所以总结一下,查询第n页数据时,limit (n-1)*每页记录数,每页记录数;
多表查询
脑图
试着查询两张表
mysql> select * from stus,grade;+----+---------+--------------+------+------------+---------+---------+----+--------------+| id | gradeId | NAME | age | bir | english | chinese | id | grade_name |+----+---------+--------------+------+------------+---------+---------+----+--------------+| 1 | 1 | 周棋洛 | 18 | 2001-06-01 | 78 | NULL | 1 | 高三一班 || 1 | 1 | 周棋洛 | 18 | 2001-06-01 | 78 | NULL | 2 | 高三二班 || 1 | 1 | 周棋洛 | 18 | 2001-06-01 | 78 | NULL | 3 | 高一二班 || 2 | 2 | 张郁苗 | 18 | 2002-11-07 | 130 | 120 | 1 | 高三一班 || 2 | 2 | 张郁苗 | 18 | 2002-11-07 | 130 | 120 | 2 | 高三二班 || 2 | 2 | 张郁苗 | 18 | 2002-11-07 | 130 | 120 | 3 | 高一二班 || 3 | 1 | 小猪佩奇 | 6 | 2015-06-10 | 34 | NULL | 1 | 高三一班 || 3 | 1 | 小猪佩奇 | 6 | 2015-06-10 | 34 | NULL | 2 | 高三二班 || 3 | 1 | 小猪佩奇 | 6 | 2015-06-10 | 34 | NULL | 3 | 高一二班 || 4 | 3 | 猪爸爸 | 8 | 2012-09-12 | 34 | 56 | 1 | 高三一班 || 4 | 3 | 猪爸爸 | 8 | 2012-09-12 | 34 | 56 | 2 | 高三二班 || 4 | 3 | 猪爸爸 | 8 | 2012-09-12 | 34 | 56 | 3 | 高一二班 || 5 | 3 | 猪妈妈 | 7 | 2012-09-11 | 56 | 78 | 1 | 高三一班 || 5 | 3 | 猪妈妈 | 7 | 2012-09-11 | 56 | 78 | 2 | 高三二班 || 5 | 3 | 猪妈妈 | 7 | 2012-09-11 | 56 | 78 | 3 | 高一二班 |+----+---------+--------------+------+------------+---------+---------+----+--------------+15 rows in set (0.04 sec)
为啥返回给我15条结果啊❓
这样写的多表查询会有 笛卡尔积
:就是A,B两个集合,取 A,B所有的组合情况,比如A有3条记录,B有6条,查询就会有3*6=18条数据,显然不合符需求,所以要消除无效数据
内连接
关键字:INNER JOIN
连接结果仅包含符合连接条件的行组合起来作为结果集,参与连接的两个表都应该符合连接条件使用关键词:INNER JOIN 连接多张表
显示内连接
使用 INNER JOIN
关键字,条件使用 on
关键字
mysql> select grade_name, name from grade inner join stus on stus.gradeId = grade.id;+--------------+--------------+| grade_name | name |+--------------+--------------+| 高三一班 | 周棋洛 || 高三二班 | 张郁苗 || 高三一班 | 小猪佩奇 || 高一二班 | 猪爸爸 || 高一二班 | 猪妈妈 |+--------------+--------------+
隐式内连接
内连接还有一种隐式的写法,即不需要显示的指定 INNER JOIN
关键字,需要注意,使用隐式内连接条件的关键字要使用 where
而不再是 on
mysql> select grade_name, name from grade,stus where stus.gradeId = grade.id;+--------------+--------------+| grade_name | name |+--------------+--------------+| 高三一班 | 周棋洛 || 高三二班 | 张郁苗 || 高三一班 | 小猪佩奇 || 高一二班 | 猪爸爸 || 高一二班 | 猪妈妈 |+--------------+--------------+
一般我们常用直接使用where关键词查询连接条件这样更方便简单
外连接
关键字:OUTER JOIN
左外连接
LEFT JOIN
左(外)连接,左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录。右表记录不足的地方均为NULL
语法:
LEFT JOIN onLEFT OUTER JOIN ON
left join
是 left outer join
的简写
mysql> select name,grade_name from stus s left outer join grade g on s.id = g.id;+--------------+--------------+| name | grade_name |+--------------+--------------+| 周棋洛 | 高三一班 || 张郁苗 | 高三二班 || 小猪佩奇 | 高一二班 || 猪爸爸 | NULL || 猪妈妈 | NULL |+--------------+--------------+mysql> select name,grade_name from stus s left join grade g on s.id = g.id;+--------------+--------------+| name | grade_name |+--------------+--------------+| 周棋洛 | 高三一班 || 张郁苗 | 高三二班 || 小猪佩奇 | 高一二班 || 猪爸爸 | NULL || 猪妈妈 | NULL |+--------------+--------------+
右外连接
RIGHT JOIN
右(外)连接,右表的记录将会全部表示出来,而左表只会显示符合搜索条件的记录。左表记录不足的地方均为NULL
语法:
RIGHT JOIN onRIGHT OUTER JOIN ON
right join
是 right outer join
的简写
mysql> select name,grade_name from stus s right join grade g on s.id = g.id;+--------------+--------------+| name | grade_name |+--------------+--------------+| 周棋洛 | 高三一班 || 张郁苗 | 高三二班 || 小猪佩奇 | 高一二班 |+--------------+--------------+
子查询
查询中嵌套查询,称嵌套查询为子查询
分类 (根据查询结果的不同,作用不同)
单行单列
作为条件值,使用 = != < > 等进行条件判断
语法:
select 字段列表 from 表 where 字段名 = (子查询);
例如:查询stus表名字叫周棋洛的在几班
1.首先,要在stus表中查询名字为周棋洛的 gradeId 是多少
2.根据查到的 gradeId 再去 grade 查询 相对应的 grade_name
mysql> select gradeId from stus where name = "周棋洛";+---------+| gradeId |+---------+| 1 |+---------+mysql> select grade_name from grade where id = 1;+--------------+| grade_name |+--------------+| 高三一班 |+--------------+
能不能把这两个sql语句合并为一个❓答案是毋庸置疑的,不可以,开玩笑的,哈哈,当然可以,要不也不说子查询了,开始合并
mysql> select grade_name from grade where id = (select gradeId from stus where name = "周棋洛");+--------------+| grade_name |+--------------+| 高三一班 |+--------------+
多行单列
作为条件值,用 in 等关键字进行条件判断
语法:
select 字段列表 from 表 where 字段名 in (子查询);
多行多列
作为虚拟表
select 字段列表 from (子查询) where t;
这里是热爱动漫,热爱技术,热爱生活的小周,期待你的关注!