MySQL数据库的高级SQL语句与高级操作(1)

目录

以下例子都是基于该数据表

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会复制原表的表结构和数据,但是约束条件不会被复制,比如原表设置了主键,但新表中不会有主键

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值