mysql基础篇---mysql查询语句干货!!!
2016-07-07 23:38
751 查看
Mysql查询语句
一,指定查询条件
select 用来过滤字段的
from 指定从那些表中查询数据
where 用来过滤行
例子:select 一个字段或多个字段 from 表名 where 条件;
二,模糊查询 like--可以使用通配符
1,—下划线,匹配单个字符;
例子:查询名字是三个字符的人的全部信息
mysql> select 字段名1 from 表名 where 字段名1 like '___'; //三个下划线
2,% ,匹配0个或多个字符
例子:
mysql> select * from 表名 where 字段 like 'j%'; //匹配字段中以j开头的
三,分组 group by 字段名
例子: mysql> alter table score add class int;
mysql> insert into score values(5,'rose',75,85,95,2);
mysql> update score set class=1 where sno=1;
mysql> update score set class=1 where sno=3;
mysql> update score set class=2 where sno=2 or sno=4;
mysql> select * from score;
+------+-------+------+------+------+-------+
| sno | sname | ule | ula | uoa | class |
+------+-------+------+------+------+-------+
| 1 | tom | 70 | 80 | 90 | 1 |
| 2 | mary | 55 | 75 | 65 | 2 |
| 3 | jack | 75 | 45 | 95 | 1 |
| 4 | mike | 90 | 100 | 86 | 2 |
| 5 | rose | 75 | 85 | 95 | 2 |
+------+-------+------+------+------+-------+
显示每个班的ule的总成绩和平均成绩
mysql> select class,sum(ule),avg(ule) from score group by class;
注意:group by 里面带条件的话,不能使用where;可以与having连用
显示班级人数大于2的班级的ule的总成绩和平均成绩
mysql> select class,sum(ule),avg(ule) from score group by class having count(*)>2;
+-------+----------+----------+
| class | sum(ule) | avg(ule) |
+-------+----------+----------+
| 2 | 220 | 73.3333 |
+-------+----------+----------+
1 row in set (0.00 sec)
四、排序 order by
order by 字段名[,字段名2,......] [asc|desc]
asc:升序,默认的排序方式 ascend:上升的
desc:降序 descend:下降的
按照ule的成绩由低到高的顺序显示学生姓名及ule成绩
mysql> select sname,ule from score order by ule;
按照ule的成绩由高到低的顺序显示学生姓名及ule成绩
mysql> select sname,ule from score order by ule desc;
+-------+------+
| sname | ule |
+-------+------+
| mike | 90 |
| jack | 75 |
| rose | 75 |
| tom | 70 |
| mary | 55 |
+-------+------+
5 rows in set (0.00 sec)
order by 编号
mysql> select sname,ule from score order by 2 desc;
order by 多个字段
按照ule成绩排序,如果成绩相同,按照名字的倒序排序
mysql> select sname,ule from score order by ule,sname desc;
按照ule成绩倒序排序,如果成绩相同,按照名字的倒序排序
mysql> select sname,ule from score order by ule desc,sname desc;
五、限制输出 limit
limit n 只显示查询结果的前n条
显示ule成绩前3名的学生姓名及ule成绩
mysql> select sname,ule from score order by ule desc limit 3;
+-------+------+
| sname | ule |
+-------+------+
| mike | 90 |
| jack | 75 |
| rose | 75 |
+-------+------+
3 rows in set (0.00 sec)
limit m,n 从m+1行开始,显示n行
mysql> select sname,ule from score limit 2,2; //显示第3行和第4行
六、子查询
也叫嵌套查询,将里层查询的结果作为外层查询的条件
查询ula成绩最高的人的学号,姓名以及ula的成绩
mysql> select sno,sname,ula from score where ula=(select max(ula) from score);
+------+-------+------+
| sno | sname | ula |
+------+-------+------+
| 4 | mike | 100 |
+------+-------+------+
1 row in set (0.00 sec)
小结:
1、select关键字的顺序
-----------------------------------------------------------------------------------
关键字 功能 是否必须
-----------------------------------------------------------------------------------
select 过滤要返回的列或者是表达式 是
-----------------------------------------------------------------------------------
from 要搜索的表 仅当需要从表中检索数据时使用
-----------------------------------------------------------------------------------
where 过滤行 否
-----------------------------------------------------------------------------------
group by 分组 仅当按组做聚合运算的时候使用
-----------------------------------------------------------------------------------
having 组级过滤(与group by连用) 否
-----------------------------------------------------------------------------------
order by 排序 否
-----------------------------------------------------------------------------------
limit 限制输出的行 否
-----------------------------------------------------------------------------------
2、SQL语句的执行顺序如下:
from where (group by) having select (order by) limit
一,指定查询条件
select 用来过滤字段的
from 指定从那些表中查询数据
where 用来过滤行
例子:select 一个字段或多个字段 from 表名 where 条件;
二,模糊查询 like--可以使用通配符
1,—下划线,匹配单个字符;
例子:查询名字是三个字符的人的全部信息
mysql> select 字段名1 from 表名 where 字段名1 like '___'; //三个下划线
2,% ,匹配0个或多个字符
例子:
mysql> select * from 表名 where 字段 like 'j%'; //匹配字段中以j开头的
三,分组 group by 字段名
例子: mysql> alter table score add class int;
mysql> insert into score values(5,'rose',75,85,95,2);
mysql> update score set class=1 where sno=1;
mysql> update score set class=1 where sno=3;
mysql> update score set class=2 where sno=2 or sno=4;
mysql> select * from score;
+------+-------+------+------+------+-------+
| sno | sname | ule | ula | uoa | class |
+------+-------+------+------+------+-------+
| 1 | tom | 70 | 80 | 90 | 1 |
| 2 | mary | 55 | 75 | 65 | 2 |
| 3 | jack | 75 | 45 | 95 | 1 |
| 4 | mike | 90 | 100 | 86 | 2 |
| 5 | rose | 75 | 85 | 95 | 2 |
+------+-------+------+------+------+-------+
显示每个班的ule的总成绩和平均成绩
mysql> select class,sum(ule),avg(ule) from score group by class;
注意:group by 里面带条件的话,不能使用where;可以与having连用
显示班级人数大于2的班级的ule的总成绩和平均成绩
mysql> select class,sum(ule),avg(ule) from score group by class having count(*)>2;
+-------+----------+----------+
| class | sum(ule) | avg(ule) |
+-------+----------+----------+
| 2 | 220 | 73.3333 |
+-------+----------+----------+
1 row in set (0.00 sec)
四、排序 order by
order by 字段名[,字段名2,......] [asc|desc]
asc:升序,默认的排序方式 ascend:上升的
desc:降序 descend:下降的
按照ule的成绩由低到高的顺序显示学生姓名及ule成绩
mysql> select sname,ule from score order by ule;
按照ule的成绩由高到低的顺序显示学生姓名及ule成绩
mysql> select sname,ule from score order by ule desc;
+-------+------+
| sname | ule |
+-------+------+
| mike | 90 |
| jack | 75 |
| rose | 75 |
| tom | 70 |
| mary | 55 |
+-------+------+
5 rows in set (0.00 sec)
order by 编号
mysql> select sname,ule from score order by 2 desc;
order by 多个字段
按照ule成绩排序,如果成绩相同,按照名字的倒序排序
mysql> select sname,ule from score order by ule,sname desc;
按照ule成绩倒序排序,如果成绩相同,按照名字的倒序排序
mysql> select sname,ule from score order by ule desc,sname desc;
五、限制输出 limit
limit n 只显示查询结果的前n条
显示ule成绩前3名的学生姓名及ule成绩
mysql> select sname,ule from score order by ule desc limit 3;
+-------+------+
| sname | ule |
+-------+------+
| mike | 90 |
| jack | 75 |
| rose | 75 |
+-------+------+
3 rows in set (0.00 sec)
limit m,n 从m+1行开始,显示n行
mysql> select sname,ule from score limit 2,2; //显示第3行和第4行
六、子查询
也叫嵌套查询,将里层查询的结果作为外层查询的条件
查询ula成绩最高的人的学号,姓名以及ula的成绩
mysql> select sno,sname,ula from score where ula=(select max(ula) from score);
+------+-------+------+
| sno | sname | ula |
+------+-------+------+
| 4 | mike | 100 |
+------+-------+------+
1 row in set (0.00 sec)
小结:
1、select关键字的顺序
-----------------------------------------------------------------------------------
关键字 功能 是否必须
-----------------------------------------------------------------------------------
select 过滤要返回的列或者是表达式 是
-----------------------------------------------------------------------------------
from 要搜索的表 仅当需要从表中检索数据时使用
-----------------------------------------------------------------------------------
where 过滤行 否
-----------------------------------------------------------------------------------
group by 分组 仅当按组做聚合运算的时候使用
-----------------------------------------------------------------------------------
having 组级过滤(与group by连用) 否
-----------------------------------------------------------------------------------
order by 排序 否
-----------------------------------------------------------------------------------
limit 限制输出的行 否
-----------------------------------------------------------------------------------
2、SQL语句的执行顺序如下:
from where (group by) having select (order by) limit
相关文章推荐
- mysql-2
- MySql基本命令
- win7环境mysql安装
- 2016/7/7 设置wamp2.5 mysql密码 重点是mysql版本
- MySQL存储引擎的区别
- session数据存入mysql
- Ubuntu 下安装mysql
- Mysql基础篇---运算符和函数
- 外键约束
- mysql单表多次自关联查询
- mysql 数学函数
- MySQL DATE_FORMAT()函数的使用
- mysql命令大全(订正版)
- 性能优化之mysql索引优化
- mysql 根据某些字段之和排序
- mysql 源码--xpchild
- Mysql学习总结(20)——MySQL数据库优化的最佳实践
- Mysql学习总结(20)——MySQL数据库优化的最佳实践
- mysql索引
- mysql压缩版安装 修改默认字符集