《数据库实验前几个解答骄阳教育》由会员分享,可在线阅读,更多相关《数据库实验前几个解答骄阳教育(11页珍藏版)》请在金锄头文库上搜索。
1、上机实验一数据库的管理-创建数据库CREATE DATABASE teachingDataAON PRIMARY(name=teachingDataA,filename=e:teachingDataA.mdf)LOG ON(name=teachingDataA_log,filename=e:teachingDataA_log.ldf)-删除数据库-DROP DATABASE teachingDataA实验二 数据表的管理(一) USE teachingDataA-自定义数据类型myIDCREATE TYPE myID FROM char(6) NOT NULL-自定义数据类型myName1CR
2、EATE TYPE myName1 FROM nvarchar(10) NOT NULL-自定义数据类型myName2CREATE TYPE myName2 FROM char(20) NOT NULL-自定义数据类型myDeptCREATE TYPE myDept FROM char(50)-创建数据表TInfoCREATE TABLE TInfo(TID myID PRIMARY KEY,TName myName1,Sex char(2) DEFAULT 男 CHECK(sex=男 or sex=女),Dept myDept,Birthday smalldatetime,Title var
3、char(10),homeTel nchar(8),MPhone nchar(11)-或/*CREATE TABLE TInfo(TID myID PRIMARY KEY,TName myName1,Sex char(2) DEFAULT 男,Dept myDept,Birthday smalldatetime,Title varchar(10),homeTel nchar(8),MPhone nchar(11),CONSTRAINT CK_SEX CHECK(sex=男 or sex=女)*/-创建学生表SInfoCREATE TABLE SInfo(SID myID PRIMARY KEY
4、,SName myName1,Sex char(2) DEFAULT 男 CHECK(sex=男 or sex=女),Birthday smalldatetime,Dept myDept,major varchar(30),Class nchar(18),IDCardNo char(18)-创建课程表CInfoCREATE TABLE CInfo(CID myID PRIMARY KEY,CName myName2,CCredit tinyint,CProperty varchar(10)-创建选修表ScoreInfoCREATE TABLE ScoreInfo(CID myID FOREIG
5、N KEY REFERENCES CInfo(CID),SID myID FOREIGN KEY REFERENCES SInfo(SID),TID myID,Score numeric(3,1),Schyear char(9),term char(1),FOREIGN KEY(TID) REFERENCES TInfo(TID),PRIMARY KEY(CID,SID)-修改表SInfo表的表结构,设置IDCardNo值为唯一的。ALTER TABLE SInfoADD CONSTRAINT UQ_Card UNIQUE(IDCardNo)-修改表ScoreInfo的表结构,设置term值只
6、能为1或2,默认值为1。ALTER TABLE ScoreInfoADD CONSTRAINT CK_term CHECK(term=1 OR term=2)ALTER TABLE ScoreInfoADD CONSTRAINT DF_term DEFAULT(1) FOR term-在表SInfo中添加一字段EntrData(即入学日期),要求该输入范围在1900-1-1至2079-12-31。之间ALTER TABLE SInfoADD EntrDate SmallDateTime-修改表TInfo的表结构,要求删除其中的Birthday字段。ALTER TABLE TInfoDROP C
7、OLUMN Birthday-修改表TInfo表的表结构,其中的字段homeTel只允许为数字,且第1位数不能为0。ALTER TABLE TInfoADD CONSTRAINT CK_ThomeTel CHECK(homeTel like 1-90-90-90-90-90-90-90-9)-修改表TInfo的表结构,增加Birthday字段。ALTER TABLE TInfoADD Birthday datetime-向教师表插入数据INSERT INTO TInfo(TID, TName, sex, Dept, Birthday, Title, homeTel)VALUES(101001,
8、施华,男,1962-5-1,教授,43562634)-利用T-SQL命令语句在表TInfo中输入数据,当TID大于101000且小于101999时,其所在部门Dept为信息管理,当TID大于102000且小于102999时,其所在部门Dept为电子商务。UPDATE TInfoSET Dept=信息管理 where TID=101001 and TID=102001 and TID=102999实验三 数据表的管理(二) -利用T-SQL命令语句修改数据表SInfo,取消对性别sex默认字段值的设置。ALTER TABLE SInfoDROP CONSTRAINT DF_SInfo_Sex_0
9、519C6AF-利用T-SQL命令语句移除表ScoreInfo的TID外键引用,移除表TInfo的主键设置。ALTER TABLE ScoreInfoDROP CONSTRAINT FK_ScoreInfo_TID_0CBAE877-外键ALTER TABLE TInfoDROP CONSTRAINT PK_TInfo_00551192-主键-利用T-SQL命令语句更改表SInfo中的字段SID名为SNO。EXEC sp_rename SInfo.SID,SNO,COLUMN-利用T-SQL命令为表TInfo按教师工号(TID)升序建立一个聚集索引clu_tid。CREATE CLUSTERE
10、D INDEX clu_tid ON TInfo(TID ASC)-删除索引clu_tidDROP INDEX TInfo.clu_tid-利用T-SQL命令为表TInfo中的Dept和TName两个字段创建一个简单的复合索引ix_dptnm。CREATE NONCLUSTERED INDEX ix_dptnm ON TInfo(Dept,TName)-利用T-SQL命令为表TInfo中的HomeTel字段创建一个唯一索引unq_hometel。CREATE UNIQUE INDEX unq_hometel ON TInfo(HomeTel)-利用T-SQL命令为表TInfo中的TName字段
11、创建降序的非聚集索引。CREATE NONCLUSTERED INDEX ix_Tname ON TInfo(TName DESC)-禁用表TInfo的索引clu_tid。ALTER INDEX clu_tid ON TInfoDISABLE-启用索引表TInfo的索引clu_tid。ALTER INDEX clu_tid ON TInfoREBUILD-删除已经建立的复合索引ix_dptnm。DROP INDEX ix_dptnm ON TInfo实验四 数据的查询-(一)基本查询-1、查询TchInfo表中教师的工号TID、姓名TName和职称Title,要求查询结果列将TID、TName
12、和Title字段分别显示为工号、姓名和职称。USE teachingDataSELECT TID 工号,TName 姓名,Title 职称FROM TchInfo-2、查询TchInfo表中教师的全部信息。SELECT *FROM TchInfo-3、查询TchInfo表前6行数据。SELECT TOP 6 *FROM TchInfo-4、查询TchInfo表中前50%的数据。SELECT TOP 50 PERCENT *FROM TchInfo-(二)条件查询-1、在表StuInfo中查询2009级、物电学院的学生姓名、性别和所在系。SELECT Sname,Sex,DeptFROM Stu
13、InfoWHERE Grade=2009 AND Dept=物电学院-2、查询StuInfo中出生年月介于1989年9月1日到1990年8月31日的学生信息。SELECT *FROM StuInfoWHERE Birthday BETWEEN 1989-9-1 AND 1990-8-31-3、查询职称为副教授和教授的教师的信息。SELECT *FROM TchInfoWHERE Title = 教授 OR Title=副教授-或SELECT *FROM TchInfoWHERE Title IN (教授,副教授)-4、在表StuInfo中查询所有学号为“2010”开头学生的姓名SName和专业
14、Major。SELECT SName, MajorFROM StuInfoWHERE LEFT(SID,4)=2010-5、在表StuInfo中查询所有学号的第5,6位为“10”的学生的姓名SName和专业Major。SELECT SName, MajorFROM StuInfoWHERE SUBSTRING(SID,5,2)=10-(三)排序与分组查询-1、查询表ScoreInfo中选修了“1101”课程的学生的学号和学生成绩,并按成绩进行降序排列。SELECT SID, ScoreFROM ScoreInfoWHERE CID=1101ORDER BY Score DESC-2、通过查询表TchInfo查询各院系的讲师数。SELECT Dept, COUNT(*) 讲师人数FROM TchInfoWHERE Title=讲师GROUP BY Dept-3、通过表scoreinfo查询各门课程的平均成绩,要求显示列名为:课程代码和平均成绩。SELECT CID as 课程代码, AVG(Score) as 平均成绩FROM ScoreInfoGROUP BY CID- (四)联结查询-查询选修了数据库原理与应用 课程且成绩在70分以上的所有学生的姓名、成绩。