目錄
Create
insert
插入跟新 1
插入跟新 2
Retrive
select
where 子句查詢
1.查找數(shù)學(xué)成績(jī)小于 80 的同學(xué)。
2.查詢數(shù)學(xué)成績(jī)等于90分的同學(xué)。
3.查詢總分大于240 的學(xué)生
4.查詢空值或者非空值
5.查詢語文成績(jī)?cè)?0~80之間的同學(xué)
6.查詢英語成績(jī)是99 和 93 和 19 和 30
7.模糊匹配
排序
LIMIT
mysql 的基本操作就是:CURD
-
Create(創(chuàng)建)
-
Retrive(讀?。?/p>
-
Update(跟新)
-
Delete(刪除)
Create
insert
這里就對(duì)應(yīng)的是表數(shù)據(jù)的操作,而不是表結(jié)構(gòu)的操作,這里的 create 也表示的是插入也就是 insert
insert [into]
table_name [(column, ...)]
values(value_list), [(value_list)], ...
value_list: value, [value, ][... ,]
上面就是插入的語法,還是直接看一下插入示例:
mysql> create table exam_result(
? -> id int primary key auto_increment,
? -> name varchar(12) not null,
? -> chinese tinyint unsigned,
? -> math tinyint unsigned,
? -> engilsh tinyint unsigned
? -> );
Query OK, 0 rows affected (0.01 sec)
?
mysql> desc exam_result;
+---------+---------------------+------+-----+---------+----------------+
| Field ? | Type ? ? ? ? ? ? ? | Null | Key | Default | Extra ? ? ? ? |
+---------+---------------------+------+-----+---------+----------------+
| id ? ? | int(11) ? ? ? ? ? ? | NO ? | PRI | NULL ? | auto_increment |
| name ? | varchar(12) ? ? ? ? | NO ? | ? ? | NULL ? | ? ? ? ? ? ? ? |
| chinese | tinyint(3) unsigned | YES | ? ? | NULL ? | ? ? ? ? ? ? ? |
| math ? | tinyint(3) unsigned | YES | ? ? | NULL ? | ? ? ? ? ? ? ? |
| engilsh | tinyint(3) unsigned | YES | ? ? | NULL ? | ? ? ? ? ? ? ? |
+---------+---------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
上面是創(chuàng)建一張表,考試成績(jī)表,下面插入數(shù)據(jù):
首先介紹一下語法:
-
into 是可以有也可以沒有,但是為了語法的完整性,還是帶上比較好。
-
表名后面跟的是想要插入的列名,如果沒有寫表示全列插入。
-
values 后面表示要插入的值,插入值的順序要和表明后面的順序相同,如果沒有寫,那么就要按照表里面的值的順序來插入。
-
插入不僅可以插入一行記錄,也可以插入多行記錄,插入插入多行數(shù)據(jù)的話要用逗號(hào)隔開。
mysql> insert into exam_result (id, name, chinese, math, english) values (1, '林黛玉', 98, 90, 99);
Query OK, 1 row affected (0.00 sec)
?
mysql> select * from exam_result;
+----+-----------+---------+------+---------+
| id | name ? ? | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 林黛玉 ? | ? ? 98 | ? 90 | ? ? 99 |
+----+-----------+---------+------+---------+
1 row in set (0.00 sec)
上面沒有省略,插入成功,下面我們省略表明后面的列名,全列插入:
mysql> insert into exam_result values (2, '沙和尚', 77, 87, 72);
Query OK, 1 row affected (0.00 sec)
?
mysql> select * from exam_result;
+----+-----------+---------+------+---------+
| id | name ? ? | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 林黛玉 ? | ? ? 98 | ? 90 | ? ? 99 |
| 2 | 沙和尚 ? | ? ? 77 | ? 87 | ? ? 72 |
+----+-----------+---------+------+---------+
2 rows in set (0.00 sec)
全列插入就不能省略,這個(gè)也插入成功了,下面試一下全列插入:
mysql> insert into exam_result(name, chinese, math, english) values ('薛寶釵', 88, 90, 88), ('趙姨娘', 79, 90, 93), ('唐三藏', 72, 60, 56);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
?
mysql> select * from exam_result;
+----+-----------+---------+------+---------+
| id | name ? ? | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 林黛玉 ? | ? ? 98 | ? 90 | ? ? 99 |
| 2 | 沙和尚 ? | ? ? 77 | ? 87 | ? ? 72 |
| 3 | 薛寶釵 ? | ? ? 88 | ? 90 | ? ? 88 |
| 4 | 趙姨娘 ? | ? ? 79 | ? 90 | ? ? 93 |
| 5 | 唐三藏 ? | ? ? 72 | ? 60 | ? ? 56 |
+----+-----------+---------+------+---------+
5 rows in set (0.00 sec)
上面就插入完成了。
插入跟新 1
insert ... on duplicate key update 列名 = value, ...
再插入了之后有可能會(huì)插入失敗,也就是里面的唯一鍵或者主鍵有重復(fù)等情況所以如果有重復(fù)插入失敗的話就跟新里面的值。
mysql> insert into exam_result values (2, '沙和尚', 77, 87, 72) on duplicate key update id = 6, name = '沙悟凈', chinese = 77, math = 87, english = 72;
Query OK, 2 rows affected (0.00 sec)
?
mysql> select * from exam_result;
+----+-----------+---------+------+---------+
| id | name ? ? | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 林黛玉 ? | ? ? 98 | ? 90 | ? ? 99 |
| 3 | 薛寶釵 ? | ? ? 88 | ? 90 | ? ? 88 |
| 4 | 趙姨娘 ? | ? ? 79 | ? 90 | ? ? 93 |
| 5 | 唐三藏 ? | ? ? 72 | ? 60 | ? ? 56 |
| 6 | 沙悟凈 ? | ? ? 77 | ? 87 | ? ? 72 |
+----+-----------+---------+------+---------+
5 rows in set (0.00 sec)
而跟新后的值也是自己設(shè)定的。
插入跟新 2
mysql> replace into exam_result (id, name, chinese, math, english) values(7, '白龍馬', 90, 46, 50);
Query OK, 1 row affected (0.00 sec)
?
mysql> select * from exam_result;
+----+-----------+---------+------+---------+
| id | name ? ? | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 林黛玉 ? | ? ? 98 | ? 90 | ? ? 99 |
| 3 | 薛寶釵 ? | ? ? 88 | ? 90 | ? ? 88 |
| 4 | 趙姨娘 ? | ? ? 79 | ? 90 | ? ? 93 |
| 5 | 唐三藏 ? | ? ? 72 | ? 60 | ? ? 56 |
| 6 | 沙悟凈 ? | ? ? 77 | ? 87 | ? ? 72 |
| 7 | 白龍馬 ? | ? ? 90 | ? 46 | ? ? 50 |
+----+-----------+---------+------+---------+
6 rows in set (0.00 sec)
這個(gè)語法就是如果沒有重復(fù)那么就是插入,如果有重復(fù)就講重復(fù)替換。
下面看一下重復(fù)后替換:
mysql> replace into exam_result (id, name, chinese, math, english) values(7, '小白龍', 99, 20, 19);
Query OK, 2 rows affected (0.00 sec)
mysql> select * from exam_result;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 林黛玉 | 98 | 90 | 99 |
| 3 | 薛寶釵 | 88 | 90 | 88 |
| 4 | 趙姨娘 | 79 | 90 | 93 |
| 5 | 唐三藏 | 72 | 60 | 56 |
| 6 | 沙悟凈 | 77 | 87 | 72 |
| 7 | 小白龍 | 99 | 20 | 19 |
+----+-----------+---------+------+---------+
6 rows in set (0.00 sec)
下面就是重復(fù)后替換。
Retrive
select
select 是mysql 里面最常用的一個(gè),下面看一下查詢。
查詢?nèi)繑?shù)據(jù):
select [表達(dá)式][列名] from table_name;
簡(jiǎn)單查詢的語法下面看一下:
mysql> select * from exam_result;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 林黛玉 | 98 | 90 | 99 |
| 3 | 薛寶釵 | 88 | 90 | 88 |
| 4 | 趙姨娘 | 79 | 90 | 93 |
| 5 | 唐三藏 | 72 | 60 | 56 |
| 6 | 沙悟凈 | 77 | 87 | 72 |
| 7 | 小白龍 | 99 | 20 | 19 |
+----+-----------+---------+------+---------+
6 rows in set (0.00 sec)
想要查詢所有的數(shù)據(jù)就是 select * ,但是如果數(shù)據(jù)庫(kù)里面數(shù)據(jù)量太大的話, select * 傳輸?shù)臄?shù)據(jù)太大,所以不適合 select * 查詢,但是如果在自己的數(shù)據(jù)庫(kù)里面,那么就是無所謂的。
select 不光能查詢表里面的數(shù)據(jù),還可以在后面輸入表達(dá)式:
mysql> select 1 + 1;
+-------+
| 1 + 1 |
+-------+
| 2 |
+-------+
1 row in set (0.00 sec)
mysql> select NULL;
+------+
| NULL |
+------+
| NULL |
+------+
1 row in set (0.00 sec)
mysql> select database();
+------------+
| database() |
+------------+
| CURD |
+------------+
1 row in set (0.00 sec)
select 后面還可以跟函數(shù)。
下面看一下select 查詢表里面的數(shù)據(jù):
mysql> select id, name, chinese, math, english from exam_result;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 林黛玉 | 98 | 90 | 99 |
| 3 | 薛寶釵 | 88 | 90 | 88 |
| 4 | 趙姨娘 | 79 | 90 | 93 |
| 5 | 唐三藏 | 72 | 60 | 56 |
| 6 | 沙悟凈 | 77 | 87 | 72 |
| 7 | 小白龍 | 99 | 20 | 19 |
+----+-----------+---------+------+---------+
6 rows in set (0.00 sec)
也可以這樣查詢表里面的數(shù)據(jù),也可以改變查詢的內(nèi)容:
mysql> select name, id from exam_result;
+-----------+----+
| name | id |
+-----------+----+
| 林黛玉 | 1 |
| 薛寶釵 | 3 |
| 趙姨娘 | 4 |
| 唐三藏 | 5 |
| 沙悟凈 | 6 |
| 小白龍 | 7 |
+-----------+----+
6 rows in set (0.01 sec)
既然 select 后面可以計(jì)算,那么也可以計(jì)算,下面可以算一下他們的總分:
mysql> select name, chinese, math, english, chinese+math+english from exam_result;
+-----------+---------+------+---------+----------------------+
| name | chinese | math | english | chinese+math+english |
+-----------+---------+------+---------+----------------------+
| 林黛玉 | 98 | 90 | 99 | 287 |
| 薛寶釵 | 88 | 90 | 88 | 266 |
| 趙姨娘 | 79 | 90 | 93 | 262 |
| 唐三藏 | 72 | 60 | 56 | 188 |
| 沙悟凈 | 77 | 87 | 72 | 236 |
| 小白龍 | 99 | 20 | 19 | 138 |
+-----------+---------+------+---------+----------------------+
6 rows in set (0.00 sec)
但是這里看到輸出出來的數(shù)據(jù)不好看,其實(shí) myslq 也可以重命名的:
... as new_name
mysql> select name, chinese, math, english, chinese+math+english as 總分 from exam_result;
+-----------+---------+------+---------+--------+
| name | chinese | math | english | 總分 |
+-----------+---------+------+---------+--------+
| 林黛玉 | 98 | 90 | 99 | 287 |
| 薛寶釵 | 88 | 90 | 88 | 266 |
| 趙姨娘 | 79 | 90 | 93 | 262 |
| 唐三藏 | 72 | 60 | 56 | 188 |
| 沙悟凈 | 77 | 87 | 72 | 236 |
| 小白龍 | 99 | 20 | 19 | 138 |
+-----------+---------+------+---------+--------+
6 rows in set (0.00 sec)
除了上面的 as 重命名,其實(shí)也可以不帶 as 直接空格也可以:
mysql> select name, chinese, math, english, chinese+math+english 總分 from exam_result;
+-----------+---------+------+---------+--------+
| name | chinese | math | english | 總分 |
+-----------+---------+------+---------+--------+
| 林黛玉 | 98 | 90 | 99 | 287 |
| 薛寶釵 | 88 | 90 | 88 | 266 |
| 趙姨娘 | 79 | 90 | 93 | 262 |
| 唐三藏 | 72 | 60 | 56 | 188 |
| 沙悟凈 | 77 | 87 | 72 | 236 |
| 小白龍 | 99 | 20 | 19 | 138 |
+-----------+---------+------+---------+--------+
6 rows in set (0.00 sec)
where 子句查詢
select 查詢除了可以查詢表里面的數(shù)據(jù),還可以篩選,而 where 就可以篩選。
where 既然可以篩選,那么也可以有判斷,下面看一下 where 后面跟些判斷的內(nèi)容。
運(yùn)算符 | 說明 |
---|---|
>, >=, <, <= | 大于,大于等于,小于,小于等于 |
= | 等于,NULL 不安全,例如 NULL = NULL 的結(jié)果是 NULL |
<=> | 等于,NULL 安全,例如 NULL <=> NULL 的結(jié)果是 TRUE(1) |
!=, <> | 不等于 |
BETWEEN a and b | 范圍匹配,[a0,a1],如果 a0 <= value <= a1,返回 TRUE(1) |
IN (option) | 如果是 option 中的任意一個(gè),返回 TRUE(1) |
IS NULL | 是 NULL |
IS NOT NULL | 不是 NULL |
LIKE | 模糊匹配。% 表示任意多個(gè) (包括 0 個(gè)) 任意字符,_表示任意一個(gè)字符 |
運(yùn)算符 | 說明 |
---|---|
AND | 多個(gè)條件必須都為 TRUE()1結(jié)果才是 TRUE(1) |
OR | 任意一個(gè)條件為 TRUE1), 結(jié)果為 TRUE(1) |
NOT | 條件為 TRUE(1),結(jié)果為 FALSE(0) |
上面就是 where 后面可以跟的運(yùn)算符。
根據(jù)下面的表來看一下運(yùn)算符:
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 林黛玉 | 98 | 90 | 99 |
| 3 | 薛寶釵 | 88 | 90 | 88 |
| 4 | 趙姨娘 | 79 | 90 | 93 |
| 5 | 唐三藏 | 72 | 60 | 56 |
| 6 | 沙悟凈 | 77 | 87 | 72 |
| 7 | 小白龍 | 99 | 20 | 19 |
+----+-----------+---------+------+---------+
1.查找數(shù)學(xué)成績(jī)小于 80 的同學(xué)。
mysql> select name, math from exam_result where math<90;
+-----------+------+
| name | math |
+-----------+------+
| 唐三藏 | 60 |
| 沙悟凈 | 87 |
| 小白龍 | 20 |
+-----------+------+
3 rows in set (0.00 sec)
上面就查詢到了數(shù)學(xué)小于90分的同學(xué)。
2.查詢數(shù)學(xué)成績(jī)等于90分的同學(xué)。
mysql> select name, math from exam_result where math=90;
+-----------+------+
| name | math |
+-----------+------+
| 林黛玉 | 90 |
| 薛寶釵 | 90 |
| 趙姨娘 | 90 |
+-----------+------+
3 rows in set (0.00 sec)
上面看到 = 顯示 NULL 不安全,= 不能查詢 NULL,下面看一下:
3.查詢總分大于240 的學(xué)生
mysql> select name, chinese+english+math from exam_result where chinese+english+math > 240;
+-----------+----------------------+
| name | chinese+english+math |
+-----------+----------------------+
| 林黛玉 | 287 |
| 薛寶釵 | 266 |
| 趙姨娘 | 262 |
+-----------+----------------------+
3 rows in set (0.00 sec)
雖然查詢出來了,但是上面的寫法太難看了,我們可以使用重命名:
mysql> select name, chinese+english+math 總分 from exam_result where chinese+english+math > 240;
+-----------+--------+
| name | 總分 |
+-----------+--------+
| 林黛玉 | 287 |
| 薛寶釵 | 266 |
| 趙姨娘 | 262 |
+-----------+--------+
3 rows in set (0.00 sec)
這樣寫就好多了,但是后面 where 這樣寫也有點(diǎn)長(zhǎng)罵我們可不可以用 重命名:
mysql> select name, chinese+english+math 總分 from exam_result where 總分 > 240;
ERROR 1054 (42S22): Unknown column '總分' in 'where clause'
這里顯示不認(rèn)識(shí) “總分”為什么?
這里其實(shí)是因?yàn)閙ysql 的執(zhí)行是有順序的,如果我們想要查詢得到的數(shù)據(jù),書不是先要有數(shù)據(jù),也就是有表,有了表之后我們還要對(duì)數(shù)據(jù)進(jìn)行篩選也就是 where 等篩選之后才可以講數(shù)據(jù)得到然后在顯示出來,所以說 where 一定在顯示重命名之前,所以數(shù)據(jù)還沒有重命名然后就被拿來當(dāng)篩選,那么當(dāng)然是不認(rèn)識(shí)的,那么我們能不能在 where 處之間重命名然后在前面使用?
mysql> select name, 總分 from exam_result where chinese+english+math 總分 > 240;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '總分 > 240' at line 1
這樣也是不可以的,因?yàn)榕c發(fā)出規(guī)定 where 后面不能重命名。
所以我們?cè)趯?sql 語句的時(shí)候一定要注意其執(zhí)行順序,否則就是一條錯(cuò)誤的 sql 語句。
4.查詢空值或者非空值
下面重新創(chuàng)建一個(gè)表插入一些空值:
mysql> create table test_null(
-> id int,
-> name varchar(12));
Query OK, 0 rows affected (0.01 sec)
mysql> desc test_null;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(12) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
下面插入數(shù)據(jù),插入部分空值:
mysql> insert into test_null(id, name) values(1, '張三');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test_null(id, name) values(null, '李四');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test_null(id, name) values(3, null);
Query OK, 1 row affected (0.00 sec)
mysql> select * from test_null;
+------+--------+
| id | name |
+------+--------+
| 1 | 張三 |
| NULL | 李四 |
| 3 | NULL |
+------+--------+
3 rows in set (0.00 sec)
下面測(cè)試 = NULL:
mysql> select * from test_null where name=NULL;
Empty set (0.00 sec)
mysql> select * from test_null where id=null;
Empty set (0.00 sec)
上面兩個(gè)查詢都沒有查詢到結(jié)果,想要查詢的NULL 的話可以使用 <=>
mysql> select * from test_null where id<=>null;
+------+--------+
| id | name |
+------+--------+
| NULL | 李四 |
+------+--------+
1 row in set (0.00 sec)
mysql> select * from test_null where name<=>null;
+------+------+
| id | name |
+------+------+
| 3 | NULL |
+------+------+
1 row in set (0.00 sec)
這樣就查詢到了,下面要是查詢不為空的呢?能不能用 !=(不等于):
mysql> select * from test_null where name != null;
Empty set (0.00 sec)
mysql> select * from test_null where id != null;
Empty set (0.00 sec)
上面都沒有查詢到,其實(shí)查詢不為空的話可以使用 <>:
但是其實(shí)查詢 null 或者不為 null 還是喜歡用 is null 或者是 is not null:
mysql> select * from test_null where name is null;
+------+------+
| id | name |
+------+------+
| 3 | NULL |
+------+------+
1 row in set (0.00 sec)
mysql> select * from test_null where name is not null;
+------+--------+
| id | name |
+------+--------+
| 1 | 張三 |
| NULL | 李四 |
+------+--------+
2 rows in set (0.00 sec)
5.查詢語文成績(jī)?cè)?0~80之間的同學(xué)
mysql> select name, chinese from exam_result where chinese between 70 and 80;
+-----------+---------+
| name | chinese |
+-----------+---------+
| 趙姨娘 | 79 |
| 唐三藏 | 72 |
| 沙悟凈 | 77 |
+-----------+---------+
3 rows in set (0.00 sec)
6.查詢英語成績(jī)是99 和 93 和 19 和 30
mysql> select name, english from exam_result where english=99 or english=93 or english=19 or english=30;
+-----------+---------+
| name | english |
+-----------+---------+
| 林黛玉 | 99 |
| 趙姨娘 | 93 |
| 小白龍 | 19 |
+-----------+---------+
3 rows in set (0.00 sec)
除了上面的方法還有一種方法:
mysql> select name, english from exam_result where english in (99, 93, 19, 30);
+-----------+---------+
| name | english |
+-----------+---------+
| 林黛玉 | 99 |
| 趙姨娘 | 93 |
| 小白龍 | 19 |
+-----------+---------+
3 rows in set (0.00 sec)
下面的這個(gè)看起更好一點(diǎn)。
7.模糊匹配
%可以表示任意一個(gè)或者多個(gè)字符,_表示任意一個(gè)字符。
查詢名字叫黛玉的:
mysql> select id, name from exam_result where name like '_黛玉';
+----+-----------+
| id | name |
+----+-----------+
| 1 | 林黛玉 |
+----+-----------+
1 row in set (0.00 sec)
上面就是匹配任意一個(gè)字符,下面看一下匹配任意字符。
查詢名字里面有“三” 的:
mysql> select id, name from exam_result where name like '%三%';
+----+-----------+
| id | name |
+----+-----------+
| 5 | 唐三藏 |
+----+-----------+
1 row in set (0.00 sec)
排序
有時(shí)候我們需要對(duì)查詢出來的數(shù)據(jù)進(jìn)行排序,我們現(xiàn)在查詢一下總分的排序:
mysql> select *, chinese+math+english from exam_result order by chinese+english+math;
+----+-----------+---------+------+---------+----------------------+
| id | name | chinese | math | english | chinese+math+english |
+----+-----------+---------+------+---------+----------------------+
| 7 | 小白龍 | 99 | 20 | 19 | 138 |
| 5 | 唐三藏 | 72 | 60 | 56 | 188 |
| 6 | 沙悟凈 | 77 | 87 | 72 | 236 |
| 4 | 趙姨娘 | 79 | 90 | 93 | 262 |
| 3 | 薛寶釵 | 88 | 90 | 88 | 266 |
| 1 | 林黛玉 | 98 | 90 | 99 | 287 |
+----+-----------+---------+------+---------+----------------------+
6 rows in set (0.00 sec)
我們上面這樣寫太繁瑣了,我們可不可以使用重命名?
mysql> select *, chinese+math+english 總分 from exam_result order by 總分;
+----+-----------+---------+------+---------+--------+
| id | name | chinese | math | english | 總分 |
+----+-----------+---------+------+---------+--------+
| 7 | 小白龍 | 99 | 20 | 19 | 138 |
| 5 | 唐三藏 | 72 | 60 | 56 | 188 |
| 6 | 沙悟凈 | 77 | 87 | 72 | 236 |
| 4 | 趙姨娘 | 79 | 90 | 93 | 262 |
| 3 | 薛寶釵 | 88 | 90 | 88 | 266 |
| 1 | 林黛玉 | 98 | 90 | 99 | 287 |
+----+-----------+---------+------+---------+--------+
6 rows in set (0.00 sec)
這里又可以使用總分了,但是前面 where 不可以使用總分,為什么?
還是執(zhí)行順序的問題,首先我們要排序是不是要前面的數(shù)據(jù)都準(zhǔn)備好了才進(jìn)行排序,也就是說排序在重命名的后面,所以既然已經(jīng)又重命名了所以排序就可以使用重命名。
我們看到上面的排序都是降序那么怎樣可以讓其升序呢?
order by 列名 ASC 降序 默認(rèn)
desc 升序
下面可以試一下:
mysql> select *, chinese+math+english 總分 from exam_result order by 總分 ASC;
+----+-----------+---------+------+---------+--------+
| id | name | chinese | math | english | 總分 |
+----+-----------+---------+------+---------+--------+
| 7 | 小白龍 | 99 | 20 | 19 | 138 |
| 5 | 唐三藏 | 72 | 60 | 56 | 188 |
| 6 | 沙悟凈 | 77 | 87 | 72 | 236 |
| 4 | 趙姨娘 | 79 | 90 | 93 | 262 |
| 3 | 薛寶釵 | 88 | 90 | 88 | 266 |
| 1 | 林黛玉 | 98 | 90 | 99 | 287 |
+----+-----------+---------+------+---------+--------+
6 rows in set (0.00 sec)
mysql> select *, chinese+math+english 總分 from exam_result order by 總分 DESC;
+----+-----------+---------+------+---------+--------+
| id | name | chinese | math | english | 總分 |
+----+-----------+---------+------+---------+--------+
| 1 | 林黛玉 | 98 | 90 | 99 | 287 |
| 3 | 薛寶釵 | 88 | 90 | 88 | 266 |
| 4 | 趙姨娘 | 79 | 90 | 93 | 262 |
| 6 | 沙悟凈 | 77 | 87 | 72 | 236 |
| 5 | 唐三藏 | 72 | 60 | 56 | 188 |
| 7 | 小白龍 | 99 | 20 | 19 | 138 |
+----+-----------+---------+------+---------+--------+
6 rows in set (0.00 sec)
LIMIT
在 mysql 查詢的時(shí)候其實(shí)防止一次性查出來的數(shù)據(jù)太多還有一個(gè) limit 可以讓數(shù)據(jù)可以分多次打印。
下面看一下 limit 的使用:
mysql> select * from exam_result limit 1;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 林黛玉 | 98 | 90 | 99 |
+----+-----------+---------+------+---------+
1 row in set (0.00 sec)
mysql> select * from exam_result limit 3;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 林黛玉 | 98 | 90 | 99 |
| 3 | 薛寶釵 | 88 | 90 | 88 |
| 4 | 趙姨娘 | 79 | 90 | 93 |
+----+-----------+---------+------+---------+
3 rows in set (0.00 sec)
其實(shí) limit 還可以打印中間的內(nèi)容:
mysql> select * from exam_result limit 0,3;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 林黛玉 | 98 | 90 | 99 |
| 3 | 薛寶釵 | 88 | 90 | 88 |
| 4 | 趙姨娘 | 79 | 90 | 93 |
+----+-----------+---------+------+---------+
3 rows in set (0.00 sec)
mysql> select * from exam_result limit 3,3;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 5 | 唐三藏 | 72 | 60 | 56 |
| 6 | 沙悟凈 | 77 | 87 | 72 |
| 7 | 小白龍 | 99 | 20 | 19 |
+----+-----------+---------+------+---------+
3 rows in set (0.00 sec)
還可以給兩個(gè)數(shù)字,前面的表示從第一個(gè)數(shù)字的下一行開始打印,第二個(gè)數(shù)字表示打印幾行。
limit 還可以結(jié)合 offset 使用:文章來源:http://www.zghlxwxcb.cn/news/detail-689060.html
mysql> select * from exam_result limit 3 offset 0;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 林黛玉 | 98 | 90 | 99 |
| 3 | 薛寶釵 | 88 | 90 | 88 |
| 4 | 趙姨娘 | 79 | 90 | 93 |
+----+-----------+---------+------+---------+
3 rows in set (0.00 sec)
mysql> select * from exam_result limit 3 offset 1;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 3 | 薛寶釵 | 88 | 90 | 88 |
| 4 | 趙姨娘 | 79 | 90 | 93 |
| 5 | 唐三藏 | 72 | 60 | 56 |
+----+-----------+---------+------+---------+
3 rows in set (0.00 sec)
也可以讓 limit 后面跟一個(gè)數(shù)字,然后加 offset 后面跟一個(gè)數(shù)字,其中 limit 后面的數(shù)字代表打印幾行, offset 后面的數(shù)字代表從第幾行開始打印。文章來源地址http://www.zghlxwxcb.cn/news/detail-689060.html
到了這里,關(guān)于MySQL 基本操作1的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!