课程:数据库原理及应用
实验题目:
实验3 表数据的插入,修改和删除
实验4 数据库的简单的查询和连接查询
实验5 数据库的复杂查询
实验6 索引和视图
学院:计算机学院 班级:计科0803
学号:04081101 姓名:高朋辉
任课教师:
孟彩霞 时间:2010-10-25
一、实验目的
1.掌握使用T-SQL语句语句和企业管理器对数据表进行插入,修改和删除数据的操作,并体会数据完整性约束的作用,加深对数据完整性约束的理解。
2.数据查询是数据库中最基本的操作,也是使用最频繁的操作,因此掌握T-SQL语句的查询语句的使用方法。本实验要求掌握最简单表的数据查询,数据排序和夺标操作室数据连接查询的操作方法。
3.进一步掌握SELECT语句的使用的方法,通过实验能够熟练的使用SELECT语句。本实验要求掌握嵌套查询和统计查询的方法。
4.理解索引和视图的概念。
5.掌握索引的使用方法。
6.掌握视图的定义和使用方法。
二、实验内容
1.分别使用T-SQL语句和企业管理器,向数据库JWGL,数据库Market,数据库SPJ,数据库TSGL中的各张表中输入一些记录。
2.使用T-SQL语句进行插入,修改和删除记录的操作。
3.简单查询操作。包括投影,选择条件表达,数据排序等。
4.连接查询操作。试验包括等值连接,自然连接,一半连接(内连接),外连接,做连接,右连接和自然链接等。
5.在数据库JWGL的学生表Student,课程表Course,学生选课表SC中完成第三章3.40-3.47中的查询操作。
6.在数据库Market的客户表Customers,货品表Goods,订单表Orders中完成习题6中(6)-(9)的查询。
7.在数据库SPJ中的供应商表S,零件表P,工程项目表J,供应情况表SPJ中,用SELECT查询语句完成第2章习题10中(4)-(5)的查询。
8.在数据库TSGL的图书,读者和借阅3个表中,用SELECT语句完成各种查询。
9.建立索引。对JWGL数据库的学生选课表sc建立索引。
10.视图的定义和操作。
三、实验环境
MS SQL Server 2000
四、实验前准备
1.上机鞋套,没鞋套,不准进机房,太霸道。
2.上机使用代码。
3.课本。
五、实验步骤
1.打开软件,熟悉 SQL Server 2000的环境
2. 使用和企业管理器,向数据库JWGL,数据库Market,数据库SPJ,数据库TSGL中的各张表中输入一些记录:
(1)打开企业管理器,依次打开各个表对应的数据库。
(2).分别打开各个表,然后依次输入各项数据。
2.使用T-SQL语句进行插入,修改和删除记录的操作。
(1)基本表的修改语句
ALTER TABLE
[ADD[]]
[DROP CONSTRAINT ]
[ALTER
COLUMN];
例:将年龄的数据类型改为长整形:
ALTER TABLE Student ALTER COLUMN Sage INT;
(2)基本表的删除语句
DORP TABLE
例:删除Student表:
DROP TABLE Student;
3.简单查询操作。包括投影,选择条件表达,数据排序等。
例:(1)查询全体学生的学号,姓名和所在系的有关信息:
SELECT Sno,Sname,Sdept
FROM Student;
(2)查询全体学生的姓名及其出生年份:
SELECT Sname,2010-Sage
FROM Student;
(3)查询结果排序操作语句
ORDER BY[ASC|DESC],[…..]
例:查询选修了1号课程的学生的学号及其成绩,查询结果按成绩的降序排序:
SELECT Sno ,Grade
FROM SC
WHERE Cno=‘1’
ORDER BY Grade DESC;
4.连接查询操作。试验包括等值连接,自然连接,一半连接(内连接),外连接,做连接,右连接和自然链接等。
(1)等值连接:
[.][.]
例:查询每个学生及其选修课的情况:
SELECT Student.*,sc.*
FORM Student,Sc
WHERE
Student.Sno=Sc.sno;
(2)自然连接
例:查询每门课的简介选修课
SELECT
First.Cno,second.Cpno
FORM Course First,Course
Second
WHERE
Frist.Cno=Second.cno;
(3)外连接
SELECT
[,]….
FROM [LEFT|RIGHT|FULL[OUTER]]
JOIN
ON
.=.
例:
SELECT Student.sno,sname,ssex,sage,sdept,cno,grade
FORM Student LEFT OUTER JOIN SC
ON Student.sno=sc.sno;
5.在数据库JWGL的学生表Student,课程表Course,学生选课表SC中完成第三章3.40-3.47中的查询操作。
3.40 :
SELECT Sname
FROM student
WHERE Sno IN
(SELECT Sno
FROM SC
WHERE Cno=‘1’);
3.41:
SELECT Sno,Sname
FROM student
WHERE Sdept=
(SELECT Sdept
FROM Student
WHERE Sname=‘张明’);
3.42:
SELECT sname,sage
FROM student
WHERE Sdept<>‘CS’
AND Sage
FROM student
WHERE sdept=‘cs’);
3.43:
SELECT sno,cno
FORM sc x
WHERE grade>=( SELECT AVG(grade)
FROM sc y
WHERE y.cno=x.cno);
3.44:
SELECT sname
FORM student
WHERE EXISTS
(SETECT *
FORM SC
WHERE Sno=student.sno AND cno=‘3’);
3.45:
SELECT sname
FORM student
WHERE NOT EXISTS
(SETECT *
FORM course
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno=student.sno AND cno=));
3.46:
SELECT DISTINCT Sno
FROM SC SCX
WHERE NOT EXISTS
(SELECT *
FROM SC SCY
WHERE SCY.Sno=‘950002’AND NOT EXISTS
(SELECT *
FROM SC SCZ
WHERE SCZ.Sno=SCX.sno AND SCZ.Cno=SCY.Cno));
3.47:
SELECT Sno
FROM SC
WHERE Cno=‘1’
UNION
SELECT Sno
FROM SC
WHERE Cno=‘2’;
6.在数据库Market的客户表Customers,货品表Goods,订单表Orders中完成习题6中(6)-(9)的查询。
(6):
SELECT CustomerID ,GoodID,orderID
FROM Orders
WHERE Qauntity>200
GROUP BY Date;
(7):
SELECT *
FROM orders
WHERE CustomerID IN
(SELECT CustomerID
FROM Customers
WHERE CITY=’北京’);
(8):
SELECT *
FROM orders
WHERE CustomerID NOT IN
(SELECT CustomerID
FROM Customer
WHERE CITY=’天津’);
(9):
SELECT Customers,CustomerID ,Cname,CITY,orderID, GoodID,
Qauntity,ordersum,Date
FROM Orders Customers
WHERE Customers.CustomerID=orders。CustomerID
AND
CITY=’西安’;
7.在数据库SPJ中的供应商表S,零件表P,工程项目表J,供应情况表SPJ中,用SELECT查询语句完成第2章习题10中(4)-(5)的查询。
S表:
CREATE TABLE S
(SNO CHAR(6) PRIMARY KEY,
SNAME CHAR(10) UNIQUE,
STAUS INT,
CITY CHAR(10),
);
P表:
CREATE TABLE p
(PNAME CHAR(10) UNIQUE,
COLOR SMALLINT NOT NULL,
WEIGHT INT,
) ;
J表:
CREATE TABLE J
(JNO CHAR(6) PRIMARY KEY,
JNAME CHAR(6) UNIQUE,
CITY CHAR(10),NOT NULL,);
SPJ表:
CREATE TABLES
( SNO CHAR(6),
PNO
CHAR(6),
JNO CHAR(6),
QTY INT,
PRIMARY KEY (SNO ,PNO,JNO),
FOREIGN KEY(SNO) REFERENCES S(SNO),
FOREIGN KEY(PNO) REFERENCES S(PNO),
FOREIGN
KEY(JNO) REFERENCES S(JNO),
);
8.在数据库TSGL的图书,读者和借阅3个表中,用SELECT语句完成各种查询。
9.建立索引。对JWGL数据库的学生选课表sc建立索引。
USE JWGL
IF EXISTS(SELECT name FROM sysindexes WHERE name=‘SC-ind‘)
GO
USE JWGL
CREATE INDEX SC-ind ON SC(Cno,grade DESC);
10.视图的定义和操作。
11.使用T-SQL语句在SPJ数据库中建立第2章习题10中的4张表:S,P,J,SPJ.
S表:
CREATE TABLE S
(SNO CHAR(6) PRIMARY KEY,
SNAME CHAR(10) UNIQUE,
STAUS INT,
CITY CHAR(10),
);
P表:
CREATE TABLE p
(PNAME CHAR(10) UNIQUE,
COLOR SMALLINT NOT NULL,
WEIGHT INT,
) ;
J表:
CREATE TABLE J
(JNO CHAR(6) PRIMARY KEY,
JNAME CHAR(6) UNIQUE,
CITY CHAR(10),NOT NULL,);
SPJ表:
CREATE TABLES
( SNO CHAR(6),
PNO CHAR(6),
JNO CHAR(6),
QTY INT,
PRIMARY KEY (SNO ,PNO,JNO),
FOREIGN KEY(SNO) REFERENCES S(SNO),
FOREIGN KEY(PNO) REFERENCES S(PNO),
FOREIGN KEY(JNO) REFERENCES S(JNO),
);
12.使用T-SQL语句在图书借阅管理数据库TSGL中建立图书,读者和借阅3个表。
六、实验结果
(1)运行结果大概相符于预期。
(2)实验取得了前所未有的成功。
(3)我骄傲啊
七、评价分析及心得体会
(1).熟悉环境很重要。
(2).熟练的编写代码很难。
(3).要特别注意细节,注意各个项的属性类别。