DML语言即数据库操作语言
- 插入:instert
- 修改:update
- 删除: delete
为了方便演示先新建一张表
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`phone` varchar(255) DEFAULT NULL,
`sex` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
其中插入语句共有两种
方式一:经典插入
语法:
insert into 表名(列名,....) values(值);
- 插入的值的类型需要与列的类型一致或兼容
INSERT INTO user (
id,
username,
password,
email,
phone,
sex
)
VALUES
(
1,
'太和十六洞天',
'112121',
'293@cc',
'110',
'男'
)
- 不可以为null的列必须插入值
INSERT INTO user (
id,
username,
password,
email,
phone,
sex
)
VALUES
(
2,
'长生六道轮回经',
'112121',
'293@cc',
'110',
'男'
)
- 列的顺序可以调换
INSERT INTO USER (
phone,
sex,
id,
username,
PASSWORD,
email
)
VALUES
(
'110',
'男',
4,
'葵花练神宝典',
'112121',
'293@cc'
)
- 列数和值的个数必须一致
INSERT INTO USER (
phone,
sex,
id,
username,
PASSWORD
)
VALUES
(
NULL,
NULL,
5,
'葵花练神宝典',
'112121'
)
5.可以省略列名,默认就是所有列,不过列中顺序需要和表中列的顺序一致
INSERT INTO USER
VALUES
(
6,
'三阳三味丙丁炼火诀',
'12345',
'293cc',
'119',
'男'
)
方式二:
语法:insert into 表名 set 列名=值,列名=值,.....
INSERT INTO USER
SET id = 7,
username = '九转金丹直指',
PASSWORD = '12345',
email = 'cc',
phone = '119',
sex = '女'
两种方式的对比
方式一支持子查询,方式二不支持
INSERT INTO USER (username, `password`, email) SELECT
username,
`password`,
email
FROM
`user`
WHERE
username = '三阳三味丙丁炼火诀'
修改语句
- 修该单表的记录
语法:update 表名 set 列=新值,列=新值,....where 筛选条件
UPDATE `user`
SET username = '新太和十六洞天'
WHERE
username = '太和十六洞天'
- 修改多表的记录
语法:
sql92语法:
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件;
sql99语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件;
删除语句
方式一:delete
语法: delete from 表名 where 条件
DELETE
FROM
`user`
WHERE
username = '葵花练神宝典'
方式二:truncate
语法: truncate table 表名
俩者的对比
- delete 可以加where 条件,truncate不能加
- truncate删除,效率高一丢丢
- 假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列的值从1开始。
4.truncate删除没有返回值,delete删除有返回值
5.truncate删除不能回滚,delete删除可以回滚.
总结:
DML相当于DQL来说还是要简单一点的,如有不足希望大家多多指教,谢谢大家