mysql--7.单表查询



1      Select语句

1.1  简单查询 s - f

1.1.1  所有

语法:    

select * from 表名;                                                                          查询所有(字段)

select 字段名1,字段名2,字段名3 from 表名;                    显示查询字段名

select DISTINCT 字段名 from 表名;                                         去除重复的数据。

 

练习:

create table stu(

  idint primary key auto_increment,

 name varchar(20),

 math int,

 english int,

 chinese int

);

 

insert into stu values(null , '老兰' , 52 , 62, 62);

insert into stu values(null , '美甲' , 12 , 62, 62);

insert into stu values(null , '美女' , 42 , 62, 62);

insert into stu values(null , '美美' , 12 , 62, 62);

insert into stu values(null , '猪' , 52 , 62 ,62);

 

查询表中所有学生的信息。

         select* from stu;

查询表中所有学生的姓名和对应的英语成绩。

         selectname,english from stu;

过滤表中重复数据。(只是单纯的去除结果中的重复元素,而且联合重复

         selectdistinct englishfrom stu;


1.1.2  列

练习:

在所有学生分数上加10分特长分。

         selectname,math+10,english+10,chinese+10 from stu;

统计每个学生的总分。

         selectname,math+english+chinese from stu;

                                                       

使用别名表示学生分数。

         selectname,(math+english+chinese) as sum from stu;

 

1.1.3  经过计算的后的值

函数 + 运算符

 

1.2  where条件 w -

查询姓名为班长的学生成绩

         select* from stu where name='班长';                                        

查询英语成绩大于90分的同学

         selectname,english from stu where english < 15;                                     

查询总分大于200分的所有同学

         selectname,math+english+chinese from stu where (math+english+chinese) > 200;

 

练习

查询英语分数在 80-90之间的同学。

         select* from stu where english >80 and english <90;

         select* from stu where english between 80 and 90;

查询数学分数为18,78,46的同学。(in)

         select* from stu where math in(18,78,46);                                                 

查询所有姓班的学生成绩。

         select* from stu where name like '班%';

查询数学分>80,语文分>80的同学。

         select* from stu where math >80 or chinese > 80;

 

1.3  排序

 

         升序默认的(asc)/降序(desc), 出现select的语句末尾。

练习:

对数学成绩排序后输出。

         selectname,math from stu order by math;

对总分排序按从高到低的顺序输出

         selectname,math+english+chinese from stu order by (math+english+chinese) desc;

对学生成绩按照英语进行降序排序,英语相同学员按照数学降序(先满足第一个条件)

         select* from stu order by english desc,math desc;

对姓美的学生成绩排序输出

         select* from stu where name like '美%' order by english desc;

 

 

1.4  分组查询

通过那个和哪些字段进行分组

 

         groupby  分组(一起使用)         条件过滤需要是having,不能使用where

练习:

create table orders(

         idint,

         productvarchar(20),

         pricefloat

);

 

insert into orders(id,product,price)values(1,'电视',900);

insert into orders(id,product,price)values(2,'洗衣机',100);

insert into orders(id,product,price)values(3,'洗衣粉',90);

insert into orders(id,product,price)values(4,'桔子',9);

insert into orders(id,product,price)values(5,'洗衣粉',90);

insert into orders(id,product,price)values(6,'电视',900);

对订单表中商品归类后,显示每一类商品的总价.

         selectproduct,count(*),sum(price) from orders group by product;

 

使用having 子句对分组结果进行过滤

练习:

查询购买了几类商品,并且每类总价大于100的商品    

         selectproduct,sum(price) from orders group by product having sum(price) > 100;

 

 

 

1.5  联合查询—对结果操作

1.5.1  集合并运算

查询包含 MANAGER 和 SALESMAN 的员工信息

 

1.5.2  集合交运算

Intersect

1.5.3  集合差运算

Except

1.6  分页查询—mysql独有

 

 

2      小结

 

 


1      Select语句

1.1  简单查询 s - f

1.1.1  所有

语法:    

select * from 表名;                                                                          查询所有(字段)

select 字段名1,字段名2,字段名3 from 表名;                    显示查询字段名

select DISTINCT 字段名 from 表名;                                         去除重复的数据。

 

练习:

create table stu(

  idint primary key auto_increment,

 name varchar(20),

 math int,

 english int,

 chinese int

);

 

insert into stu values(null , '老兰' , 52 , 62, 62);

insert into stu values(null , '美甲' , 12 , 62, 62);

insert into stu values(null , '美女' , 42 , 62, 62);

insert into stu values(null , '美美' , 12 , 62, 62);

insert into stu values(null , '猪' , 52 , 62 ,62);

 

查询表中所有学生的信息。

         select* from stu;

查询表中所有学生的姓名和对应的英语成绩。

         selectname,english from stu;

过滤表中重复数据。(只是单纯的去除结果中的重复元素,而且联合重复

         selectdistinct englishfrom stu;


1.1.2  列

练习:

在所有学生分数上加10分特长分。

         selectname,math+10,english+10,chinese+10 from stu;

统计每个学生的总分。

         selectname,math+english+chinese from stu;

                                                       

使用别名表示学生分数。

         selectname,(math+english+chinese) as sum from stu;

 

1.1.3  经过计算的后的值

函数 + 运算符

 

1.2  where条件 w -

查询姓名为班长的学生成绩

         select* from stu where name='班长';                                        

查询英语成绩大于90分的同学

         selectname,english from stu where english < 15;                                     

查询总分大于200分的所有同学

         selectname,math+english+chinese from stu where (math+english+chinese) > 200;

 

练习

查询英语分数在 80-90之间的同学。

         select* from stu where english >80 and english <90;

         select* from stu where english between 80 and 90;

查询数学分数为18,78,46的同学。(in)

         select* from stu where math in(18,78,46);                                                 

查询所有姓班的学生成绩。

         select* from stu where name like '班%';

查询数学分>80,语文分>80的同学。

         select* from stu where math >80 or chinese > 80;

 

1.3  排序

 

         升序默认的(asc)/降序(desc), 出现select的语句末尾。

练习:

对数学成绩排序后输出。

         selectname,math from stu order by math;

对总分排序按从高到低的顺序输出

         selectname,math+english+chinese from stu order by (math+english+chinese) desc;

对学生成绩按照英语进行降序排序,英语相同学员按照数学降序(先满足第一个条件)

         select* from stu order by english desc,math desc;

对姓美的学生成绩排序输出

         select* from stu where name like '美%' order by english desc;

 

 

1.4  分组查询

通过那个和哪些字段进行分组

 

         groupby  分组(一起使用)         条件过滤需要是having,不能使用where

练习:

create table orders(

         idint,

         productvarchar(20),

         pricefloat

);

 

insert into orders(id,product,price)values(1,'电视',900);

insert into orders(id,product,price)values(2,'洗衣机',100);

insert into orders(id,product,price)values(3,'洗衣粉',90);

insert into orders(id,product,price)values(4,'桔子',9);

insert into orders(id,product,price)values(5,'洗衣粉',90);

insert into orders(id,product,price)values(6,'电视',900);

对订单表中商品归类后,显示每一类商品的总价.

         selectproduct,count(*),sum(price) from orders group by product;

 

使用having 子句对分组结果进行过滤

练习:

查询购买了几类商品,并且每类总价大于100的商品    

         selectproduct,sum(price) from orders group by product having sum(price) > 100;

 

 

 

1.5  联合查询—对结果操作

1.5.1  集合并运算

查询包含 MANAGER 和 SALESMAN 的员工信息

 

1.5.2  集合交运算

Intersect

1.5.3  集合差运算

Except

1.6  分页查询—mysql独有

 

 

2      小结

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值