DML(数据操作语言)

用于操作数据库对象中所包含的数据

  • INSERT ( 添加数据语句 )
  • UPDATE ( 更新数据语句 )
  • DELETE ( 删除数据语句 )

添加数据

插入单行语法

INSERT INTO 表名 [ ( 字段1, 字段2, 字段3, … ) ] VALUES ( 值1, 值2, 值3, …);

  1. 表的字段是可选的,如果省略,则依次插入所有的字段。
  2. 如果插入的是表中部分列的数据,字段名列表必须填写。
  3. 多个字段和多个值之间使用逗号分隔。
  4. 值列表必须和字段名列表数量相同且数据类型相符(字符串和日期类型的值要加单引号)。
  5. 值列表中的数据必须符合数据完整性的要求。

插入多行语法

INSERT INTO 表名 [ ( 字段1, 字段2, 字段3, … ) ] VALUES ( 值1, 值2, 值3, …),( 值1, 值2, 值3, …),…;

SQL示例

#给某个表中添加单行数据
INSERT INTO GRADE (GRADEID,GRADENAME) VALUES (1,'预科');

#插入多行数据(批量插入)
INSERT INTO STUDENT VALUES
(10001, 'password123', '张宇', '男', 1, '13812345678', '北京市朝阳区', '2000-03-15', 'zhangyu@email.com', '110101200003154321'),
(10002, 'pass456', '李欣', '女', 2, '13998765432', '上海市浦东新区', '1999-07-20', 'lixin@email.com', '310115199907201234'),
(10003, 'abc123', '王浩', '男', 1, '13787654321', '广州市天河区', '2001-01-10', 'wanghao@email.com', '440106200101102345'),
(10004, 'pass789', '赵雨菲', '女', 3, '13611112222', '深圳市南山区', '2003-05-25', 'zhaoyufei@email.com', '440305200305252678'),
(10005, 'qwerty', '陈嘉琪', '男', 2, '13544445555', '成都市武侯区', '2002-11-05', 'chenjiaqi@email.com', '510107200211053456');

将查询结果插入到新表中

语法1:

CREATE TABLE 新表名 ( SELECT 字段1, 字段2, 字段3, … FROM 原表)

语法2:

CREATE TABLE stuhistory ( SELECT * FROM student)
以上示例在执行查询操作的同时创建新表stuhistory,无须提前创建。

修改数据

语法

UPDATE 表名 SET column_name = value [ , column_name2 = value2, …. ] [ WHERE condition ];

  1. column_name 为要更改的字段名。
  2. value 为修改后的数据,可以为变量、具体值、表达式或者嵌套的SELECT结果。
  3. 多个字段之间用逗号隔开。
  4. 提供的修改数据必须符合数据完整性的要求。
  5. condition为筛选条件,如不指定则修改该表的所有列数据。

示例

#按照一定条件修改数据(修改张三手机号,条件是手机号是13812345678)
UPDATE STUDENT SET PHONE = '123' WHERE PHONE = '13812345678';
#按照一定条件修改一行中的多条数据(修改李四的手机号和地址,条件是手机号是13998765432)
UPDATE STUDENT SET PHONE = '321' , ADDRESS = '河南省郑州市' WHERE PHONE = '13998765432';

关于SQL的运算符

算术运算符

【MySQL】数据管理——DML操作数据-LMLPHP【MySQL】数据管理——DML操作数据-LMLPHP

比较运算符

【MySQL】数据管理——DML操作数据-LMLPHP

逻辑运算符

【MySQL】数据管理——DML操作数据-LMLPHP

案例

#按照条件修改数据
#修改学生表中,身份证号不为空的学生密码为111111
UPDATE STUDENT SET LOGINPWD = '111111'
WHERE IDENTITYCARD IS NOT NULL;
#将课程编号为1的所有不及格的学生的成绩修改为60分
UPDATE RESULT SET STUDENTRESULT = 60
WHERE SUBJECTNO = 1 AND STUDENTRESULT < 60;
#将课程编号为1的所有   大于等于80分 且 小于等于90分   的学生的成绩加5分
UPDATE RESULT SET STUDENTRESULT = STUDENTRESULT + 5
WHERE SUBJECTNO = 1 AND STUDENTRESULT >= 80 AND STUDENTRESULT <= 90;

删除数据

DELETE命令

语法

DELETE FROM 表名 [ WHERE condition ];

  1. DELETE语句删除的是整条记录,不会只删除单个列。
  2. condition为筛选条件,如不指定则修改该表的所有列数据。

TRUNCATE TABLE 命令

语法

TRUNCATE TABLE 表名;

  1. TRUNCATE TABLE 删除表中所有的行。
  2. TRUNCATE TABLE不能用于有外键约束引用的表。

代码示例

删除学生表学号为10001的记录
delete from student where studentno=10001;

//清空学生表
TRUNCATE TABLE STUDENT;
03-01 22:18