您的位置:首页 > 数据库 > MySQL

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: