DML:数据操纵语句,用于操作数据库对象中所包含的数据
一.添加数据:INSERT
1.插入单条数据
insert into 表名(列名1,列名2,...) values(值1,值2,...);
注意:插入值的类型要与列的类型一致或兼容,插入NULL可实现为列插入NULL值。
列的顺序可以调换。列数和值的个数必须一致。可省略列名,默认所有列,并且列的顺序和表中列的顺序一致。
2. 插入单条数据
INSERT INTO 表名 SET 列名 = 值,列名 = 值;
这种方式每次只能插入一行数据,每列的值通过赋值列表制定。
3. 插入多条数据
insert into 表名 values(值1,值2,值3),(值4,值5,值6),(值7,值8,值9);
如果只想部分插入数据,需要在 Value List 之前加上 ColumnName List,
insert into 表名 (列名1,列名2) values(值1,值2);
除了列名1和列名2这两列的值,其他列的值会设为 Null。
4. 表数据复制
INSERT INTO 表名 SELECT * from 表名;
注意:两个表的字段需要一直,并尽量保证要新增的表中没有数据
二.更新数据:UPDATE
Update 语句一共有两种语法,分别用于更新单表数据和多表数据。
注意:没有 WHERE 条件的 UPDATE 会更新所有值!
1. 修改一条数据的某个字段
UPDATE 表名 SET 字段名 =值 where 字段名=值
2. 修改多个字段为同一的值
UPDATE 表名 SET 字段名= 值 WHERE 字段名 in ('值1','值2','值3');
3. 使用case when实现批量更新
update 表名 set 字段名 = case 字段名 when 值1 then '值' when 值2 then '值' when 值3 then '值' end where s_id in (值1,值2,值3);
三. 删除数据:DELETE
1. 删除指定数据
DELETE FROM 表名 WHERE 列名=值;
注意:删除的时候如果不指定where条件,则保留数据表结构,删除全部数据行,有主外键关系的都删不了,与 SELECT 语句不同的是,DELETE 语句中不能使用 GROUP BY、HAVING 和 ORDER BY 三类子句,而只能使用WHERE 子句。
原因很简单, GROUP BY 和 HAVING 是从表中选取数据时用来改变抽取数据形式的,而 ORDER BY 是用来指定取得结果显示顺序的。因此,在删除表中数据时它们都起不到什么作用。
2. 删除表中全部数据
TRUNCATE 表名;
注意:全部删除,内存无痕迹,如果有自增会重新开始编号。
与 DELETE 不同的是,TRUNCATE 只能删除表中的全部数据,而不能通过 WHERE 子句指定条件来删除部分数据。也正是因为它不能具体地控制删除对象, 所以其处理速度比DELETE 要快得多。实际上,DELETE语句在DML语句中也属于处理时间比较长的,因此需要删除全部数据行时,使用 TRUNCATE 可以缩短 执行时间。