??????🔥個人主頁:尋星探路
🎬作者簡介:Java研發方向學習者
📖個人專欄:《從青銅到王者,就差這講數據結構!!!》、?《JAVA(SE)----如此簡單!!!》、《數據庫那些事!!!》
??人生格言:沒有人生來就會編程,但我生來倔強!!!
目錄
一、Retrieve 檢索
?1、分頁查詢
1.1語法
1.2示例
?二、Update修改
1、語法
2、示例
三、Delete 刪除
1、語法
2、示例
四、截斷表
1、語法
2、示例
3、Truncate注意事項
續接上一話:
一、Retrieve 檢索
?1、分頁查詢
? ? ? ? 當我們在瀏覽器上搜索某個內容時,會有很多的搜索結果,這些結果都給用戶也看不完,就不如用分頁的模式一部分一部分的進行展示!!!
1.1語法
-- 起始下標為 0
-- 從 0 開始,篩選 num 條結果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num;
-- 從 start 開始,篩選 num 條結果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT start , num;
-- 從 start 開始,篩選 num 條結果,?第?種?法更明確,建議使?
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num OFFSET start;
1.2示例
# 查詢第??數據
select * from exam order by id asc limit 0, 3;
# 查詢第??數據
select * from exam order by id asc limit 3, 3;
# 查詢第三?數據,沒有達到limit的條數限制,也不會有任何影響,有多少條就顯?多少條
select * from exam order by id asc limit 6, 3;
?二、Update修改
? ? ? ? 這是真正在修改數據庫的原始數據!!!
1、語法
UPDATE [LOW_PRIORITY] [IGNORE] table_referenceSET assignment [, assignment] ...[WHERE where_condition][ORDER BY ...][LIMIT row_count]
#注:
(1)對符合條件的結果進行列值更新
(2)要先查找,找到之后再進行修改
2、示例
????????將孫悟空同學的數學成績變更為80分
# 查看原始數據
select * from exam where name = '孫悟空';
# 更新操作
update exam set math = 80 where name = '孫悟空';
# 查看結果,數學成績更新成功
select * from exam where name = '孫悟空';
????????將曹孟德同學的數學成績變更為60分,語文成績變更為70分
# 查看原始數據
select name, math, chinese from exam where name = '曹孟德';
# 更新操作
update exam set math = 60, chinese = 70 where name = '曹孟德';
# 查看結果
select name, math, chinese from exam where name = '曹孟德';
????????將總成績倒數前三的3位同學的數學成績加上30分
# 查看原始數據
select name, math,chinese + math + english as 總分 from exam where chinese + math + english is not null order by 總分 asc limit 3;
# 更新操作
update exam set math = math +30 where chinese + math + english is not null order by chinese + math + english asc limit 3;
# 查看結果
select name, math, chinese + math + english as 總分 from exam where name in ('宋公明','劉?德','曹孟德');
# 修改后總成績倒數前三的 3 位同學和數據成績
select name, math,chinese + math + english as 總分 from exam where chinese + math + english is not null order by 總分 asc limit 3;
????????將所有同學的語文成績更新為原來的2倍
# 查看原始數據
select * from exam;
# 更新操作
update exam set chinese = chinese * 2;
# 查看結果
select * from exam;
#注:
(1)以原值的基礎上做變更時,不能使用math+=30這樣的語法
(2)不加where條件時,會導致全表數據被更新,謹慎操作
三、Delete 刪除
????????drop 刪庫,刪表.
????????delete 刪記錄/刪行
1、語法
DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
2、示例
????????刪除孫悟空同學的考試成績
# 查看原始數據
select * from exam where name = '孫悟空';
# 刪除操作
delete from exam where name = '孫悟空';
# 查看結果
select * from exam where name = '孫悟空';
????????刪除整張表數據
# 準備測試表
CREATE TABLE t_delete (id INT,name VARCHAR(20)
);
# 插?測試數據
INSERT INTO t_delete (id, name) VALUES (1, 'A'), (2, 'B'), (3, 'C');
# 查看測試表
select * from t_delete;
# 刪除整張表中的數據
delete from t_delete;
# 查看結果
select * from t_delete;
3、Delete注意事項
????????執行Delete時不加條件會刪除整張表的數據,謹慎操作
四、截斷表
????????截斷表,更快速更高效的刪除表操作,直接站在文件的角度,把表對應的文件內容清空了,只能刪全表(不能指定條件,刪除某個部分)
1、語法
TRUNCATE [TABLE] tbl_name
2、示例
# 準備測試表
CREATE TABLE t_truncate (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20));
# 插?測試數據
INSERT INTO t_truncate (name) VALUES ('A'), ('B'), ('C');
# 查看測試表
select * from t_truncate;
# 查看建表結構,AUTO_INCREMENT= 4
show create table t_truncate;
# 截斷表,注意受影響的?數是0
truncate table t_truncate;
# 查看表中的數據
select * from t_truncate;
# 查看表結構,AUTO_INCREMENT已被重置為0
show create table t_truncate\G
# 繼續寫?數據
INSERT INTO t_truncate (name) VALUES ('D');
# ?增主鍵從1開如計數
select * from t_truncate;
# 再次查看表結構,AUTO_INCREMENT=2
show create table t_truncate;
3、Truncate注意事項
(1)只能對整表操作,不能像DELETE?樣針對部分數據
(2)不對數據操作所以比DELETE更快,TRUNCATE在刪除數據的時候,不經過真正的事物,所以無法回滾
(3)會重置AUTO_INCREMENT項
????????由于內容較多,會分為多篇講解,預知后續內容,請看后續博客!!!