1-5 数据更新
u      熟练掌握插入操作(insert)的基本SQL语句,熟悉如何插入一条数据,如何插入子查询结果中的若干条数据,如何插入数据的时候同时创建新表
u      熟练掌握删除操作(delete)的基本SQL语句
u      熟练掌握更新操作(update)的基本SQL语句
1-5-1 插入操作(insert)
数据的更新可以包括对数据的插入、删除和修改三种操作,其中带子查询的语句可参照后面的查询语句学习。插入操作的基本语法结构是:
1. 插入一条指定值的元组,需要注意的是列名的数量和属性类型必须和后面values对应的值个数和类型一一对应。
insert into 表名 [(列名[,列名]…] values(值 [,值]…
2. 插入子查询结果中的若干条元组,需要注意的是列名的数量和属性类型必须和后面自查询的个数和类型一一对应。
insert into   表名 [(列名[,列名]…] (子查询)
3. 插入数据的时候同时创建新表
Select 属性列 Into 新建表 From 基本表 [where 条件]
执行该操作需要注意的是:Select/into 语句并不能够替代连接或者视图,你可以认为它是一个数据的快照或数据的临时备份,但这种方法最好被视图所取代。
实验:插入数据操作
--1:插入一条学生数据
insert into student values (98001, '王明', '', '1983-5-12', '95033')
--下一条命令与上面的命令是完全相同的。
insert into student(sno, sname, ssex,sage, class) values (98001, '王明', '', '1983-5-12', '95033')
--2:首先请你创建一张表stu_31,仅仅包含姓名,出生日期的信息,将student表中的95031班全体男同学全部插入
use school--进入school数据库
--建立基本表stu_31
create table stu_31
(sno int primary key,
sname varchar(20) not null,
birthday datetime)
--批量插入95031班级的男同学
insert into stu_31
select sno,sname,birthday
from student where class='95031' and sex=’
--3:查询所有女同学的同时将这些数据导入到stu_femail表中
Select *
Into stu_femail
From student Where ssex=‘
1-5-2 删除操作(delete)
删除操作是指从表中删除符合条件的元组,如果没有where语句,则删除所有元组。删除操作的基本语法结构是:DELETE FROM <表名> [WHERE <条件>]
实验:删除数据操作
--1:删除98002班的全体同学
DELETE FROM Student WHERE Sno=‘98002’;
--2:删除SC表中的全部数据
DELETE   FROM SC
--3:删除张明同学全部的选修课程信息
DELETE FROM SC WHERE sno= (SELECT sno FROM Student WHERE Sname=’张明’);
--4:删除低于平均工资的老师记录
delete   from    teacher where   salary < (select avg(salary) from teacher)
1-5-3 更新操作(update)
更新操作是指从表中修改符合条件的元组,如果没有where语句,则修改所有符合条件的元组,但需要注意的是update仅仅只是能够针对于单表进行批量,更新操作语句的一般格式为:
UPDATE  <表名>
SET <列名> = <表达式> [,<列名> = <表达式>]…
[WHERE <条件>];
实验:更新数据操作
--1:将学号的学生生日都改为1984-4-8
UPDATE Student SET birthday=’1984-4-8’ WHERE Sno=95031
--2:将张明同学的所有成绩都归零
UPDATE SC SET Grade=0 WHERE sno=
     (SELECT Sno FROM Student WHERE Sname='张明')
--3:将全体学生成绩上调5%
    update sc set grade = grade* 1.05
--4:工资超过2000的缴纳10%所得税,其余的缴纳5%所得税
--命令1
update teacher set salary = salary * 0.9 where salary > 2000
--命令2
update teacher set salary = salary * 0.95 where salary <= 2000
--小问题:本题应当先执行命令1,然后执行命令2呢?还是反过来才是正确的运行模式。