频道栏目
首页 > 资讯 > SQL Server > 正文

SQL Server 2008交互式SQL语言实例练习

12-10-13        来源:[db:作者]  
收藏   我要投稿

数据库学习初步
一、数据定义
(一)、基本表操作
先建立school数据库,在school数据库里做以下的操作。www.2cto.com

1.建立基本表
1)创建学生表Student,由以下属性组成: 学号SNO(INT 型,主码),姓名SNAME(CHAR型,长度为8,非空唯一),性别SEX(CHAR 型,长度为2),所在系DEPTNO (INT 型)。
 
2)创建课程表Course,由以下属性组成:课程号CNO(INT 型),课程名CNAME(CHAR型,长度为20,非空),授课教师编号TNO(INT型),学分CREDIT(INT型)。其中(CNO,TNO)为主码。www.2cto.com
 
3)创建学生选课表SC,由以下属性组成:学号SNO,课程CNO,成绩GRADE。所有属性均为INT 型,其中(SNO,CNO)为主码。
 
4)创建教师表Teacher,由以下属性组成:教师编号TNO(INT 型,主码),教师姓名TNAME(CHAR型,长度为8,非空),所在系DEPTNO(INT 型)。www.2cto.com

 
5)创建系表Dept,由以下属性:系号DEPTNO(INT型,主码),系名DNAME(CHAR 型,长度为20,非空)。
 
2.修改基本表
1)在Student 表中加入属性SAGE(INT 型)。www.2cto.com
 
2)将Student 表中的属性SAGE 类型改为SMALLINT 型。
 
3.删除基本表
1)在所有操作结束后删除STUDENT 表。
 
2)在所有操作结束后删除COURSE 表。
 
3)在所有操作结束后删除SC 表。
 
4)在所有操作结束后删除TEACHER 表。
 
5)在所有操作结束后删除DEPT 表。
 www.2cto.com
(二)、索引操作
1.建立索引
1)在Student 表上建立关于SNO 的唯一索引stusno。
 
2)在Course 表上建立关于CNO 升序的唯一索引coucno。
 
2.删除索引
1)删除Student 表上的索引stusno。
 
2)删除Course 表上的索引coucno。
 
(三)、视图操作
1.建立视图
在插入数据的Student 基本表上为计算机科学与技术系的学生记录建立一个视图CS_STUDENT。
 
2.删除视图
在操作结束后删除视图CS_STUDENT。
 
二、数据操作
(一)、更新操作
1.插入数据
1)向STUDENT 表插入下列数据:
1001,张天,男,10,20
1002,李兰,女,10,21
1003,陈铭,男,10,21
1004,刘茜,女,20,21
1005,马朝阳,男,20,22 www.2cto.com
 
2)向COURSE 表插入下列数据:
1,数据结构,101,4
2,数据库,102,4
3,离散数学,103,4
4,C 语言程序设计,101,2
 
3)向SC 表插入下列数据:
1001,1,80
1001,2,85
1001,3,78
1002,1,78
1002,2,82
1002,3,86
1003,1,92
1003,3,90
1004,1,87
1004,4,90
1005,1,85
1005,4,92

 
4)向TEACHER 表插入下列数据:
101,张星,10
102,李珊,10
103,赵天应,10
104,刘田, 20

 
5)向DEPT 表插入下列数据:
10,计算机科学与技术
20,信息

 
2.修改数据
将张星老师数据结构课的学生成绩全部加2 分

3.删除数据
删除马朝阳同学的所有选课记录
 
(二)、查询操作
1.单表查询
1)查询所有学生的信息。

2)查询所有女生的姓名。

3)查询成绩在80 到89 之间的所有学生选课记录,查询结果按成绩的降序排列。

4)查询各个系的学生人数。
 
2.连接查询
查询信息系年龄在21 岁以下(含21 岁)的女生姓名及其年龄。
 
3.嵌套查询
1)查询修课总学分在10 学分以下的学生姓名。

2)查询各门课程取得最高成绩的学生姓名及其成绩。

3)查询选修了1001 学生选修的全部课程的学生学号。

4)查询选修了张星老师开设的全部课程的学生姓名。
 www.2cto.com
出现的问题及解决方案:
1.在创建基本表时是否可以缺省主码?

2.对基本表进行修改,执行ALTER TABLE Student MODIFY Sage SMALLINT 显示执行失败。
 
自己做的答案:
(一)基本表操作
建立基本表
1) 建立Student表
命令行操作:
CREATE TABLE Student
( SNO INT NOT NULL PRIMARY KEY,
  SNAME CHAR(8) NOT NULL,
  SEX CHAR(2) NOT NULL,
  DEPTNO INT NOT NULL)
 www.2cto.com
2) 建立Course表
命令行操作:
CREATE TABLE Course
(
  CNO INT NOT NULL,
  CNAME CHAR(20) NOT NULL,
  TNO INT NOT NULL,
  CREDIT INT NOT NULL,
PRIMARY KEY(CNO, TNO)
)
3) 建立SC表
命令行操作:
CREATE TABLE SC
(
SNO INT NOT NULL,
CNO INT NOT NULL,
GRAGE INT NOT NULL,
 PRIMARY KEY(SNO, CNO)
)www.2cto.com
4) 建立Teacher表
命令行操作:
CREATE TABLE Teacher
( TNO INT NOT NULL,
  TNAME CHAR(8) NOT NULL PRIMARY KEY,
  DEPTNO INT NOT NULL
)
5) 建立Depth表
命令行操作:
 CREATE TABLE Dept
(
  DEPTNO INT NOT NULL PRIMARY KEY,
  DNAME CHAR(20) NOT NULL
)
2.修改基本表
1)在Student 表中加入属性SAGE(INT 型)。
命令行操作:
ALTER TABLE Student ADD SAGE INT;
2)将Student 表中的属性SAGE 类型改为SMALLINT 型。
 命令行操作:
ALTER TABLE Student alter column SAGE SMALLINT;
 
3.删除基本表
1)在所有操作结束后删除STUDENT表。
命令行操作:
DROP TABLE Student;
2)在所有操作结束后删除COURSE表。
DROP TABLE Course;
3)在所有操作结束后删除SC 表。
DROP TABLE SC;
4)在所有操作结束后删除TEACHER表。
DROP TABLE Teacher;
5)在所有操作结束后删除DEPT表。
DROP TABLE Dept;www.2cto.com
 
(二)、索引操作
1.建立索引
1)在Student 表上建立关于SNO 的唯一索引stusno。
CREATE UNIQUE INDEX stusno ON Student(SNO);
2)在Course 表上建立关于CNO 升序的唯一索引coucno。
CREATE UNIQUE INDEX coucno ON Course(CNO);
 
2.删除索引
1)删除Student 表上的索引stusno。
DROP INDEX Student.stusno;
2)删除Course 表上的索引coucno。
DROP INDEX Course.coucno;
 
(三)、视图操作
1.建立视图
在插入数据的Student 基本表上为计算机科学与技术系的学生记录建立一个视图CS_STUDENT。
 
2.删除视图
在操作结束后删除视图CS_STUDENT。
 
二、数据操作
(一)、更新操作
1.插入数据
1)向STUDENT 表插入下列数据:
1001,张天,男,10,20
1002,李兰,女,10,21
1003,陈铭,男,10,21
1004,刘茜,女,20,21
1005,马朝阳,男,20,22
命令行操作:
INSERT INTO Student
VALUES(1001,'张天','男',10,20);
INSERT INTO Student
VALUES(1002,'李兰','女',10,21);
INSERT INTO Student
VALUES(1003,'陈铭','男',10,21);
INSERT INTO Student
VALUES(1004,'刘茜','女',20,21);
INSERT INTO Student
VALUES(1005,'马朝阳','男',20,22);
www.2cto.com
2)向COURSE 表插入下列数据:
1,数据结构,101,4
2,数据库,102,4
3,离散数学,103,4
4,C 语言程序设计,101,2
命令行操作:
INSERT INTO Course
VALUES(1,'数据结构',101,4);
INSERT INTO Course
VALUES(2,'数据库',102,4);
INSERT INTO Course
VALUES(3,'离散数学',103,4);
INSERT INTO Course
VALUES(4,'C 语言程序设计',101,2);
 
3)向SC 表插入下列数据:
1001,1,80
1001,2,85
1001,3,78
1002,1,78
1002,2,82
1002,3,86
1003,1,92
1003,3,90
1004,1,87
1004,4,90
1005,1,85
1005,4,92
命令行操作:
INSERT INTO SC(SNO, CNO, GRAGE)
SELECT 1001,1,80 union
SELECT 1001,2,85 union
SELECT 1001,3,78 union
SELECT 1002,1,78 union
SELECT 1002,2,82 union
SELECT 1002,3,86 union
SELECT 1003,1,92 union
SELECT 1003,3,90 union
SELECT 1004,1,87 union
SELECT 1004,4,90 union
SELECT 1005,1,85 union
SELECT 1005,4,92

4)向TEACHER 表插入下列数据:
101,张星,10
102,李珊,10
103,赵天应,10
104,刘田, 20
命令行操作:
INSERT INTO Teacher(TNO, TNAME, DEPTNO)
SELECT 101,'张星',10 union
SELECT 102,'李珊',10 union
SELECT 103,'赵天应',10 union
SELECT 104,'刘田', 20
 
5)向DEPT 表插入下列数据:
10,计算机科学与技术
20,信息
命令行操作:
INSERT INTO Dept(DEPTNO, DNAME)
SELECT 10,'计算机科学与技术' union
SELECT 20,'信息'
 
2.修改数据
将张星老师数据结构课的学生成绩全部加2 分
 
3.删除数据
删除马朝阳同学的所有选课记录
 
(二)、查询操作
1.单表查询
1)查询所有学生的信息。
SELECT SNO, SNAME, SEX, DEPTNO, SAGE
FROM Student;
 
2)查询所有女生的姓名。
SELECT SNAME
FROM Student
WHERE SEX IN('女');
 
3)查询成绩在80 到89 之间的所有学生选课记录,查询结果按成绩的降序排列。
SELECT CNO
FROM SC
WHERE GRAGE BETWEEN 80 AND 89;
4)查询各个系的学生人数。
SELECT DISTINCT DEPTNO
FROM Dept;
2.连接查询
查询信息系年龄在21 岁以下(含21 岁)的女生姓名及其年龄。
SELECT SNAME, SAGE
FROM Student, Dept
WHERE DNAME = '信息' AND SAGE <= 21 AND SEX = '女';
3.嵌套查询
1)查询修课总学分在10 学分以下的学生姓名。
SELECT SNAME
FROM Student, Course
WHERE CREDIT < 10;
2)查询各门课程取得最高成绩的学生姓名及其成绩。
SELECT SNAME ,GRAGE,
FROM Student, SC
WHERE Student.SNO = SC.SNO AND GRAGE IN
 (SELECT MAX(GRAGE)
 FROM SC
 GROUP BY CNO);
3)查询选修了1001 学生选修的全部课程的学生学号。
 
4)查询选修了张星老师开设的全部课程的学生姓名。
 
出现的问题及解决方案:
1.在创建基本表时是否可以缺省主码?
解:可以
2.对基本表进行修改,执行ALTER TABLE Student MODIFY Sage SMALLINT 显示执行失败。
解:将MODIFY更改为alter column就可以解决。
 
相关TAG标签
上一篇:HDU 3339 In Action(最短路+背包)
下一篇:Android 4.1 - 将系统浏览器编译成独立应用
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站