Server SQL 2008 练习—02
一、修改数据库
(1)给db_temp数据库添加一个数据文件文件db_temp1指定大小为5MB,最大文件大小为100mb,自动递增大小为1MB,存储路径为d:\。
利用系统存储过程sp_helpdb查看db_temp数据库系统信息
Alter database db_temp Add file (name=’db_temp1’,filename=’d:\ db_temp1.ndf’,size=5,filegrowth=1,maxsize=100)
Sp_helpdb db_temp
(2)给db_temp数据库添加一个日志文件db_temp1-log文件,指定大小为5MB,最大文件大小为不限定大小,自动递增大小为10%,存储路径为d:\。
1 Alter database db_temp 2 3 Add log file 4 5 (name=’ db_temp1-log’, 6 7 filename=’d:\ db_temp1-log.ldf’,size=5,filegrowth=10%,maxsize=unliminted)
(3)给db_temp数据库添加一文件组 hh,利用系统存储过程sp_helpdb查看db_temp数据库系统信息
1 Alter database db_temp 3 Add filegroup hh
(4)、 给db_temp数据库添加一数据文件db_temp2(该文件属性自定)到hh组
Alter database db_temp Add file (name=’db_temp2’,filename=’d:\ db_temp2.ndf’,size=5,filegrowth=1,maxsize=100) to filegroup hh
(3)修改db_temp数据库中的数据文件db_temp1,之后利用系统存储过程sp_helpdb查看db_temp数据库系统信息
Alter database db_temp Modify file (name= db_temp1,size=10,maxsize=500)—修改了该数据库中的db_temp1文件,修改了该文件的大小和最大大小
(4)删除db_temp数据库中一个数据文件db_temp1,一个日志文件db_temp1-log
Alter database db_temp remove file db_temp1 Alter database db_temp Remove file db_temp1-log
(7) 删除文件组hh
Alter database db_temp Remove filegroup hh
(8)用SQL命令删除数据库db_temp
Drop database db_temp
二、管理数据表
1、附加数据库temp-db ,并利用存储过程 sp_renamedb ‘愿数据库名’,‘新数据库名’ , 将该数据库重命名为stu
sp_renamedb 'temp-db ' ,’ stu’
2、利用存储过程sp_rename '原表名','新表名' ,依次将该stu数据库的student 重命名为s, course重命名为c ,s-c 重命名为sc
sp_rename ' student' ,’ s’ sp_rename 'course' ,’ c’ sp_rename ' s-c ' ,’ sc’
3.使用sql 命令在stu数据库中,分别按以下要求补充三个关系,设置对应表的主键,外键和约束关系。
T表
列名 |
数据类型 |
约束 |
TNO |
Varchar(20) |
主键,并只能以T开头 |
tn |
Varchar(20) |
非空 |
sex |
Char(2) |
男 |
age |
tinyint |
30-65 |
prof |
Varchar(50) |
只能是教授,副教授,讲师,助教 |
sal |
money |
|
comm |
smallmoney |
|
dept |
Varchar(50) |
计算机 |
Tc 表
列名 |
数据类型 |
约束 |
备注 |
tno |
Varchar(20) |
外键 |
Tno+cno 主键 |
cno |
Char(8) |
外键 |
User表
列名 |
数据类型 |
约束 |
备注 |
ID |
INT |
主键 |
标识列,自动增长,种子为1,增量为1 |
Username |
Varchar(20) |
不能重复 |
|
password |
Varchar(50) |
非空 |
|
Create table t (TNO Varchar(20) primary key check (tno like 't%'), tn Varchar(20) not null, sex Char(2) default '男', age tinyint check (age between 30 and 65), prof Varchar(50) constraint xx check (prof in ('教授','副教授','讲师','助教' )), sal money, comm smallmoney, dept Varchar(50) default '计算机') create table tc (tno Varchar(20) foreign key references t(tno), cno Char(8) foreign key references c(cno) primary key (tno,cno) ) create table [user] (id int identity(1,1) primary key, Username Varchar(20), password Varchar(50) )
4.给s表添加手机号列,家庭住址列,身份证号要求手机号只能是-9之间的字符,且长度为位,
家庭住址不能为空,身份证号要求不能为空,且不能重复
alter table s add tel char(11) check (tel like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), addr varchar(50) not null, sfzh varchar(20) not null unique
5、给s表添加一唯一约束到姓名列,一默认约束到姓别列,要求默认值为“男”
alter table s add unique(sn), default '男' for sex
6.删除t表中的prof列上的约束
alter table t drop constraint xx
7、删除s表与sc 表之间的关联,再通过命令重新建立其关联
alter table sc drop constraint 外键约束的名称 alter table sc add foreign key (sno) references s(sno)
三、表单查询
1.查询全体学生的学号和姓名
select sno,Sn from s
2.查询考试有不及格的学生学号,若有多门不及格,相同的学号只显示一个。
select distinct sno from Sc where score<60
3.查询年龄在20岁以下的所有女生的姓名和性别
select Sn,sex from s where age<20 and sex='女'
4.查所有第二个字为小或晓的学生学号和姓名
select sno,Sn from s where Sn like '_[小晓]%'
5.查所有不姓王的学生姓名
select Sn from s where Sn not like '王%'
6.查计算机系,自动化系的学生姓名和性别
select Sn,sex from s where dept in ('计算机','自动化')
7.查所所有学生的姓名及出生年份,并为对应列给别名
select Sn,year(GETDATE()) 出生年份 from s
8.查询姓王或李的学生姓名和所在系
select Sn,dept from s where Sn like '[王李]%'
9.查询所有选了课的学生学号,要求选了多门课的学生学号只显示一次
select distinct sno from Sc
10.查询分数为80,90分的学生选课记录
select * from Sc where score in (80,90)
11.查询以'编'开头的,且倒数第2个为'原'的课程信息
select * from C where cn like '编%原__%'
12.查询工资在1000--2000元之间(含1000,2000)的计算机系教师的信息
select * from t where sal between 1000 and 2000
四、函数使用
1、统计c2 课程的缺考学生人数
select count(sno) from sc where cno='c2' and score is null
2、查询选了课的学生人数
select count(distinct sno) from sc
3、查询s1同学的总分,平均分,最高分,最低分,已经最高分和最低分之间的差值
select sum(score),avg(score),max(score), min(score),max(score)-min(score) from sc where sno='s1'
4、查询刘伟老师的总收入,要求输出教师号,总收入
select tno,sal+comm 总收入 from t where tn='刘伟' select tno,sum(sal+comm)总收入 from t where tn='刘伟' group by tno
5、统计sc表中每门课程的补考人数,要求显示课程号,补考人数
select cno,count(sno)补考人数 from sc where score<60 or score is null group by cno
6、查询每门课程的平均分和最高分
select avg(score),max(score) from sc group by cno
7、统计男生和女生的人数,显示性别和人数,并按人数升序排。
select sex,count(sno) from s group by sex order by count(sno) asc
8、查询每个学生所选课程的平均分,并分别为这两列取别名为学号,平均分。
select sno 学号,avg(score)平均分 from sc group by sno
9、查询选修了c2课程的学生学号与成绩,按成绩降序排列。
select sno,score from sc where cno='c2' order by score desc
10、查询各系不同职称的男女老师的人数
select sno,score from sc where cno='c2' order by score desc
11、查询选修了2门课以上课程的学生的学号和总成绩,按总成绩降序排序。
select sno,sum(score) from sc group by sno having count(cno)>2
12、查询平均分在75分及以上的课程号;
select cno from sc group by cno having avg(score)>=75
13、查询计算机系收入高于8000的教师的教师名
select tn from t where dept='计算机' group by tn having sum(sal+comm)>8000 select tn from t where dept='计算机' and comm+sal>8000
14、查询计算机系,电子系讲师职称的教师人数
select count(tno) from t where (dept='计算机'or dept='电子') and prof='讲师' group by dept select count(tno) from t group by dept,prof having ((dept='计算机'or dept='电子')and prof='讲师')
五、多表查询
1、连接查询
(1)from 表1,表2... where 连接条件--内连接
(2)表1 join 表2 on 连接条件join 表3 on 连接条件 .....--内连接
(3)表1 left|rightjoin 表2 on 连接条件 left|rightjoin 表3 on 连接条件 .....--外连接
内连接:显示满足连接条件的元祖
外连接:显示满足连接条件的元祖,以及左表或右表不满足连接条件的元祖
s,sc
from s,sc where s.sno=sc.sno
s join sc on s.sno=sc.sno --内连接
========================================
s,sc
s left join sc on s.sno=sc.sno --左外连接
sc right join s on s.sno=sc.sno--右外连接
1、查询选了课的学生学号,姓名 s,sc
select s.sno,sn from s,sc where s.sno=sc.sno select s.sno,sn from s join sc on s.sno=sc.sno
2、查询没有选课的学生学号和姓名s,sc
select s.sno,sn from s left join sc on s.sno=sc.sno where cno is null
3、查询选了数据库课程的学生姓名s,sc,c
select sn from s,sc,c where s.sno=sc.sno and sc.cno=c.cno and cn='数据库' select sn from s join sc on s.sno=sc.sno join c on c.cno=sc.cno where cn='数据库'
4、查询刘伟老师所教课程的课程名 c,t,tc
select cn from t,tc,c where t.tno=tc.tno and tc.cno=c.cno and tn='刘伟'
5、查询每个学生姓名,选课门数 s sc
select sn,count(cno) from s left join sc on s.sno=sc.sno group by sn
6、查询跟赵亦在同一个系的学生姓名 s s
select x.sn from s x,s y where x.dept=y.dept and y.sn='赵亦' and x.sn<>'赵亦'
7、查询比钱尔大的学生姓名 s,s
select x.sn from s x,s y where x.age>y.age and y.sn='钱尔'
六、查询
(1)、连接查询:
1、查询李力老师所教课程的课程名
select cn from C,t,tc where t.tno=tc.tno and C.cno=sc.cno and tn='李力'
2、查询计算机系选了数据库课程的学生姓名
select sn from s,sc,c where S.sno=sc.sno and c.cno=sc.cno and dept='计算机' and cn='数据库'
3、查询选了c1或c2课程的学生学号,姓名
select s.sno,sn from s,sc where s.sno=sc.sno and cno in ('c1','c2')
4、查询教了计算机系学生且职称为教授的老师的姓名,职称,工资
select sn,prof,sal from t,tc,sc,s where t.TNO=tc.tno and sc.cno=tc.cno and s.sno=sc.sno and dept='计算机' and prof='教授'
5、查询各系的平均成绩要求显示系别,平均成绩,并按平均成绩降序排序。
select dept,AVG(score) from s,sc where s.sno=sc.sno group by dept order by AVG(score) desc
6、查询平均成绩在80分以上的课程号,课程名
select c.cno,cn from c,sc where c.cno=sc.cno group by c.cno having AVG(score)>80
7、查询跟刘伟老师职称相同且工资相同的老师的姓名,职称,工资
select x.tn,x.prof,x.sal from t x,t y where x.prof=y.prof and x.sal=y.sal and y.tn='刘伟' and x.tn<>'刘伟'
8 用SQL实现S,SC表的自然连接
select s.*,cno,score from s,sc where s.sno=sc.sno .
9、查询没有学生选的课程的课程号,课程名
select c.cno,cn from c left join sc on sc.cno=c.cno where cno is null
10、查询所有学生的姓名,选课门数
select sn,COUNT(cno) from s left join sc on s.sno=sc.sno group by sn
11、查询数据库,程序设计两门课程的总分,平均分
select cn,SUM(score),AVG(score) from c,sc where c.cno=sc.cno and cn in ('数据库','程序设计')group by cn
二、(子查询)
1、查询选了C1课程的学生姓名
思路一:从sc表中找出所有选了c1课程的学生学号,再根据学号到s表中找出对应的学生姓名
select sn from s where SNO in (select SNO from SC where CNO='c1')
思路二:以此到s表中判断每个学生是否选c1课程--相关子查询
select sn from s where 'c1' in (select cno from SC where SNO=s.SNO ) 或 select sn from s where exists(select * from SC where SNO=s.SNO and CNO='c1')
2、查询王伟老师所教课程的课程号
思路一:先从t表中找到刘伟老师的教师号,再利用该教师号到tc表找到该老师所教课程号
select cno from TC where TNO =(select TNO from t where tn='王伟')
思路二:依次到c表中去判断课程是否由王伟老师讲授
select cno from c where '刘伟' in (select tn from t where tno in ( select tno from TC where CNO=C.cno))--不带exists 或not exists的相关子查询 或 select cno from C where exists(select * from TC ,t where TC.TNO=t.tno and CNO=c.cno and tn='刘伟')--带exists的相关子查询
3、查询赵亦选的课程名。
思路一:先找到赵亦的学号,再根据学号去找该学生所选的课程号,最后根据课程号找对应的课程名
select cn from C where CNO in (select CNO from SC where SNO =(select SNO from s where SN='赵亦') )--普通子查询
思路二:以此到c表中去判断该们课程是否被赵亦选修
select cn from C where '赵亦' in (select sn from s,SC where s.SNO=SC.SNO and CNO=C.CNO )--不带exists 或not exists的相关子查询 或 select cn from C where exists(select * from s,SC where s.SNO=SC.SNO and CNO=C.CNO and SN='赵亦')--带exists的相关子查询
4、查询不学数据库的学生学号。
思路一:先查找所有选了数据库的学号,找不属于这个集合的学生学号--普通子查询
select sno from s where SNO not in (select sno from SC where CNO =(select CNO from C where CN='数据库'))--普通子查询
思路二:用所有学生的学号减去选了数据库的学生学号
select sno from s except select sno from s where SNO in (select SNO from SC where CNO =( select CNO from C where CN='数据库'))
思路三:依次到s表中去判断每个学生是否选了数据库--相关子查询
select sno from s where '数据库'<> all( select cn from C,SC where C.CNO=SC.CNO and SNO=s.sno) 或 select sno from s where not exists( select * from C,SC where C.CNO=SC.CNO and CN='数据库' and SNO=s.sno)
5、查询被t1和t3老师教了的课程的课程名
思路一:先去找到被t1和t3老师所教课程的课程号,再根据课程号找对应的课程名
select cn from C where CNO in ( select CNO from TC where TNO='t1' and CNO in (select CNO from TC where TNO='t3'))
思路二:先找ti老师所教课程名,再找t3老师所教课程名,然后求其交集
select cn from C where CNO in ( select CNO from TC where TNO='t1') intersect select cn from C where CNO in ( select CNO from TC where TNO='t3')
思路三:依次到c表中判断每门课程是否被ti和t3教
select cn from C where 't1' in (select tno from TC where CNO=c.cno) and 't3' in (select tno from TC where CNO=c.cno)
思路四:不存在t1和t3 老师没有教的课程的课程名
select cn from C where not exists( select * from (select * from t where tno in ('t1','t3')) x where not exists(select * from TC where TNO=x.tno and CNO=C.cno ))
6、查询没有选修任何课程的学生姓名、所在院系
思路一:选找到选了课的学生学号,然后再找不再这个集合中的学生学号,最后通过该学号找对应学生的姓名
select sn,dept from s where SNO not in ( select distinct SNO from SC )
思路二:找选课门数=0的学生
select sn,dept from S where SNO in (select s.SNO from s left join SC on s.SNO=SC.SNO group by s.SNO having COUNT(cno)=0)
思路三:以此从s表中去判断该学生是否选课--相关子查许
select sn,dept from s where not exists( select * from SC where SNO=s.SNO )
7、查询“数据库”课程的选课人数和总成绩。
思路一:普通子查询
select COUNT(sno),SUM(score) from SC where CNO =(select CNO from C where CN='数据库')
8、查询其他系中比信息系某一学生年龄小的学生姓名和年龄。
select sn,age from s where DEPT<>'信息' and AGE<any(select AGE from s where DEPT='信息')
9、查询选了所有课程的学生信息
思路一:先找选课门数=总课程数的学生学号,再根据学号找对应的学生信息
select * from s where SNO in (select SNO from SC group by SNO having COUNT(cno)=( select COUNT(cno) from C ))
思路二:c表中没有一门课程是他没选的
select * from s where not exists( select * from C where not exists(select * from SC where s.SNO=SC.SNO and CNO=C.CNO ))
10、查询计算机系微机原理成绩最好的学生的姓名
思路一:先找符合条件的学生学号,再找姓名,注意此题中有三个条件
select sn from s where DEPT='计算机' and SNO in (select SNO from SC,C where SC.CNO=C.CNO and CN='微机原理' and score=(select MAX(score) from SC,C where SC.CNO=C.CNO and CN='微机原理'))
思路二:依次到s表中判断每个学生是否符合以上条件--相关子查询
select sn from s where dept='计算机' and exists(select * from SC,C where SC.CNO=C.CNO and CN='微机原理' and SCORE=(select MAX(score) from SC,C where SC.CNO=C.CNO and CN='微机原理') and SNO=s.sno )
七、更新操作:
2)在s表中插入一条完整的纪录(记录自定义 )
insert into S (SNO,SN,SEX,AGE,dept) values ('s7','李斯','男',20,'信息') select * from s
3)如果要在表SC中插入某个学生的选课信息(如:学号为“s3”,课程号为“c2”,成绩待定),应如何进行?
insert into SC (SNO,CNO,score) values ('s3','c2',null)
4)求各系学生的平均成绩,并把结果存入数据库;
select dept,AVG(score) 平均成绩 into X from s left join SC on s.SNO=SC.SNO group by DEPT select * from x
5)s3同学的c5,c6,c7 三门课程的成绩分别是75,80,67 ,如何一次性将这些信息添加到sc表中 ?
insert into SC (SNO,CNO,score) select 's3','c5','75' union select 's3','c6','80' union select 's3','c7','67' select * from sc
6)将“计算机”系全体学生的成绩置零;
update SC set SCORE=0 where SNO in(select SNO from s where dept='计算机') select * from sc
7)删除“计算机系”系全体学生的选课记录;
delete from SC where SNO in (select SNO from s where DEPT='计算机') 8)删除学号为“S1”的相关信息;并注意跟这个学生相关信息的变化 delete from s where SNO='s1' select * from SC delete from sc where SNO='s1' select * from s
9)将学号为“S2”的学生的学号修改为“S002”;并注意跟这个学生相关信息的变化
update s set SNO='s002' where SNO='s2' select * from sc
10)把平均成绩大于80分的男同学的入另一个表S_GRADE(SNO,AVG_GRADE);
create table S_GRADE (SNO varchar(20),AVG_GRADE float) insert into S_GRADE select s.sno,AVG(score) from SC,s where SC.SNO=S.SNO and SEX='男' group by s.SNO having AVG(score)>80
11)把选修了课程名为“数据结构”的学生的成绩提高10%;
update SC set SCORE=1.1*score where cno in (select cno from c where CN='数据结构' ) select * from sc
12)把选修了“C2”号课程,且成绩低于该门课程的平均成绩的学生的成绩提高5%;
update SC set SCORE=SCORE*1.05 where CNO='c2' and SCORE<(select AVG(SCORE) from SC where CNO='c2') select * from sc
13)把选修了“C2”号课程,且成绩低于该门课程的平均成绩的学生成绩删除掉;
delete from sc where CNO='c2' and SCORE<(select AVG(SCORE) from SC where CNO='c2') select * from sc
八、权限控制:
sp_addlogin 'uu','123' sp_addlogin 'nn','123' sp_adduser 'uu','uu1' sp_adduser'uu','uu2'
1、写出如何让普通用户user1查询和使用t(tno,tn)进行查询和更新的权限--对象权限
sp_addlogin 'mm','123' sp_adduser 'mm','user1' grant select,update on t(tno,tn) to user1 grant select(tno,tn),update(tno,tn) on t to user1 revoke select,update on t(tno,tn) from user1
2、将对计算机系学生进行查询和更新的权限给user2用户
sp_addlogin 'xx','123' sp_adduser 'xx','user2' create view zz as select * from S where DEPT='计算机' with check option grant select,update on zz to user2
3、将查询dept权限给所有用户
grant select on s to public 4、将创建表的权限给普通用户user3,并使得user3获得传递权权限的能力--系统权限 sp_addlogin 'yy','123' sp_adduser 'yy','user3' grant create table to user3 with grant option
5、创建角色role1,将查询和更新s,c,sc表的权限给角色role1
sp_addrole 'role1' grant select,UPDATE on s to role1 grant select,UPDATE on c to role1 grant select,UPDATE on sc to role1
6、将用户user1,user2添加到角色role1中,但不希望user1具备更新s,c,sc的权限,写出所有相关的过程
sp_addrolemember 'role1','user1' sp_addrolemember 'role1','user2' deny update on s to user1--取消 deny update on sc to user1 deny update on c to user1
7、如何让用户具有创建数据库的权限--添加用户到服务器角色中dbcreator
sp_addsrvrolemember 'yy','dbcreator'--yy登录名添加到dbcreator服务器角色中
8、如何让用户拥有数据中所有对象的所有权限--添加用户到指定的数据库角色中db_owner
sp_addrolemember 'db_owner','user1'
9、收回user3创建表的权限
revoke create table from user3 cascade --收回级联权限
10、收回用户创建数据库的权限--删除服务器角色中的成员
sp_dropsrvrolemember 'yy','dbcreator'--删除服务器角色成员
11.如何收回用户拥有数据中所有对象的所有权限--删除数据库角色中的成员
sp_droprolemember 'db_owner','user1'
12、删除登陆用户
sp_droplogin 'mm'
13、删除数据库用户
sp_dropuser 'user1'
九、视图操作:
以S , C , SC表为基础完成以下视图定义及使用。
1) 定义“计算机”系学生基本情况视图V_IS 并查询结果;
create view V_IS as select sno,sn,sex,age,dept from s where DEPT='计算机' with check option select * from V_IS select * from s
2) 将S,C,SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G 并查询结果;
create view V_S_C_G as select s.sno,sn,c.cno,cn,score from s left join SC on s.SNO=SC.SNO left join C on C.CNO=SC.CNO select * from V_S_C_G
3) 将各系学生人数,平均成绩定义为视图V_NUM_AVG并查询结果;
create view V_NUM_AVG as select dept,COUNT(sno) 人数,AVG(age)平均成绩 from s left sc on s.sno=sc.sno group by dept
4) 定义一个反映学生出生年份的视图V_YEAR并查询结果;
create view V_YEAR as select *,year(GETDATE())-age 出生年份 from s
5) 将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G并查询结果;
create view V_AVG_S_G as select s.sno,COUNT(cno) 选修课程的门数,AVG(score) 平均成绩 from SC right join s on s.SNO=SC.SNO group by s.SNO
6) 将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G并查询结果;
create view V_AVG_C_G as select c.cno,COUNT(sno) 选修人数,AVG(score) 平均成绩 from C left join sc on SC.CNO=C.CNO group by c.CNO
7) 查询平均成绩为90分以上的学生学号、姓名和成绩; s sc V_AVG_S_G
select * from V_AVG_S_G select s.sno,sn,score from s,SC, V_AVG_S_G where s.SNO=SC.SNO and s.SNO=V_AVG_S_G.sno and 平均成绩>90
8) 查询各课成绩均大于平均成绩的学生学号、姓名、课程名 和成绩; s c,sc V_AVG_C_G
select * from V_AVG_C_G select s.sno,sn,cn,score, 平均成绩 from V_S_C_G, V_AVG_C_G where V_S_C_G.CNO=V_AVG_C_G.CNO and SCORE>平均成绩
9) 按系统计各系平均成绩在80分以上的人数,结果按降序排列; sc,s
select dept, COUNT(s.sno) from s,SC where s.SNO=SC.SNO group by dept having AVG(score)>80 order by COUNT(s.sno) desc
10) 通过视图V_IS,分别将学号为“S1”和“S4”的学生姓名更改为“S1_MMM”,”S4_MMM” 并查询结果;
update v_is set sn='S1_MMM' where sno='S1' update v_is set sn='S4_MMM' where sno='S4' select * from s
11) 通过视图V_IS,新增加一个学生记录 ('S12','YAN XI',19,'计算机')
insert into V_IS values ('S12','YAN XI',19,'计算机')
12) 通过视图V_IS,新增加一个学生记录 ('S13','YAN XI',19,'信息')
insert into V_IS values ('S12','YAN XI',19,'信息') --看不到该信息
13) 通过视图V_IS,删除学号为“S12”和“S3”的学生信息
delete from v_is where sno='s12' or sno='s3'
14) 要通过视图V_S_C_G,将学号为“S12”的姓名改为“S12_MMM”,是否可以实现?
select * from V_S_C_G update V_S_C_G set sn='S13_MMM' where sno='ss' --可更新
15) 要通过视图V_AVG_S_G,将学号为“S1”的平均成绩改为90分,是否可以实现?
select * from V_AVG_S_G update V_AVG_S_G set 平均成绩=90 where sno='s1' --不可更新
2017-12-20、01:40:45