目录
以下例子都是基于该数据表
1、查询不重复记录(distinct)
2、and 、or:根据多条件查询
3、IN ----显示已知的值的数据记录
4、BETWEEN ----显示两个值范围内的数据记录
5、 like+通配符:模糊查询
6、order by:按关键字排序
7、group by:对查询结果进行汇总分类
8、设置别名
8.1 设置别名—alias
8.2 做为连接语句的操作符,创建新表
以下例子都是基于该数据表
1、查询不重复记录(distinct)
#语法:select distinct 字段 from 表名﹔
#示例1:查找hobby的类型有哪些
select distinct hobby from test01;
2、and 、or:根据多条件查询
#语法:select 字段名 from 表名 where 条件1 (and|or) 条件2 (and|or)条件3;
#示例1:显示name和age 并且要找到age大于20小于30
select name,age from test01 where age >20 and age <30;
#示例2:找出年龄未满16周岁的和年龄大于20周岁的人,显示她们的名字和年级
select name,age from test01 where age<16 or age>20;
3、IN ----显示已知的值的数据记录
#语法:select 字段名 from 表名 where 字段 in ('值1','值2'....);
#示例1:显示id为1,2,3,4的记录
select * from test01 where id in (1,2,3,4);
#示例2:显示兴趣为打篮球和踢足球的记录
select * from test01 where hobby in ('playing baseketball','playing football');
4、BETWEEN ----显示两个值范围内的数据记录
#语法:select 字段名 from 表名 where 字段 between '值1' and '值2';
包括 and两边的值
#示例1:显示id在2-5 的信息
select * from test01 where id between 2 and 5;
#示例2:显示学生年龄在16-20之间的信息,不需要表中一定有该字段,只会将16到20 已有的都显示出来
select * from test01 where age between 16 and 20;
5、 like+通配符:模糊查询
#语法:select 字段名 from 表名 where 字段 like 模式
通配符 | 含义 |
---|---|
% | 表示零个,一个或者多个字符 |
_ | 下划线表示单个字符 |
A_Z | 所有以A开头 Z 结尾的字符串 ,‘ACCCCZ'不在范围内 。下划线只表示一个字符 A Z 包含A空格Z |
ABC% | 所有以ABC开头的字符串 ABCD ABCABC |
%CBA | 所有以CBA结尾的字符串 WCBA CBACBA |
%AN% | 所有包含AN的字符串 los angeles |
_AN% | 所有 第二个字母为 A 第三个字母 为N 的字符串 |
#示例1:查找姓li的人记录
select * from test01 where name like 'li%';
#示例2:查找名字包含li的记录
select * from test01 where name like '%li%';
#示例3:查找名字第二个字母为a,第三个字母为n的记录
select * from test01 where name like '_an%';
6、order by:按关键字排序
#语法:
select 字段名 from 表名 where 条件 order by 字段 [asc,desc];
#############################################################
asc :正向排序
desc :反向排序
######################默认是正向排序##########################
#示例1:按表格中人的年龄正向排序显示年龄和姓名字段
select age,name from test01 order by age;
#示例2:按表格中人的年龄降序排序显示年龄和姓名字段
select age,name from test01 order by age desc;
#示例3:显示name、age和hobbid字段的数据 并且只显示hobbid字段为3 的 并且以age字段降序排序
select age,name,hobbid from test01 where hobbid=3 order by age desc;
7、group by:对查询结果进行汇总分类
-
对group by 后面的字段的查询结果进行汇总分组,通常是结合聚合函数一起使用的
-
group by 有一个原则,就是select 后面的所有列中,没有使用聚合函数的列必须出现在 group by 的后面
-
#语法:select 字段1,sum/avg(字段2) from 表名 group by 字段1; #示例1:求来自每个地方人的总分 select address, sum(sorce) from test01 group by address; #示例2:求喜欢每个爱好的人的平均年龄 select hobby,avg(age) from test01 group by hobby;
8、设置别名
在 mysql查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者多次使用相同的表,可以给字段列或表设置别名。使用的时候直接使用别名,简洁明了,增强可读性
其中 AS 语句是可选的。AS 之后的别名,主要是为表内的列或者表提供临时的名称,在查询过程中使用,库内实际的表名或字段名是不会被改变的
8.1 设置别名—alias
select name as 姓名,score 成绩,hobby 爱好 from test01;
#设置name,score,hobby别名,alias是临时的,不会改变表的结构
select w.name as 姓名,w.score 成绩,w.hobby 爱好 from test01 as w;
#多表同字段会显示区别
8.2 做为连接语句的操作符,创建新表
- as创建一个新表并定义表结构,插入表数据(与原表相同)
- 但是”约束“没有被完全”复制“过来,如果原表设置了主键,那么附表的:default字段会默认设置一个0
创建新表,将之前表中的记录复制到新表中
create table test02 as select * from test01 where age<20;
#筛选test01表中年龄小于20的信息,生成新的数据表test02
- as会复制原表的表结构和数据,但是约束条件不会被复制,比如原表设置了主键,但新表中不会有主键