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');
扩展
- 省略列名,默认所有列,而且列的顺序和表中列的顺序一致
insert into表名VALUES(18,'张飞','男');
- 使用子查询
insert into 表名(列名) select 列名 from xx;
- ~~用的较少,可忽略 ~~
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 筛选条件;
扩展
- 修改单表语法(MySQL和SQLServer一致)
update 表名 set 列=新值,列=新值,...where 筛选条件;
- 修改多表语法(MySQL和SQLServer不一致)
update 表1 别名 inner|left|right join 表2 别名 on 连接条件 set 列=值,... where 筛选条件;
例子:将有认证并且UserId>10的用户的昵称更改为他的认证名MySQL下的语法:update Users u inner join UserData ud on u.UserId =ud.UserId set UserName=ud.UserName where UserId>10;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;
扩展
- 删除单表(SQLServer和MySQL用法相同)
delete from [user] where id=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
- delete可以加where 条件,truncate不能加
- truncate删除,效率高一点
- 假如要删除的表中有自增长列
- 如果用delete删除后,再插入数据,自增长列的值从断点开始
- 而truncate删除后,再插入数据,自增长列的值从1开始。
- truncate删除没有返回值,delete删除有返回值
- truncate删除不能回滚,delete删除可以回滚
