MySQL一些常用的高级SQL语句

一、按关键字排序
1.1、使用ORDER BY语句来实现排序

1.2、排序可针对一个或多个字段

1.3、ASC:升序,默认排序方式

1.4、DESC:降序

1.5、ORDER BY的语法结构

语法:

 1 select column1,column2,... from 库名 order by column1,column,... asc|desc;
 1 语句使用
 2 mysql -uroot -p123123
 3 mysql> create database score;
 4 mysql> use score;
 5 mysql> create table test(xuehao int(6) not null primary key,nianling int(3) not null,xingming char(20) not null,chengji int(3) not null);
 6 mysql> insert into test values(201001,17,'zhangsan',60),(201002,17,'zhaoliu',95),(201003,18,'lisi',70),(201004,18,'wangwu',80),(201005,19,'tianqi',55);
 7 mysql> select * from test;
 8 
 9 升序
10 mysql> select chengji from test order by chengji asc;
11 +---------+
12 | chengji |
13 +---------+
14 |      55 |
15 |      60 |
16 |      70 |
17 |      80 |
18 |      95 |
19 +---------+
20 5 rows in set (0.00 sec)
21 mysql> select chengji from test order by chengji;     #默认是ASC
22 +---------+
23 | chengji |
24 +---------+
25 |      55 |
26 |      60 |
27 |      70 |
28 |      80 |
29 |      95 |
30 +---------+
31 5 rows in set (0.00 sec)
32 
33 降序
34 mysql> select chengji from test order by chengji desc;
35 +---------+
36 | chengji |
37 +---------+
38 |      95 |
39 |      80 |
40 |      70 |
41 |      60 |
42 |      55 |
43 +---------+
44 5 rows in set (0.00 sec)

1.6、按单字段排序

1 mysql> select xuehao,xingming,chengji from test order by chengji;
 2 +--------+----------+---------+
 3 | xuehao | xingming | chengji |
 4 +--------+----------+---------+
 5 | 201005 | tianqi   |      55 |
 6 | 201001 | zhangsan |      60 |
 7 | 201003 | lisi     |      70 |
 8 | 201004 | wangwu   |      80 |
 9 | 201002 | zhaoliu  |      95 |
10 +--------+----------+---------+
11 5 rows in set (0.00 sec)

1.7、按多字段排序

 1 mysql> select xingming,chengji from test order by nianling desc,chengji desc;
 2 +----------+---------+
 3 | xingming | chengji |
 4 +----------+---------+
 5 | tianqi   |      55 |
 6 | wangwu   |      80 |
 7 | lisi     |      70 |
 8 | zhaoliu  |      95 |
 9 | zhangsan |      60 |
10 +----------+---------+
11 5 rows in set (0.00 sec)

二、对结果进行分组
2.1、使用GROUP BY语句来实现分组

2.2、通常结合聚合函数一起使用

2.3、可以按一个或多个字段对结果进行分组

2.4、GROUP BY分组

1 mysql> insert into test values(201006,18,'zhangsan',80),(201007,19,'lisi',70);
 2 
 3 mysql> select * from test;                           
 4 +--------+----------+----------+---------+
 5 | xuehao | nianling | xingming | chengji |
 6 +--------+----------+----------+---------+
 7 | 201001 |       17 | zhangsan |      60 |
 8 | 201002 |       17 | zhaoliu  |      95 |
 9 | 201003 |       18 | lisi     |      70 |
10 | 201004 |       18 | wangwu   |      80 |
11 | 201005 |       19 | tianqi   |      55 |
12 | 201006 |       18 | zhangsan |      80 |
13 | 201007 |       19 | lisi     |      70 |
14 +--------+----------+----------+---------+
15 7 rows in set (0.00 sec)
16 
17 mysql> select count(xingming),nianling from test group by nianling;
18 +-----------------+----------+
19 | count(xingming) | nianling |
20 +-----------------+----------+
21 |               2 |       17 |
22 |               3 |       18 |
23 |               2 |       19 |
24 +-----------------+----------+
25 3 rows in set (0.00 sec)

2.2、GROUP BY结合ORDER BY

1 mysql> select count(xingming),nianling from test group by nianling order by nianling desc;
2 +-----------------+----------+
3 | count(xingming) | nianling |
4 +-----------------+----------+
5 |               2 |       19 |
6 |               3 |       18 |
7 |               2 |       17 |
8 +-----------------+----------+
9 3 rows in set (0.00 sec)

三、限制结果条目
3.1、只返回select查询结果的第一行或第几行

3.2、使用limit语句限制条目

3.3、limit语法结构

1 语法:
 2 select column1,column2,... from 库名 limit 位置偏移量 
 3 
 4 mysql> select * from test limit 3;
 5 +--------+----------+----------+---------+
 6 | xuehao | nianling | xingming | chengji |
 7 +--------+----------+----------+---------+
 8 | 201001 |       17 | zhangsan |      60 |
 9 | 201002 |       17 | zhaoliu  |      95 |
10 | 201003 |       18 | lisi     |      70 |
11 +--------+----------+----------+---------+
12 3 rows in set (0.00 sec)
13 
14 mysql> select * from test limit 3,3;
15 +--------+----------+----------+---------+
16 | xuehao | nianling | xingming | chengji |
17 +--------+----------+----------+---------+
18 | 201004 |       18 | wangwu   |      80 |
19 | 201005 |       19 | tianqi   |      55 |
20 | 201006 |       18 | zhangsan |      80 |
21 +--------+----------+----------+---------+
22 3 rows in set (0.00 sec)
23 #3,3表示从第三行开始数,显示后三行

四、设置别名
4.1、使用AS语句设置别名,关键字AS可省略

4.2、设置别名时,保证不能与库中其他表或字段名称冲突

4.3、别名的语法结构

 1 列的别名:
 2 select 列名 as 列名别名 from 库名;
 3 表的别名:
 4 select 列名 from 库名  as 库名别名;
 5 
 6 mysql> select t.xuehao as 学号,t.nianling as 年龄,t.xingming as 姓名,t.chengji as 成绩 from test as t;
 7 +--------+--------+----------+--------+
 8 | 学号   | 年龄   | 姓名     | 成绩   |
 9 +--------+--------+----------+--------+
10 | 201001 |     17 | zhangsan |     60 |
11 | 201002 |     17 | zhaoliu  |     95 |
12 | 201003 |     18 | lisi     |     70 |
13 | 201004 |     18 | wangwu   |     80 |
14 | 201005 |     19 | tianqi   |     55 |
15 | 201006 |     18 | zhangsan |     80 |
16 | 201007 |     19 | lisi     |     70 |
17 +--------+--------+----------+--------+
18 7 rows in set (0.00 sec)

4.4、as作为连接语句

1 mysql> create table test1 as select * from test;
 2 
 3 mysql> select * from test1;
 4 +--------+----------+----------+---------+
 5 | xuehao | nianling | xingming | chengji |
 6 +--------+----------+----------+---------+
 7 | 201001 |       17 | zhangsan |      60 |
 8 | 201002 |       17 | zhaoliu  |      95 |
 9 | 201003 |       18 | lisi     |      70 |
10 | 201004 |       18 | wangwu   |      80 |
11 | 201005 |       19 | tianqi   |      55 |
12 | 201006 |       18 | zhangsan |      80 |
13 | 201007 |       19 | lisi     |      70 |
14 +--------+----------+----------+---------+
15 7 rows in set (0.00 sec)

五、通配符的使用
5.1、用于替换字符串中的部分字符

5.2、通常配合like一起使用,并协同where完成查询

5.3、常用通配符

5.3.1、%:表示0个,1个或多个

5.3.2、_:表示单个字符

 1 mysql> select xuehao,xingming from test where xingming like 'z%';
 2 +--------+----------+
 3 | xuehao | xingming |
 4 +--------+----------+
 5 | 201001 | zhangsan |
 6 | 201002 | zhaoliu  |
 7 | 201006 | zhangsan |
 8 +--------+----------+
 9 3 rows in set (0.00 sec)
10 
11 mysql> select xuehao,xingming from test where xingming like 'lis_';
12 +--------+----------+
13 | xuehao | xing
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值