Server SQL 2008 练习
一、修改数据库
(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:\。
Alter database db_temp Add log file (name=’ db_temp1-log’, filename=’d:\ db_temp1-log.ldf’,size=5,filegrowth=10%,maxsize=unliminted)
(3)给db_temp数据库添加一文件组 hh,利用系统存储过程sp_helpdb查看db_temp数据库系统信息
Alter database db_temp 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',''
union
select 's3','c6',''
union
select 's3','c7',''
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',''
sp_addlogin 'nn',''
sp_adduser 'uu','uu1'
sp_adduser'uu','uu2'
1、写出如何让普通用户user1查询和使用t(tno,tn)进行查询和更新的权限--对象权限
sp_addlogin 'mm',''
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',''
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',''
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
Server SQL 2008 练习的更多相关文章
- Server SQL 2008 习题
[序言:学期末了,整理了自己这个学期学习数据库做的练习题,也是让自己复习了一遍.有错误的话希望大佬能够批评指正,不胜感激] 一.修改数据库 (1)给db_temp数据库添加一个数据文件文件db_tem ...
- 关于Server Sql 2008触发器的使用
1.创建同一个服务器下同一个数据库实例两个不同数据库表同步方法 --==================================== -- Create database trigger -- ...
- SQL Server事务复制(sql 2008 r2)
一.环境准备 1.两个虚拟服务器 主机1:XINXIBU01 作为发布和分发服务器 主 机2:XINXIBU02 192.168.1.160 作业阅服务器 2.SQL SERVER sql 2 ...
- 安装SQl 2008为SQL Server代理服务提供的凭据无效
解决:安装SQl 2008为SQL Server代理服务提供的凭据无效 sql server 2008 代理服务提供的凭据无效sql server 2008 代理服务提供的凭据无效在Windows S ...
- SQL SERVER 2005/2008 中关于架构的理解(二)
本文上接SQL SERVER 2005/2008 中关于架构的理解(一) 架构的作用与示例 用户与架构(schema)分开,让数据库内各对象不再绑在某个用户账号上,可以解决SQL SERVE ...
- SQL SERVER 2005/2008 中关于架构的理解(一)
SQL SERVER 2005/2008 中关于架构的理解(一) 在一次的实际工作中碰到以下情况,在 SQL SERVER 2008中,新建了一个新用户去访问几张由其他用户创建的表,但是无法进行查询, ...
- 【缓存】Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结
Sql server 7.0/2000下 SqlCacheDependency使用轮询的方式进行缓存失效检查, 虽然ms说对服务器压力不大, 但还是有一些的, 而且对于不常改动的混存内容无休止的轮询感 ...
- SQL Server R2 2008中的SQL Server Management Studio 阻止保存要求重新创建表的更改问题的设置方法
在2008中会加入阻止保存要求重新创建表的更改这个选项.症状表现为修改表结构的时候会"阻止"你. SQL Server 2008“阻止保存要求重新创建表的更改”的错误的解决方案是本 ...
- SQL 2008 SP2 找不到SQL Server Engine
原文:SQL 2008 SP2 找不到SQL Server Engine 最近我有个客户碰到一个很奇怪的问题.他安装SQL server 2008 SP2的时候, SP2的安装程序无法找到SQL se ...
随机推荐
- django中处理表单的经典流程
def form_process_view(request): if request.method == 'POST': # 请求为 POST,利用用户提交的数据构造一个绑定了数据的表单 form = ...
- 洛谷金秋夏令营模拟赛 第2场 T11737 时之终末
这道题就是道状压dp...比赛的时候太贪心 然后状压又不好 所以T2 T3一起挂了QAQ 吸取教训QAQ f[i][j][k]表示前i个数选了j个 最后a个的状态为k的答案 #include<c ...
- 【洛谷 P1073】 最优贸易 (Tarjan缩点+拓扑排序)
题目链接 先\(Tarjan\)缩点,记录每个环内的最大值和最小值. 然后跑拓扑排序,\(Min[u]\)表示到\(u\)的最小值,\(ans[u]\)表示到\(u\)的答案,\(Min\)和\(an ...
- TOJ 1005 Hero In Maze (深搜)
描述 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人^_^. 突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中.Jesse听说这个消息已经是两天以后了,他知道公主在迷宫 ...
- 简易微信小程序签到功能
一.效果图 点击签到后 二.数据库 用一张数据表存用户签到的信息,每次用户签到都会往表中添加一条记录了用户id和签到日期的数据,如下图 三.后端 后端写两个接口,一个用于查询用户今日是否签到和签到记录 ...
- el-date-picker 日期格式化 yyyy-MM-dd
<el-date-picker format="yyyy-MM-dd" v-model="dateValue" type="date" ...
- 【HNOI】 lct tree-dp
[题目描述]给定2-3颗树,每个边的边权为1,解决以下独立的问题. 现在通过连接若干遍使得图为连通图,并且Σdis(x,y)最大,x,y只算一次. 每个点为黑点或者白点,现在需要删除一些边,使得图中的 ...
- HDU 5627 Clarke and MST &意义下最大生成树 贪心
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5627 题意:Bestcoder的一道题,让你求&意义下的最大生成树. 解法: 贪心,我们从高位 ...
- C 实现一个简易的Http服务器 (二)
正文 - 直接搞起 C 实现一个简易的Http服务器 很久以前写过一个简易的http服务器, 后面和一个朋友交流, 反思后发现问题不少.在这里简单搞一下. 让其更加简单去表现httpd本质, 弱化协议 ...
- Makefile 跟着走快点
引言 - 从"HelloWorld"开始 Makefile 是Linux C 程序开发最重要的基本功. 代表着整个项目编译和最终生成过程.本文重点是带大家了解真实项目中那些简易的 ...