习题(全部都要用代码实现)1、创建一个名为“xsgl”数据库。
其中主数据文件为10MB,最大大小不受限制,每次增长1MB;事务日志文件大小为1MB,最大大小不受限制,文件每次增长10%。
并查看数据库信息。
create database xsglon primary(name='xsgl',filename='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\xsgl.mdf',size=10mb,maxsize=unlimited,filegrowth=1mb) log on(name='xsgl_log',filename='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\xsgl_log.ldf',size=1mb,maxsize=unlimited,filegrowth=10%) go2、为” xsgl数据库“增加一个数据库文件alter database xsgladd file(name=新增的数据库文件,filename='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\成绩数据库新增的数据文件.ndf')3、在xs gl数据库中创建kc表,主要包括课程号、课程名、学分和学时数四个字段,数据类型自己定义。
查看kc表的结构。
use xsglgocreate table kc(课程号char(4)not null,课程名char(16)not null,学分smallint,学时数smallint)go4、在xsg l数据库中创建cj表,主要包括学号、课程号、成绩三个字段,数据类型自己定义。
查看cj表的结构。
use xsglgocreate table cj(学号char(10)not null primary key,课程号char(4)not null,成绩numeric)go5、在xsgl数据库中建立一个SC表,定义SNO,CNO共同组成SC的主键。
查看SC表的结构。
create table sc(sno char(5),constraint pk_kch primary key,cno char(5),constraint pk_kch primary key,)exec sp_help sc6、将表“xs”改为“学生表”,将其中的列“电子邮件”改名为“E-mail”。
exec sp_rename'xs',' 学生表'exec sp_rename'xs.电子邮件',' e-mail'7、用代码向xs表中插入三条记录。
use xsglgoinsert xs(学号,姓名,性别,出生时间,专业,总学分,照片,备注)values(2006030101,'王林','男','88/02/03',null,20,null,null)insert xsvalues(2006030102,'程明','男','88/05/03',null,20,null,null)insert xs(学号,姓名,性别,出生时间,专业,总学分) values(2006030103,'王燕','女','87/08/022',null,20)go8、将xs表中所有男学生专业名称改写为“信息管理”。
update xsset专业='信息管理'where性别='男'9、创建一个工人信息表,它包括工人编号、姓名、性别、出生日期、职位、工资和备注信息。
并添加记录,在这个表上对数据执行相应的insert、update、delete命令。
use xsglgocreate table工人信息表(工人编号char(4)not null,姓名char(10)not null,性别char(2),出生日期char(10),职位char(16),go10、删除原有kc表,重新创建kc表,字段定义不变,同时将课程号设置为主键。
use xsgldrop table kcgocreate table kc(课程号char(4)not null constraint pk_kch primary key,课程名char(16)not null,学分smallint,学时数smallint)11、给kc表中课程名字段添加唯一约束use xsglgodrop table kcadd constraint ix_kcm unique(课程名)go12、删除sc表中的唯一约束sp_help xsgoalter table xs drop constraint df_zygo13、建立一个SC表,定义SCORE 的取值范围为0到100之间。
create table scgocreate rule成绩as @SCORE>=0 and @SCORE<=100 go15、在xs表的专业列添加一个默认约束,默认值为“信息管理”,然后添加一条新记录alter table xsadd constraint df_zy default'信息管理'for专业insert xs(学号,姓名,出生时间,总学分)values('2006030106','张永强','87/06/23',20) 16、把cj表中的学号创建为外键,其主键为xs表中的学号;课程号创建为外键,其主键为kc表中的课程号。
alter table cjadd constraint fk_cj_xs foreign key(sno) references xs(学号)alter table cjadd constraint fk_cj_kc foreign key(cno)references kc(课程号)17、创建学时数为60的默认值。
use xsglgocreate default学时数as 60 go18、创建一个学生信息表,其中name字段具有唯一性。
create table学生信息表(学号char(10),name char(10)unique,性别char(2),出生时间datetime,专业char(10),总学分smallint)19、在xs表中查询学生的学号及姓名。
use xsglgoselect 学号,姓名from xsgo20、查询xs表中前5条记录。
use xsglgoselect top 5 *from xsgo21、查询年龄为23岁且性别为“女”的学生。
use xsglgoselect姓名,性别,年龄=datediff(year,出生时间,getdate())from xswhere datediff(year,出生时间,getdate())=23 and性别='女'go22、查询选修了“a003”和“j003”的学生的学号。
use xsglgoselect学号from cjwhere课程号='a003'and课程号='j003'go23、按年龄从小到大的顺序显示女学生的姓名,性别及出生时间。
use xsglgoselect姓名,性别,出生时间from xswhere性别='女'order by出生时间descgo24、查询选修了“a003”课程的学生人数。
use xsglgoselect选课人数=count(distinct学号) from cjwhere课程号='a003'go25、查询选修了“a001”号课程的学生最高分数。
use xsglgoselect a001课程最高分=max(成绩)from cjwhere课程号='a001'go26、查询cj表中平均成绩大于60分的学生的学号、平均分,并按分数由高到低排序。
use xsglgoselect学号,avg(成绩)as平均成绩from cjgroup by学号having avg(成绩)>=60order by avg(成绩)descgo28、在xs表中查询和…程明‟在同一专业的所有男同学信息use xsglgoselect*from xswhere性别='男'and专业=(select专业from xswhere姓名='程明'and姓名<>'程明')go。
29、在xs gl数据库下创建一个名为“男学生成绩”视图,包括学生的学号、姓名、课程名和相应分数。
create view男学生成绩asselect cj.学号,xs.姓名,kc.课程名,cj.成绩from xs,cj,kcwhere xs.性别='男'and xs.学号=cj.学号go}30、给出执行学生成绩查询的I/O统计。
set statistics io ongoselect*from xs a inner join cj b on a.学号=b.学号goset statistics io off31、查询xs表,将返回的记录数赋给局部变量@NUM。
use xsglgodeclare @num intset @num=(select count(*)from xs)select @num=count(*)from xsselect @num as'总人数'go32、使用局部变量,查询xs表中女同学的记录。
use xsgluse xsglgocreate view 男学生成绩视图asselect cj.学号,xs.姓名,cj.课程号,kc.课程名,cj.成绩from xs,cj,kcwhere xs.学号=cj.学号 and cj.课程号=kc.课程号 and xs.性别='男'go33、显示c j表中的数据,并使用CASE语句将课程号替换为课程名。
select学号,课程名=case课程号when'j001'then'计算机基础'when'j002'then'数据结构'when'j003'then'操作系统'when'j005'then'数据库SQL Server'when'a001'then'英语'when'a002'then'数学'when'a003'then'哲学'end,成绩from cj34、使用goto语句求5的阶乘.declare @i int,@t intset @i=1set @t=1label:set @t=@t*@iset @i=@t+1if @i<=5goto label select @t。