Microsoft SQL Server 2005习题汇总小结

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

先建student ,course,sc表:


CREATE TABLE Student (

Sno     char(7)   PRIMARY KEY,   /* 在列级完整性约束处定义主码约束 */

Sname   char(10) NOT NULL,       /* 非空约束 */

Ssex    char(2),

Sage    tinyint,

Sdept   char(20)

)


CREATE TABLE Course (

Cno      char(10)  NOT NULL,

Cname    char(20)  NOT NULL,

Credit  tinyint,

Semester tinyint,

PRIMARY  KEY(Cno)               /* 在表级完整性约束处定义主码约束 */

)


CREATE TABLE SC (

Sno    char(7)   NOT NULL,

Cno    char(10)  NOT NULL,

Grade  smallint,

PRIMARY KEY(Sno, Cno),    

FOREIGN KEY(Sno) REFERENCES Student (Sno),

FOREIGN KEY(Cno) REFERENCES Course (Cno)

)  


insert into student values('9512101','李勇','',19,'计算机系')

(略)

--------------------------------------------------------------      

insert into course values('c01','计算机文化学',3,1)

()

------------------------------------------------

insert into sc values('9512101','c01',90)

(略)

建立起三个表(STUDENTCOURSESC

_ _  _  _ _  _  _ _  _  _ _  _  _ _  _  _ _  _  _ _  _  _ _  _

数据操作相关


第四章习题

1.查询学生选课表的全部数据

select*from sc


3.查询成绩在70-80分之间的学生的学号、课程号和成绩

select sno,cno,grade from SC

where gradebetween 70 and80


5.查询课程号为c01的课程的最高分数

selectmax(grade)as最高分

from sc where cno='c01'


7.统计每个系的学生人数

select sdept,count(*)from student

groupby sdept

having sdeptin('计算机系','信息系','数学系')


9.统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果

select sno as学号,count(*)as选课门数,sum(grade)as'考试总成绩'

from sc

groupby sno

11.查询选修了c02号课程的学生的姓名和所在系

select snameas姓名,sdept as所在系

fromstudent join sc onstudent.sno =sc.sno

where cno='c02'


14.查询与VB在同一学期开设的课程的课程名和开课学期

SELECT C2.Cname AS课程名,C2.Semester AS开课学期

FROMCourse C1 join Course C2

ON C1.Semester=C2.Semester

WHERE C1.Cname='VB'AND C2.Cname!='VB'


15.查询与李勇年龄相同的学生的姓名、所在系、年龄

SELECT S2.Sname AS姓名,S2.Sdept AS所在系,S2.Sage AS年龄

FROMStudent S1 join Student S2

ON S1.Sage=S2.Sage

WHERE S1.Sname='李勇'AND S2.Sname!='李勇'


16.用子查询实现如下查询

(1)查询选修了c01号课程的学生姓名和所在系

SELECTSname as姓名,Sdept as所在系From Student JOINSC

onStudent.sno=SC.sno

WHERE cnoIN(

SELECT cno from SC where cno='C01')


(2)查询数学系成绩80分以上的学生的学号、姓名、课程号和成绩

SELECT SC.Sno as学号,Sname as姓名,Cno as课程号,Grade as成绩From Student JOINSC

onStudent.Sno=SC.Sno

WHERE Grade>80


(3)查询计算机系考试成绩最高的学生的姓名

SELECTSname as姓名,Sdept as所在系,Grade as最高成绩FromStudent

join SC

ONStudent.Sno=SC.Sno

WHEREGrade=(SELECTMAX(Grade)From SC where SC.Sno in

(SELECT Sno from Student WHERESdept='计算机系'))


(4)查询数据结构考试成绩最高的学生的姓名、所在系、性别、成绩

SELECTSname as姓名,Sdept as所在系,Ssex as性别,Cname as课程,Grade as最高成绩

FromStudent

join SC ON Student.Sno=SC.Sno

joinCourse ON Course.Cno=SC.Cno

WHEREGrade=(SELECTMAX(Grade)From SC where SC.Cno=

(SELECT Cno from Course WHERECname='数据结构'))

(由于报数据结构这门课的学生的成绩都为NULL,所以结果没显示)



与权限相关


第十一章习题:

1.T-SQL语句去创建sql server身份验证模式登录名:log1,log2,log3

CREATELOGIN log1 WITHPASSWORD='123'MUST_CHANGE;

CREATELOGIN log2 WITHPASSWORD='123'MUST_CHANGE;

CREATELOGIN log3 WITH PASSWORD='123' MUST_CHANGE;



6.授予log1具有对Course表的查询权限,授予log2具有对Course表的插入权限

(先用SSMS设置了用户映射这个语句才起作用)

GRANTSELECTON Course TO log1;

GRANTINSERTON Course TO log2;


14.

为lixiyu数据库建立用户定义的角色:SelectRole

createROLESelectRole

并授予对Student,Course,SC表具有查询权

GRANTSELECTON Student TO SelectRole;

GRANTSELECTON Course TO SelectRole;

GRANTSELECTON SC TO SelectRole;


建立登录名:pub_user,并让该登录名成为student数据库的合法用户

USElixiyu

CREATELOGIN pub_user

WITHPASSWORD='123';

CREATEUSER pub_user;

此时登录pub_user建立新的数据查询

select*from course 不能成功:拒绝了对对象'Course' (数据库'master',架构'dbo')SELECT 权限。


pub_user用户添加到SelectRole角色中

EXECsp_addrolemember'SelectRole','pub_user'

此时再新建查询:select*fromcourse 可以成功



与数据库备份相关


第十二章习题

4.利用备份和恢复数据库的T-SQL语句按顺序完成下列操作

1)新建备份设备:back1back2

USEmaster;

GO

EXECsp_addumpdevice'disk','back1','D:\BACKUP\back1.bak';

EXECsp_addumpdevice'disk','back2','D:\BACKUP\back2.bak';

(2)对lixiyu数据库进行一次完整备份,以覆盖的方式备份到back1

BACKUPDATABASElixiyu TO back1 WITHINIT

(3)删除sc

use lixiyu

DROPTABLE SC

(4)lixiyu 数据库进行一次差异备份,以追加的方式备份到back1

BACKUPDATABASE lixiyu TOback1 WITH DIFFERENTIAL,NOINIT


(5)删除lixiyu数据库

DROPDATABASE lixiyu

(6)利用back1备份设备恢复lixiyu数据库完整备份

RESTOREDATABASE lixiyu FROMback1


(7)SSMS工具可以看到lixiyu数据库,因为之前对数据在back1上有完整备份;

表节点也能看到SC表,因为对数据库的完整备份时SC表仍在数据库中尚未删除

8RESTOREDATABASE lixiyu FROMback1

WITHFILE=1,NORECOVERY;

RESTOREDATABASE lixiyu FROMback1

WITHFILE=2,RECOVERY;

RESTORELOG lixiyu FROMback2

(9)看不到SC表了,因为恢复了差异备份


10usemaster;

go

EXECsp_addumpdevice'disk','lixiyu','D:\BACKUP\lixiyu.bak'

BACKUPDATABASE lixiyu TOlixiyu WITH INIT

11

BACKUPLOG lixiyu TODISK='D:\BACKUP\back2.bak'withNOINIT


本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1343606,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
7天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
46 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
17天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
15 0
|
7天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
63 6
|
7天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
11天前
|
SQL 安全 Java
SQL server 2017安装教程
SQL server 2017安装教程
14 1
|
24天前
|
SQL 存储 Python
Microsoft SQL Server 编写汉字转拼音函数
Microsoft SQL Server 编写汉字转拼音函数
|
1月前
|
SQL 存储 数据库
数据安全无忧,SQL Server 2014数据库定时备份解密
数据安全无忧,SQL Server 2014数据库定时备份解密
|
1月前
|
SQL 网络协议 Windows
破解SQL Server迷局,彻底解决“管道的另一端无任何进程错误233”
破解SQL Server迷局,彻底解决“管道的另一端无任何进程错误233”
|
1月前
|
SQL 数据库 数据安全/隐私保护
SQL Server的安装步骤_kaic
SQL Server的安装步骤_kaic