SQL- SQL插入與更新刪除

一 前言

經過之前的 【SQL】-SQL介紹【SQL】- SQL檢索階段一【SQL】-sql檢索階段二 的三篇文章你已經學會的sql的相關概念和如何查詢數據庫,這篇文章主要後續對數據庫表的進入插入,更新,和刪除操作,那麼你學完這篇就等於最基礎的sql開發你已經學完了,如果跟java結合起來也就是crud;後續會推出sql的進階學習文章,當然出文章的速度不是很快,原因是還有其他類型文章要出;

建表語句:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶id',
  `name` varchar(255) DEFAULT NULL COMMENT '用戶名',
  `telephone` varchar(255) DEFAULT NULL COMMENT '用戶電話',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `info` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `info`) VALUES (1, 'youku1', 18, '大一新生');
INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `info`) VALUES (2, 'youku2', 23, '畢業生');
INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `info`) VALUES (3, 'jeff', 25, '社會人士');
INSERT INTO `springboot`.`student`(`id`, `name`, `age`, `info`) VALUES (4, 'smile', 17, '高三學子');

二 插入

插入數據庫記錄也就是使用 INSERT 關鍵字,能將一條語句插入數據庫,高級的可以組合 SELECT 關鍵字 實現 插入查詢的結果集,插入整張表;

2.1 插入一條完整數據

語句示例:

INSERT INTO `user` ( id, `name`, telephone) VALUES ('2','zszxz','1327');

語句結果:

2	zszxz	1327

語句分析:

插入 數據 到 user 表 字段分別是 id, name , telephone; 值 分別是 2 , zszxz , 1327; 這是插一條完整的語句,雖然INTO可以忽略不寫,但不建議這麼做,原因是在數據庫管理系統間會出現移植性問題;還有字段也可以忽略不寫,但也不建議這麼做,這容易造成插入數據出錯;字段的位置和值的位置是一 一對應;如果有的位置沒值可以使用NULL代替;

2.2 插入部分數據

語句示例:

INSERT INTO `user` ( id, `name`) VALUES ('3','zszxz');

語句結果:

3	zszxz	

語句分析:

插入數據到user表,字段分別是 id , name ; 值分別是,3,zszxz; 可以看見我們沒有插入telephone字段;

2.3 插入檢索數據

插入檢索的數據也就是能將查詢的結果插入進另一張表;我們可以使用 INSERT SELECT 關鍵組合成一條語句實現;

語句示例:

INSERT INTO `user` ( id, `name`) 
SELECT id, `name` FROM student WHERE id = '4';

語句結果:

4	smile	

語句分析:

插入數據到 user 表, 字段分別是 id, name ,值是查詢字段 id ,name 來自 student 表,條件是 id 等於 4;可以看見我們插入數據的列根查詢的列名稱是匹配對應的,其實只要列順序一致即可,不過爲了不出錯,建議使用名稱匹配;

2.4 複製表

複製表即,檢索一張表的數據全部插入另一張表;有兩種方法,但是不同的數據庫管理系統支持不同,具體的看下文;

語句示例:

SELECT id , `name`  INTO student_copy FROM student;

語句分析

查詢字段 id, name 插入 student_copy 表,來自 student 表; 注意 這條語句會幫我們自動創建表 student_copy,由於作者使用的是mysql做演示,這條sql執行失敗,原因是其不支持這種方式;如果是想複製整張表可以使用通配符 * ;

語句示例:

CREATE TABLE student_copy AS 
SELECT * FROM student;

語句結果:

1	youku1	18	大一新生
2	youku2	23	畢業生
3	jeff	25	社會人士
4	smile	17	高三學子

語句分析:

創建表 student_copy 數據結構來源 查詢 所有字段來自 student 表;

三 更新

更新數據庫的行使用 UPDATE 關鍵字;更新操作是個很危險的操作,在每次執行前都應該檢查是否丟了 where 子句;

3.1 更新所有行

語句示例:

UPDATE student_copy set age = Null;

語句結果:

1	youku1		大一新生
2	youku2		畢業生
3	jeff		社會人士
4	smile		高三學子

語句分析:

更新 student_copy 表, 設置 字段 age 值爲null; 可以看見表中所有的學生年齡都是Null; 如果有多個字段需要更新,使用 逗號隔開;

3.2 更新特定的行

語句示例:

UPDATE student_copy set age = '18' WHERE id = '4';

語句結果:

4	smile	18	高三學子

語句分析:

更新 student_copy 設置 學生的年齡是 18 條件是 id 等於 4;

3.3 更新來自查詢的結果集

語句示例:

UPDATE student_copy set age= student.age, name = student.name
FROM student
WHERE student.id = student_copy.id;

語句分析:

更新 student_copy 表 設置 age 是 student 表的 age,name 是 student 表的 name 條件是 student 的id 等於 student_copy 表的 id; 遺憾的是 mysql 數據庫管理系統又執行失敗了,其不支持這種方法更新,如果是postgresql就支持,其他數據庫應查閱官方文檔查看是否支持這種方式更新;

語句示例:

UPDATE student_copy INNER JOIN student on  student.id = student_copy.id 
SET student_copy.age= student.age, student_copy.name = student.name;

語句結果:

1	youku1	18	大一新生
2	youku2	23	畢業生
3	jeff	25	社會人士
4	smile	17	高三學子

語句分析 更新 student_copy 關聯 student 條件 是 student 的 id 等於 student_copy 表的id ; 設置 student_copy 表的 age 等於 student 的 age ; 設置 student_copy 表的 name 等於 student 的 name ;這纔是正確進入Mysql 的更新查詢姿勢;

四 刪除表

刪除表中的行可以使用 DELETE 關鍵字 ,可以刪除特定的行或者全部;使用時請先看是否丟了where子句;

4.1 刪除整張表數據

DELETE from student_copy;

語句分析

刪除 全部行 來自 student_copy 表;

4.2 刪除特定的行

語句示例:

DELETE from student WHERE id = '4';

語句分析:

刪除 行 來自 student 表條件時 id 等於 4;

五 更新和刪除的建議

  1. 每次進行操作前檢查是否丟失 where 子句;
  2. 每次操作前最好先使用 select 語句驗證;

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章