SQL

1.基本查詢:SELECT *FROM <表名>
2.條件查詢:
not and or (優(yōu)先級順序)
<> 不相等
name LIKE 'ab%' 判斷相似
WHERE score >= 60 AND score <= 90 = WHERE score BETWEEN 60 AND 90
3.投影查詢:
SELECT * 查詢表的所有列
SELECT 列1, 列2, 列3 FROM ... 讓結(jié)果集僅包含指定列
SELECT 列1 別名1, 列2 別名2, 列3 別名3 FROM ... 給每列另外取別名
SELECT 列1, 列2, 列3 FROM ... WHERE......
4.排序:
ORDER BY (從低到高)
DESC(從高到低)

SELET id,name,gender,score FROM students ORDER BY score DESC,gender;
先按score 倒序,如果score相等,在按gender升序排列
默認是升序ASC,從小到大,ASC可以省略,ORDER BY score ASC 和 ORDER BY score 一樣

如果有WHERE子句,那么ORDER BY子句要放到WHERE子句后面:

SELECT id, name, gender, score
FROM students
WHERE class_id = 1
ORDER BY score DESC;
5.分頁查詢:(f分頁實際上就是從結(jié)果集中“截取”出第M~N條記錄)
LIMIT M OFFSET N
LIMIT 3 OFFSET 0

可見,分頁查詢的關(guān)鍵在于,首先要確定每頁需要顯示的結(jié)果數(shù)量pageSize(這里是3),然后根據(jù)當前頁的索引pageIndex(從1開始),確定LIMIT和OFFSET應(yīng)該設(shè)定的值:

LIMIT總是設(shè)定為pageSize;
OFFSET計算公式為pageSize * (pageIndex - 1)。
這樣就能正確查詢出第N頁的記錄集。

可簡寫:
1.LIMIT 15 相當于 LIMIT 15 OFFSET 0
2.在MySQL中,LIMIT 15 OFFSET 30還可以簡寫成LIMIT 30, 15。
3.分頁查詢需要先確定每頁的數(shù)量和當前頁數(shù),然后確定LIMIT和OFFSET的值

6.聚合查詢:
查詢表中一共有多少條記錄,用COUNT()查詢
SELECT COUNT() FROM students;
每頁3條記錄,如何通過聚合查詢獲得總頁數(shù):
SELECT CEILING(COUNT(
) / 3) FROM students;
分組聚合:GROUP BY
SELECT class_id, COUNT(*) num FROM students GROUP BY class_id;

7.多表查詢
a.SELECT查詢不但可以從一張表查詢數(shù)據(jù),還可以從多張表同時查詢數(shù)據(jù)。查詢多張表的語法是:SELECT * FROM <表1> <表2>
SELECT * FROM students, classes 兩個表行數(shù)乘積,列數(shù)之和
b.FROM子句給表設(shè)置別名的語法是FROM <表名1> <別名1>, <表名2> <別名2>。這樣我們用別名s和c分別表示students表和classes表
SELECT
s.id sid,
s.name,
s.gender,
s.score,
c.id cid,
c.name cname
FROM students s, classes c;

同時滿足條件s.gender = 'M'和c.id = 1
SELECT
s.id sid,
s.name,
s.gender,
s.score,
c.id cid,
c.name cname
FROM students s, classes c
WHERE s.gender = 'M' AND c.id = 1;

A.使用多表查詢可以獲取M x N行記錄;
B.多表查詢的結(jié)果集可能非常巨大,要小心使用
8.連接查詢:
A.SELECT s.id ,s.name,s.class_id,c.name class_name,s.gender,s.score FROM students s INNER JOIN classes c ON s.class_id =c.id
B.INNER JOIN 返回同時存在于兩張表的行數(shù)據(jù)
RIGHT OUTER JOIN 返回右表都存在的行
LEFT OUTER JOIN 返回左表都存在的行
FULL OUTER JOIN 兩張表所有記錄全部選擇出來,并且,自動把對方不存在的列填充為NULL
SELECT....FROM tableA ??? JOIN tableB ON tableA.column1 = tableB.column2

修改數(shù)據(jù):
1.添加一條記錄
INSERT INTO <表名>(字段1,字段2,。。。)VALUES(值1,值2.。。。);
2.添加二條記錄
INSERT INTO<表名>(字段1,字段2,。。。)VALUES(值1,值2.。。。),(值1,值2.。。。);
3.更新數(shù)據(jù)庫表中的記錄
UPDATE <表名> SET 字段1=值1,字段2=值2,.......WHERE .......;
例如:UPDATE students SET name='大牛', score=66 WHERE id=1;
4.一次更新N條記錄
UPDATE <表名> SET 字段1=值1,字段2=值2,.......WHERE id >=XX AND id<=XXX;
5.UPDATE可以用表達式:
UPDATE students SET score=score+10 WHERE score<80;
6.更新整個表所有的記錄:
UPDATE students SET score=60;

刪除數(shù)據(jù)庫表中的記錄(DELETE)
DELETE FROM students WHERE id =1;
一次刪除多條記錄
DELETE FROM students WHERE id>=5 AND id<=7;
刪除整個表的所有的記錄
DELETE FROM students;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容