SQL 语言的数据操纵语句DML主要包括插入数据,修改数据 和删除数据三种语句。
1. 插入数据记录
INSERT INTO <表名> [(<列名 1> [,<列名 2>···])] VALUES (<值>)其中:
- <表名>是指要插入新纪录的表
- <列名>是可选项,指定待添加数据的列,列出列名,则 VALUES 子句中值的排列顺序必须和列名名表中的列名排列顺序一致,个数相等,数据 类型一一对应;若省略列名,则 VALUES 子句中值的排列顺序必须和定义表时的列名顺序一致,个数相等,数据类型 一一对应。
- VALUES 子句指定待添加数据的具体值。
在student表中插入一条学生记录:
INSERT INTO student VALUES ('161155426','马小梅','女','2002-06-18','1102','商务1601')插入部分值:
INSERT INTO sc (Sno, Cno) VALUES ('1418855212' ,'58130540')插入多行记录:
可以从一个表中抽取数据插入另一个表中,这通过子查询来实现。
INSERT INTO <表名> [(<列名>[,<列名2>···])]
子查询建一张表 studentlist(Sno, Sname, Ssex),其中字段含义分别是学号,姓名,性别,并把学生表中的相关数据插入到点名表中。
CREATE TABLE studentlist
(Sno CHAR(10)),
Sname VARCHAR(20),
Ssex VARCHAR(10));
INSERT INTO studentlist (Sno, Sname, Ssex) SELECT Sno, Sname,Ssex FROM student;2. 修改数据记录
UPDATE <表名>
SET <列名>==<表达式> [,<列名>=<表达式>...]
[WHERE <条件>]其中:
- <表名>:是指要修改的表
- SET子句:给出要修改的列及其修改后的值
- WHERE 子句指定待修改的记录应当满足的条件,WHERE 子句省略时,则修改表中的所有记录
把‘郭爽’同学的专业从‘食品1401’转到‘商务1401’
UPDATE student SET Sclass='商务1401' WHERE Sname='郭爽'所有课程的学分加一:
UPDATE course SET Ccredit=Ccredit+1把选修表中每个同学的成绩提高5分
UPDATE sc Grade=Grade+53. 删除数据记录
DELETE
FROM <表名>
[WHERE <条件>]其中:
- <表名>: 要删除数据的表
- WHERE 子句:指定待删除的记录应当满足的条件,WHERE 子句缺省时,则删除表中所有记录
删除马祺同学的记录:
DELETE FROM student WHERE Sname='马祺'从学生表中删除所有工商1401班同学的记录
DELETE FROM student WHERE Sclass='工商1401'删除学生表中所有记录
DELETE FROM studnet4. 使用 TRUNCATE 清空表数据
TRUNCATE [table] 表名注意:TRUNCATE TABLE 与 DELETE 的区别如下:
- TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:两者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务资源少。DELETE 语句每次删除一行,会在事务日志中为所删除的每一行记录一项。
- TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
- TRUNCATE TABLE:删除内容,释放空间但不删除定义。
- DELETE TABLE:删除内容不删除定义,不释放空间。
- DROP TABLE:删除内容和定义,释放空间。
















