语法结构: select 字段1,字段2… from 表名 order by 字段1,字段2… ASC|DESC;
升序语法: select * from 表名 order by 列名 asc;
方式(一)mysql> select * from info order by score; 方式(二)mysql> select * from info order by score asc; +----+---------+-------+-------+ | id | name | score | hobby | +----+---------+-------+-------+ | 4 | zhaoliu | 54.00 | 4 | | 10 | T1 | 58.00 | 9 | | 2 | lisi | 68.00 | 2 | | 3 | wangwu | 74.00 | 3 | | 1 | zhansan | 88.00 | 1 | | 5 | xiaoqi | 99.00 | 5 | +----+---------+-------+-------+降序语法: select * from 表名 order by 列名 desc;
mysql> select * from info order by score desc; +----+---------+-------+-------+ | id | name | score | hobby | +----+---------+-------+-------+ | 5 | xiaoqi | 99.00 | 5 | | 1 | zhansan | 88.00 | 1 | | 3 | wangwu | 74.00 | 3 | | 2 | lisi | 68.00 | 2 | | 10 | T1 | 58.00 | 9 | | 4 | zhaoliu | 54.00 | 4 | +----+---------+-------+-------+第一个字段有相同的情况,第二个字段才会进行排序。
语法: select * from 表名 条件语句 order by 列名 desc,列名 desc;
mysql> select * from info where 1=1 order by hobby desc,id desc; #where 1=1可以删去 +----+---------+-------+-------+ | id | name | score | hobby | +----+---------+-------+-------+ | 4 | zhaoliu | 54.00 | 4 | | 3 | wangwu | 74.00 | 3 | | 10 | T1 | 58.00 | 2 | | 5 | xiaoqi | 99.00 | 2 | | 2 | lisi | 68.00 | 2 | | 1 | zhansan | 88.00 | 1 | +----+---------+-------+-------+语法: select 字段,聚合函数(字段) from 表名 条件语句 group by 字段;
语法: select count(字段) as 字段名,字段 from 表名 group by 字段;
mysql> select count(name) as hob,hobby from info group by hobby; +-----+-------+ | hob | hobby | +-----+-------+ | 1 | 1 | | 3 | 2 | | 1 | 3 | | 1 | 4 | +-----+-------+select 字段1,字段2,… from 表名 limit 数字1,数字2; 注解: 位置偏移量从0开始 (3,5)从第四行开始,后五行
mysql> select * from info; +----+---------+-------+-------+ | id | name | score | hobby | +----+---------+-------+-------+ | 1 | zhansan | 88.00 | 1 | | 2 | lisi | 68.00 | 2 | | 3 | wangwu | 74.00 | 3 | | 4 | zhaoliu | 54.00 | 4 | | 5 | xiaoqi | 99.00 | 2 | | 10 | T1 | 58.00 | 2 | +----+---------+-------+-------+ mysql> select * from info limit 2,2; +----+---------+-------+-------+ | id | name | score | hobby | +----+---------+-------+-------+ | 3 | wangwu | 74.00 | 3 | | 4 | zhaoliu | 54.00 | 4 | +----+---------+-------+-------+字段设置别名: select 原字段名 as 新字段名 from 表名; #as 可省略
mysql> select name as 姓名,score as 成绩 from info; +---------+--------+ | 姓名 | 成绩 | +---------+--------+ | zhansan | 88.00 | | lisi | 68.00 | | wangwu | 74.00 | | zhaoliu | 54.00 | | xiaoqi | 99.00 | | T1 | 58.00 | +---------+--------+表设置别名: select 字段名 as 新字段名 from 原表名 as 新表名; #适用于多表
mysql> select i.name as 姓名,i.score as 成绩 from info as i; +---------+--------+ | 姓名 | 成绩 | +---------+--------+ | zhansan | 88.00 | | lisi | 68.00 | | wangwu | 74.00 | | zhaoliu | 54.00 | | xiaoqi | 99.00 | | T1 | 58.00 | +---------+--------+新表和原来表结构区别:字段的约束条件没被复制,但数值类型一样
%表示零个、一个或多个
mysql> select * from info where name like 'z%'; +----+---------+-------+-------+ | id | name | score | hobby | +----+---------+-------+-------+ | 1 | zhansan | 88.00 | 1 | | 4 | zhaoliu | 54.00 | 4 | +----+---------+-------+-------+_表示单个字符
mysql> select * from info where name like 'l_s_'; +----+------+-------+-------+ | id | name | score | hobby | +----+------+-------+-------+ | 2 | lisi | 68.00 | 2 | +----+------+-------+-------+_和%
mysql> select * from info where name like '__ao%'; +----+---------+-------+-------+ | id | name | score | hobby | +----+---------+-------+-------+ | 4 | zhaoliu | 54.00 | 4 | | 5 | xiaoqi | 99.00 | 2 | +----+---------+-------+-------+视图: 数据库中的虚拟表,这张虚拟表中不包含任何数据,只是做了数据映射;
mysql> create view v_score as select * from info where score >=80; #创建视图 mysql> select * from v_score; #查看视图信息 +----+---------+-------+-------+ | id | name | score | hobby | +----+---------+-------+-------+ | 1 | zhansan | 88.00 | 1 | | 5 | xiaoqi | 99.00 | 2 | +----+---------+-------+-------+ mysql> update info set score=66 where name='zhansan'; #修改zhansan成绩 mysql> select * from info; +----+---------+-------+-------+ | id | name | score | hobby | +----+---------+-------+-------+ | 1 | zhansan | 66.00 | 1 | | 2 | lisi | 68.00 | 2 | | 3 | wangwu | 74.00 | 3 | | 4 | zhaoliu | 54.00 | 4 | | 5 | xiaoqi | 99.00 | 2 | | 10 | T1 | 58.00 | 2 | +----+---------+-------+-------+ mysql> select * from v_score; #zhansan不在视图表中了(不满足视图表的要求了) +----+--------+-------+-------+ | id | name | score | hobby | +----+--------+-------+-------+ | 5 | xiaoqi | 99.00 | 2 | +----+--------+-------+-------+ mysql> select * from info where id in (select id from num); #前后数据类型要一致 +----+---------+-------+-------+ | id | name | score | hobby | +----+---------+-------+-------+ | 1 | zhansan | 66.00 | 1 | | 2 | lisi | 68.00 | 2 | | 4 | zhaoliu | 54.00 | 4 | +----+---------+-------+-------+ mysql> select a.id from (select id,name from info) a; #a是设置的别名 +----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 10 | +----+创建的视图表只是一个虚拟表
mysql> select count(*) from info where exists (select * from info where name='zhansan'); +----------+ | count(*) | +----------+ | 6 | +----------+ mysql> select count(*) from info where exists (select * from info where name='222'); +----------+ | count(*) | +----------+ | 0 | +----------+