插入数据
INSERT INTO 表名 (列名1, 列名3, 列名2) VALUES (值1, 值3, 值2);
INSERT INTO 表名 (列名1, 列名2, 列名3) VALUES (值1, 值2, 值3),(值1, 值2, 值3);
插入的值必须与列名一一对应
INSERT INTO 表名 VALUES (值1, 值2, 值3, 值4);
简写时插入的值必须与列名一一对应
修改数据
使用 UPDATE 语句要注意带上 WHERE子句,否则所有记录都被更新。正确做法:更新数据时,做个备份表或临时表
UPDATE 表名 SET 列名 = 值 [WHERE子句];
UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2 WHERE 子句;
删除数据
DELETE FROM
DELETE FROM 表名 [WHERE子句];
DELETE FROM 表名 清空数据时,新增的数据的自增计数不会受到影响,会继续延续计数。 DELETE FROM 要带上 WHERE子句,否则删除所有记录
TRUNCATE TABLE
TRUNCATE TABLE 表名;
清空数据时,自增计数也会重置。TRUNCATE TABLE 是不能带上 WHERE子句
级联操作
级联删除
先删除从表,再删除主表比较麻烦,可采用级联方式删除
DROP TABLE 从表, 主表;
CREATE TABLE 从表名(外键列 ON DELETE CASCADE)
级联更新
CREATE TABLE 从表名(外键列 ON UPDATE CASCADE)
补充操作
SELECT INTO
是从一个表中复制数据,然后将数据插入到另一个数据表中。适合表间计算
SELECT *|列名 INTO #表名 FROM 表名;
有时候为了作为临时表,可以将新表名写成 #表名,这里表名与后面表名一致,只是用 #区别
SELECT *|列名 INTO #表名 FROM 表名 WHERE 1=0;
复制表结构没有数据
INSERT INTO SELECT
从表中复制数据,并将数据插入现有的表中,目标表中的任何现有行都不会受影响
INSERT INTO 表名2 列名 SELECT * FROM 表名1;
- 两张表的结构的列数和对应的字段类型要一致
