目录
DML(数据操作语言)
用于操作数据库对象中所包含的数据
- INSERT ( 添加数据语句 )
- UPDATE ( 更新数据语句 )
- DELETE ( 删除数据语句 )
添加数据
插入单行语法
INSERT INTO 表名 [ ( 字段1, 字段2, 字段3, … ) ] VALUES ( 值1, 值2, 值3, …);
- 表的字段是可选的,如果省略,则依次插入所有的字段。
- 如果插入的是表中部分列的数据,字段名列表必须填写。
- 多个字段和多个值之间使用逗号分隔。
- 值列表必须和字段名列表数量相同且数据类型相符(字符串和日期类型的值要加单引号)。
- 值列表中的数据必须符合数据完整性的要求。
插入多行语法
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 ];
- column_name 为要更改的字段名。
- value 为修改后的数据,可以为变量、具体值、表达式或者嵌套的SELECT结果。
- 多个字段之间用逗号隔开。
- 提供的修改数据必须符合数据完整性的要求。
- condition为筛选条件,如不指定则修改该表的所有列数据。
示例
#按照一定条件修改数据(修改张三手机号,条件是手机号是13812345678)
UPDATE STUDENT SET PHONE = '123' WHERE PHONE = '13812345678';
#按照一定条件修改一行中的多条数据(修改李四的手机号和地址,条件是手机号是13998765432)
UPDATE STUDENT SET PHONE = '321' , ADDRESS = '河南省郑州市' WHERE PHONE = '13998765432';
关于SQL的运算符
算术运算符
比较运算符
逻辑运算符
案例
#按照条件修改数据
#修改学生表中,身份证号不为空的学生密码为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 ];
- DELETE语句删除的是整条记录,不会只删除单个列。
- condition为筛选条件,如不指定则修改该表的所有列数据。
TRUNCATE TABLE 命令
语法
TRUNCATE TABLE 表名;
- TRUNCATE TABLE 删除表中所有的行。
- TRUNCATE TABLE不能用于有外键约束引用的表。
代码示例
删除学生表学号为10001的记录
delete from student where studentno=10001;
//清空学生表
TRUNCATE TABLE STUDENT;