数据库原理与应用实验报告1
(班级:网工1202 姓名:董恒杉 学号:201226680205)
实验1、数据库及数据库表的建立实验
1.1 实验目的
本实验的目的是使学生熟悉SQL Server的企业管理器的用法,初步了解SQL Server查询分析器的使用方法,熟悉SQL SERVER的常用数据类型,加深对SQL和SQL语言的查询语句的理解。熟练掌握简单表的创建与修改。
1.2 实验内容
用企业管理器创建数据库Donghs_University_Mis
使用CREATE语句创建基本表。
更改基本表的定义: 增加列,删除列,修改列的数据类型。
创建表的升、降序索引。
删除基本表的约束、基本表的索引或基本表。
1.3 实验步骤
1. 基本表的建立:
a) 建立一个“学生”表Student,它由学号xh、姓名xm、性别xb、年龄nl、所在系xi五个属性组成,其中学号属性不能为空,并且其值是唯一的。
b) 建立一个“学生”表Student,它由学号xh、姓名xm、性别xb、年龄nl、所在系xi五个属性组成,其中学号属性不能为空,并创建检查约束(nl>0)。
c) 建立一个“学生”表Student,它由学号xh、姓名xm、性别xb、年龄nl、所在系xi五个属性组成,要求学号为主键,xb有默认的值为 ‘男’
d) 建立“课程kc”包括课程号kch,课程名称kcmc,先修课程xxkc,学分xf,要求建立主键
e) 建立“成绩登记表cjdj”包括学号xh,程号kch,成绩,要求建立主键及与student及kc表联接的外键
2. 基本表的修改:
a) 在cjdj表中增加一列“任课教师rkjs”
b) 删除cj表中rkjs一列
c) 将student表的xm一列允许空值的属性更改成不允许为空,将列xm的长度由char(8)改为char(10)
d) 增加cjdj表的列cj增加一个约束要求cj>0 and cj<=100
e) 建立一个临时表,再将其删除
3. 索引的建立与删除(理解以下语句的含义并上机实践):
a) create unique index stu_xh on student(xh)
b) create index xh_kch on cj(xh asc,kch desc)
c) drop index student.xh_kch
1.4 实验结果
1.基本表的建立:
a) 建立一个“学生”表Student,它由学号xh、姓名xm、性别xb、年龄nl、所在系xi五个属性组成,其中学号属性不能为空,并且其值是唯一的。
CREATE TABLE Donghs_Student
( dhs_xh CHAR(5) PRIMARY KEY,
dhs_xm CHAR(20) NOT NULL,
dhs_xb CHAR(4),
dhs_nl INT,
dhs_xi CHAR(20))
b) 建立一个“学生”表Student,它由学号xh、姓名xm、性别xb、年龄nl、所在系xi五个属性组成,其中学号属性不能为空,并创建检查约束(nl>0)
CREATE TABLE Donghs_Student
( dhs_xh CHAR(5)NOT NULL ,
dhs_xm CHAR(20),
dhs_xb CHAR(4),
dhs_nl INT CHECK(dhs_nl>0),
dhs_xi CHAR(20))
c) 建立一个“学生”表Student,它由学号xh、姓名xm、性别xb、年龄nl、所在系xi五个属性组成,要求学号为主键,xb有默认的值为 ‘男’
CREATE TABLE Donghs_Student
( dhs_xh CHAR(5) PRIMARY KEY,
dhs_xm CHAR(20),
dhs_xb CHAR(4) DEFAULT('男'),
dhs_nl INT CHECK(dhs_nl>0),
dhs_xi CHAR(20))
d) 建立“课程kc”包括课程号kch,课程名称kcmc,先修课程xxkc,学分xf,要求建立主键
CREATE TABLE Donghs_kc
( dhs_kch CHAR(6) PRIMARY KEY,
dhs_kcmc CHAR(20),
dhs_xxkc CHAR(6),
dhs_xf INT
)
e) 建立“成绩登记表cjdj”包括学号xh,程号kch,成绩,要求建立主键及与student及kc表联接的外键
CREATE TABLE Donghs_cjdj
( dhs_xh CHAR(5),
dhs_kch CHAR(6),
dhs_cj INT,
PRIMARY KEY(dhs_xh,dhs_kch),
CONSTRAINT Student_cjdj FOREIGN KEY(dhs_xh) REFERENCES Donghs_Student,
CONSTRAINT cjdj_kc FOREIGN KEY(dhs_kch) REFERENCES Donghs_kc)
2.基本表的修改:
a) 在cjdj表中增加一列“任课教师rkjs”
ALTER TABLE Donghs_cjdj
ADD dhs_rkjs CHAR(8)
b) 删除cj表中rkjs一列
ALTER TABLE Donghs_cjdj
DROP COLUMN dhs_rkjs
c) 将student表的xm一列允许空值的属性更改成不允许为空,将列xm的长度由char(8)改为char(10)
ALTER TABLE Donghs_Student
ALTER COLUMN dhs_xm CHAR(10) NOT NULL
d) 增加cjdj表的列cj增加一个约束要求cj>0 and cj<=100
ALTER TABLE Donghs_cjdj
ADD CONSTRAINT dhs_cj CHECK(dhs_cj>0 AND dhs_cj<=100)
e) 建立一个临时表,再将其删除
CREATE TABLE Donghs_temp
( dhs_xh CHAR(8),
dhs_xm CHAR(10))
)
DROP TABLE # Donghs_temp
3.索引的建立与删除:
a)CREATE UNIQUE INDEX stu_xh ON Donghs_Student(dhs_xh)
建立Donghs_Student表的唯一索引,按dhs_xh升序排列
B)CREATE INDEX xh_kch ON Donghs_cjdj(dhs_xh ASC,dhs_kch DESC)
建立一个Donghs_cjdj表的索引,按先dhs_xh升序,再dhs_kch降序排列
C)DROP INDEX Donghs_cjdj.xh_kch
删除Donghs_cjdj表中的xh_kch 索引
1.5 实验体会
通过实验熟悉了SQL Server 中有关表的创建、修改、删除以及索引的创建和删除。
第二篇:sql作业实验报告
实验报告—基本表的创建、查询及更新任务
实验日期和时间: 实验室:
班级: 学号: 姓名:
实验环境:
硬件:
软件:
实验目的:
本次实验的主要目的是??
实验主要任务:(不够时另附页)
一.建立各个表的SQL语句。
二.单表查询操作及(任选三题结果截图附上)。
三.多表查询操作其结果截图(任选三题结果截图附上))。
四.数据更新及其结果截图(最后附上四个基本表的数据截图)。
一.利用查询分析器在数据库ShiYan中建立以下四个数据表(S表,P表,J表,SPJ表),并依次向各数据表中输入相应的数据记录。
(1) 供应商表S(NO,SNAME,STATUS,CITY)
SNO:表示供应商编号,定义其为长度为4字节的字符串类型。
SNAME:表示供应商的名称,定义其为最大长度为20字节的变长字符串类型。 STATUS:表示供应商的基本状况,定义其为短整数类型。
CITY:表示供应商所在的城市,定义其为最大长度为30字节的变长字符串类型。 要求:SNO字段为表的主键,其属性值必须不重复且不允许取空值,SNAME属性值不允许取空值。
(2) 零件表P(PNO,PNAME,COLOR,WEIGHT)
PNO:表示零件的编号,定义其为长度为4字节的字符串类型。
PNAME:表示零件的名称,定义其为最大长度为20字节的变长字符串类型。 COLOR:表示零件的颜色,定义其为长度为6字节的字符串类型。
WEIGHT:表示零件的重量,定义其为实数类型且缺省值为0。
要求:PNO字段为表的主键,PNAME属性值不允许取空值。
(3) 工程项目表J(JNO,JNAME,CITY)
JNO:表示工程项目的编号,定义其为长度为4字节的字符串类型。
JNAME:表示工程项目的名称,定义其为最大长度为20字节的变长字符串类型。
CITY:表示工程项目所在的施工城市,定义其为最大长度为30字节的变长字符串类型。 要求:JNO字段为表的主键,其属性值必须不重复且不允许取空值,JNAME属性值不允许取空值。
(4) 供应商-零件-工程项目关联关系表SPJ(SNO,PNO,JNO,QTY)
SNO:表示为某工程项目供应零件的供应商的编号,定义其为长度为4字节的字符串类型。
PNO:表示某供应商为工程项目所供应的零件的编号,定义其长度为4字节的字符串类型。
JNO:表示正在被施工的工程项目的编号,定义其为长度为4字节的字符串类型。 QTY:表示某供应商为工程项目所供应的零件的数量,定义其为整数类型。
要求:SNO、PNO、JNO属性值不允许取空值;SPJ表的主键为SNO、PNO和JNO三属性的组合;SNO、PNO、JNO均为外码,且SNO字段的取值参照S表中SNO字段的取值,PNO字段的取值参照P表中PNO字段的取值,JNO字段的取值参照J表中JNO字段的取值;QTY
二、针对实验数据库ShiYan,完成以下单表查询操作: 1.查询为工程J1供应零件的供应商号码SNO。 2.查询为工程J1供应零件P1的供应商号码SNO。 3.找出所有供应商的名称和所在城市。
4.找出零件的所有信息,以及仅找出零件的颜色和重量。 5.找出使用供应商S1所供应零件的工程号码。 6.找出为工程供应零件的总数量不低于500的供应商号码及供应总数量,结果按供应商号码分类并且按供应总数量降序排列。
7.从J表中分别检索出第1条及前33%的工程项目信息。
8.统计P表中颜色为红色的零件的个数,并指定该查询列的名称为“红色零件数”。 9查询P表中各工程项目编号,名称及重量按86%计算后的信息,其中重量按86%计算后的查询列名改为“零件净重”。
10.查询SPJ表,要求查询结果式样为“供应商S1为工程项目J1供应零件P1的数量为300”。
11.查询S表STATUS值大于20且小于40,或SNAME字段值的第一个字为“精”或第三个字为“益”或“民”的供应商信息。
12.查询J表中JNAME值为三建和机车厂的工程项目信息。
三、完成以下多表查询操作:
1.查询为工程J1供应红色零件的供应商号码SNO。 2.查询没有使用天津供应商生产的零件并且当前工程所使用零件的颜色全部为红色的工程号JNO。
3.查询至少选用了供应商S1所供应的全部零件的工程号JNO。 4.找出工程项目J2使用的各种零件的名称及其重量。
5.找出上海厂商供应的所有零件号码。
6.找出使用上海产的零件的工程名称。
7.找出没有使用天津产的零件的工程号码。
8.找出重量最轻的红色零件的零件编号PNO。
9.找出供应商与工程所在城市相同的供应商提供的零件号码。
10.找出所有这样的一些<CITY,CITY,PNAME>三元组,使得第一个城市的供应商为第二个城市的工程供应零件的名称为PNAME。
11.重复第15题,但不检索两个CITY值相同的三元组。
12.找出供应商S1为工程名中含有“厂”字的工程供应的零件数量总和。
四、针对实验数据库ShiYan,完成下列数据更新操作:
1.在S表中插入元组“s6,华誉,40,广州,02085268888”。
2.在J表中插入元组“j8,传感器厂”。
3.对每一个供应商,求他为各种工程供应零件的总数量,并将此结果存入数据库。
4.将P表中PNO值为p6的元组的color属性值改为绿,weight属性值改为60。
5.将SPJ表中前4个元组的qty属性值统一修改为300。
6.将S表中city属性名含有“京”或“津”的相应status属性值增加100。
7.将供应商s2为“一汽”工程项目所供应的零件数量修改为2000。
8.将全部红色零件的颜色修改为浅红色。
9.由s5供给j4的零件p6改为由s3供应,请在数据库中作必要的数据修改。
10.在SPJ表中新增一列属性名为SDATE的属性列,对该表中的每一元组在SDATE属性列上填上实验当时的日期和时间。