数据库——SQL-SERVER练习(3)数据更新 视图
(1). 将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。(注意, 学号是主码不允许重复,一个学号只能插入一次,学号是5位数,不要用书上的8位数的学号)
INSERT INTO STUDENT(SNO,SNAME,SSEX,SDEPT,SAGE) VALUES ('95020','陈冬','男','IS',18)
(2). 插入一条选课记录( 95004,2), 插入部分值必须指定列名。
语句执行截图:
INSERT INTO SC(SNO,CNO) VALUES ('95004','2')
(3). 在SC表中插入学号为95004选3号课成绩为80的数据。
INSERT INTO SC(SNO,CNO,GRADE) VALUES ('95004','3',80)
(4). 将学生95001的年龄改为22岁, 系名改为’MA’
UPDATE STUDENT SET SAGE ='22',SDEPT='MA' WHERE SNO='95001'
(5). 将所有学生的年龄增加1岁
UPDATE STUDENT SET SAGE=SAGE+1
(6). 把2号课程的成绩提高5分.
UPDATE SC SET GRADE=GRADE+5 WHERE CNO=2
(7). 把’信息系统’ 课程的成绩提高10%. (SET GRADE=GRADE*1.1)
UPDATE SC SET GRADE=GRADE*1.1 WHERE CNO IN (SELECT CNO FROM COURSE WHERE CNAME='信息系统' )
(8). 删除2号课程的所有选课记录。
DELETE FROM SC WHERE CNO=2
(9). 删除计算机科学系所有学生的选课记录。
DELETE FROM SC WHERE SNO IN (SELECT SNO FROM STUDENT WHERE SDEPT='CS' )
(10). 在SC表中删除课程名为’数据结构’所对应的元组。
DELETE FROM SC WHERE CNO IN ( SELECT CNO FROM COURSE WHERE CNAME='数据结构' )
(11). 建立信息系学生的视图IS_Student.
CREATE VIEW IS_Student AS ( SELECT SNO,SNAME,SAGE FROM STUDENT WHERE SDEPT='IS' )
(12). 定义一个反映学生出生年份的视图BT_S, 属性为汉字(学号,姓名,出生年份)
CREATE VIEW BT_S(SNO,SNAME,SBRITH) AS ( SELECT SNO,SNAME,2019-SAGE FROM STUDENT )
(13). 将学生的学号及他的平均成绩定义为一个视图
CREATE VIEW S_G(SNO,GRAVG)
AS
(
SELECT SNO,AVG(GRADE)
FROM SC
GROUP BY SNO
)
(14). 建立男生学生的视图,属性包括学号,姓名,选修课程名和成绩。
CREATE VIEW M_STUDENT(SNO,SNAME,CNAME,GRADE) AS ( SELECT STUDENT.SNO,SNAME,CNAME,GRADE FROM STUDENT,SC,COURSE WHERE STUDENT.SNO=SC.SNO AND SC.CNO=COURSE.CNO AND SSEX='男' )
查询这个视图平均成绩大于80分的学生学号和姓名
SELECT SNO,SNAME FROM M_STUDENT GROUP BY SNO,SNAME HAVING AVG(GRADE)>80
(15). 建立视图,有系名,人数,平均成绩( 外连接, 分组, 人数是COUNT(DISTINCT STUDENT.SNO) )
思考1:人数用COUNT(*) 是否可以?
思考2:用普通连接是否可以?
查询这个视图中人数>1的系名
CREATE VIEW S_SDEPT(SDEPT,COUNTS,AVG) AS ( SELECT SDEPT,COUNT(DISTINCT STUDENT.SNO),AVG(GRADE) FROM SC,STUDENT WHERE STUDENT.SNO*=SC.SNO GROUP BY SDEPT )
查询这个视图中人数>1的系名.
SELECT SDEPT FROM S_SDEPT WHERE COUNTS>1