DML即Data Manipulation Language,意指数据操纵语言。

1 插入(II表字,位值)

完整语法
此语法SQLServer 和MySQL一致
insert into 表名(字段1, 字段2...) values(值1,值2...),(值N,值N+1...);
insert into user(id,name) values(2,'fly');

扩展

  1. 省略列名,默认所有列,而且列的顺序和表中列的顺序一致

insert into表名VALUES(18,'张飞','男');

  1. 使用子查询

insert into 表名(列名) select 列名 from xx;

  1. ~~用的较少,可忽略 ~~

insert into 表名 set 列名=值,列名=值,…;
如:INSERT INTO beauty SET id=19,NAME=’刘涛’,phone=’999’;

2 修改(更新表设字段)

完整语法
MySQL和SQLServer不完全一致。
MySQL:更新表,设字段。update 表join表 set 列=值,列=值 where 筛选条件。
SQLServer:更新表设字段,从表中(多表连接)。update 表 set 列=值,列=值 from 表join表 where 筛选条件;

扩展

  1. 修改单表语法(MySQL和SQLServer一致)

update 表名 set 列=新值,列=新值,...where 筛选条件;

  1. 修改多表语法(MySQL和SQLServer不一致)

update 表1 别名 inner|left|right join 表2 别名 on 连接条件 set 列=值,... where 筛选条件;

  1. 例子:将有认证并且UserId>10的用户的昵称更改为他的认证名
  2. MySQL下的语法:update Users u inner join UserData ud on u.UserId =ud.UserId set UserName=ud.UserName where UserId>10;
  3. SQLServer下的语法:update Users set UserName=ud.UserName from User u inner join UserData ud on u.UserId =ud.UserId where UserId>10;

备注:关于MySQL和SQLServer 关于使用update inner join时的区别
参考链接:https://blog.csdn.net/waiwai4701/article/details/52710800
一个是先关联再set,另外一个先set再关联。

3 删除

删除方式
完整的语法:SQLServer和MySQL不完全一致
delete user from user where userid=1;或delete u from user u where u.userid=1;

扩展

  1. 删除单表(SQLServer和MySQL用法相同)

delete from [user] where id=1;

  1. 删除多表(SQLServer和MySQL有细微差别)

MySQL:delete u,ud from user u inner join userdata ud on u.userid=ud.userid where u.userid=2;//MySQL在表关联后可以同时删除两个表的数据
SQLServer:delete u from User u inner join UserData ud on u.Id=ud.UserId where u.Id=2;//SQLServer通过此方法只能删除一个表

delete pk truncate

  1. delete可以加where 条件,truncate不能加
  2. truncate删除,效率高一点
  3. 假如要删除的表中有自增长列
    • 如果用delete删除后,再插入数据,自增长列的值从断点开始
    • 而truncate删除后,再插入数据,自增长列的值从1开始。
  4. truncate删除没有返回值,delete删除有返回值
  5. truncate删除不能回滚,delete删除可以回滚