1. 插入数据
1.1 插入单个元组
INSERT [INTO] <表名> [ ( <列名>[,...n] ) ]
VALUES ( <表达式> [,...n])
(1)插入一条选课记录('S060111','010201')
insert into 选课表 (学号,开课号) values ('S060111','010201')
注:如果省略列名列表,则VALUES子句必须指定所有列的值
(2)将新生记录('S060111',NULL,'陈向宇','男',NULL,'上海','计算机','信息学院',158)
insert into 学生表 values ('S060111',NULL,'陈向宇','男',NULL,'上海','计算机','信息学院',158)
注:未出现在列名列表中的列插入时取空值
1.2 插入子查询结果
INSERT [INTO] <表名> [ ( <列名>[,...n] ) ]
SELECT 语句
注:select 语句中的目标列表达式数量必须和insert后面的列名数量相等
(1)对每一个专业,求学生的平均累计学分,并把结果存入一张表中
create table 主修专业(专业 char(20),avgpa int) insert into 主修专业 (专业,avgpa) select 专业,AVG(累计学分) from 学生表 group by 专业
注:未出现在列名列表中的列插入时取空值
1.3 select ... into...语句进行数据插入
SELECT<目标列> [,...n] into <新表名>
[SELECT 语句的其他子句]
(1)对每一个专业,求学生的平均累计学分,并把结果存入一张表中
select 专业,avg(累计学分) as 平均累计学分 into 主修专业 from 学生表 group by 专业
2. 修改数据
SQL语言用UPDATE语句对表中数据进行修改
UPDATE <表名> [ ( <列名>[,...n] ) ]
SET <列名> = <表达式> [,...n]
[ FROM <表名> [,...n] ]
[WHERE <条件> ]
2.1 修改给定表的所有行
(1)将所有学生的累计学分增加3
update 学生表 set 累计学分=累计学分+3
注:省略WHERE子句(此时FROM子句不起任何作用)update将修改所有行
2.2 修改给定表的某些行
(1)将计算机专业所有女生的籍贯改成“杭州”,累计学分增加3
update 学生表 set 累计学分=累计学分+3,籍贯='杭州' where 专业='计算机' and 性别='女‘
2.3 基于其他表修改某些行
(1)将计算机专业所有学生的数据库组成原理课程的成绩增加10分
update 选课表 set 成绩=成绩+10 from 开课表 as O,课程表 as C,学生表 as S where 专业='计算机' and 课名='数据库原理‘ and C.课号 = O.课号 and O.开课号=选课表.开课号 and 选课表.学号=S.学号
2.4 使用子查询修改某些行
(1)将计算机专业所有学生的数据库组成原理课程的成绩增加10分
update 选课表 set 成绩=成绩+10 from 学生表 as S where 专业='计算机' and 选课表.学号=S.学号 and 开课号 in(select 开课号 from 开课表 where 课号 in(select 课号 from 课程表 where 课名='数据库原理‘))
3. 删除数据
DELETE [FROM] <目标表名>
[ FROM <表名> [,...n] ]
[WHERE <条件> ]
3.1 删除目标表的所有行
(1)将所有学生表清空
delete from 学生表
3.2 基于目标表删除某些行
(1)将计算机专业所有女生信息删除
delete from 学生表 where 专业='计算机' and 性别='女‘
3.3 删除基于其他表某些行
(1)删除计算机专业所有学生的对数据库组成原理课的选修信息
delete from 选课表 from 开课表 as O,课程表 as C,学生表 as S where 专业='计算机' and 课名='数据库原理‘ and C.课号 = O.课号 and O.开课号=选课表.开课号 and 选课表.学号=S.学号
3.4 使用子查询删除某些行
(1)删除计算机专业所有学生的对数据库组成原理课的选修信息
delete from 选课表 from 学生表 as S where 专业='计算机' and 选课表.学号=S.学号 and 开课号 in(select 开课号 from 开课表 where 课号 in(select 课号 from 课程表 where 课名='数据库原理‘))
网友评论