师父,咱们大竹峰人丁稀少,是不是该招点新弟子了?而且大师兄的修为好像又精进了!
哼,修仙之人,贵精不贵多。不过...确实该记录一下了。这便是增(Insert)、改(Update)、删(Delete)的功夫。
小凡,这三招是修改天地造化(数据)的法门,威力巨大。稍有不慎,便是数据丢失(Data Loss)的下场,切记小心!
INSERT INTO 最基础的用法,就是向表中插入一条新记录。
INSERT INTO Disciples (Name, Sect, Power)
VALUES ('林惊羽', '龙首峰', 5000);
列名表 (Name, Sect, Power) 其实可以省略,但前提是你必须严格按照表定义的顺序提供所有列的值。为了代码的健壮性(防止表结构变化导致出错),强烈建议永远写上列名!
如果一次来了好几个新弟子,没必要写好几条 SQL,一次搞定更高效!
INSERT INTO Disciples (Name, Sect, Power)
VALUES
('曾书书', '风回峰', 4500),
('齐昊', '龙首峰', 7000),
('宋大仁', '大竹峰', 4800);
有时候,我们需要把一个表的数据复制到另一个表。比如,建立一个“精英弟子表” (Elite_Disciples)。
INSERT INTO Elite_Disciples (Name, Power)
SELECT Name, Power
FROM Disciples
WHERE Power > 6000;
UPDATE 用于修改表中的现有记录。比如陆雪琪修为突破,且换了神兵。
UPDATE Disciples
SET Power = 9999, Weapon = '天耶'
WHERE Name = '陆雪琪';
WHERE 子句!UPDATE Disciples SET Power = 0;那个叫苍松的老道士是个叛徒,留着过年吗?赶紧删了!
DELETE 用于删除表中的记录。
DELETE FROM Disciples
WHERE Name = '苍松道人';
WHERE,写成 DELETE FROM Disciples;如果你真的想清空整张表,而且不需要后悔药(无法回滚),可以使用 TRUNCATE。
TRUNCATE TABLE Disciples;
在真实的修仙界(企业开发),我们很少真的把数据 DELETE 掉。万一以后要查账怎么办?
做法: 给表加一列 IsDeleted 或 Status。
-- 假装删除了,其实只是打了个标记
UPDATE Disciples
SET IsDeleted = 1
WHERE Name = '苍松道人';
-- 查询时,只查没被删除的
SELECT * FROM Disciples WHERE IsDeleted = 0;
这就是所谓的“软删除”,给自己留条后路。