数据操纵语言DML是对数据库中表的操作,分别是插入数据,删除数据,修改数据。
这篇博文以mysql为例,记录下常用的DML语句。
1 插入数据
# 创建表
CREATE TABLE tb_courses
(
course_id INT NOT NULL AUTO_INCREMENT,
course_name CHAR(40) NOT NULL,
course_grade FLOAT NOT NULL,
course_info CHAR(100) NULL,
PRIMARY KEY(course_id)
);
# 可以一次插入多行记录
# 这样写要严格按照表的字段顺序来
INSERT INTO tb_courses VALUES (3,'Java',4,'Java EE');
# 在表名后指定字段,可以不按照表中的顺序插入;
INSERT INTO tb_courses
(course_name,course_info,course_id,course_grade)
VALUES('Database','MySQL',2,3);
# 重要的是可以只添加部分字段的值,那么这条记录的其他字段都为默认值。
INSERT INTO tb_courses
(course_name,course_grade,course_info)
VALUES('System',3,'Operation System');
# 复制表,要创建一个结构一样的表
CREATE TABLE tb_courses_new
(
course_id INT NOT NULL AUTO_INCREMENT,
course_name CHAR(40) NOT NULL,
course_grade FLOAT NOT NULL,
course_info CHAR(100) NULL,
PRIMARY KEY(course_id)
);
INSERT INTO tb_courses_new
(course_id,course_name,course_grade,course_info)
SELECT course_id,course_name,course_grade,course_info
FROM tb_courses;
2 删除数据
# 按条件删除
DELETE FROM 表名 [WHERE 子句] [ORDER BY 子句] [LIMIT 子句];
DELETE FROM tb_courses WHERE course_id=4;
# 删除表中的全部数据
DELETE FROM tb_courses_new;
# 删除表中的全部数据
TRUNCATE TABLE tb_courses_new;
# 两者区别
# DELETE 是逐行一条一条删除记录的;
#TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快;
#因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。
3 修改数据
UPDATE 表名 SET 字段1=值1 [,字段2=值2… ] [WHERE 子句 ]
# 修改所有记录的字段的值
UPDATE tb_courses_new SET course_grade=4;
# 根据条件修改表中的数据
UPDATE tb_courses_new
SET course_name='DB',course_grade=3.5
WHERE course_id=2;