数据库 1Word格式文档下载.docx
《数据库 1Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库 1Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
snochar
(2),
namechar(10)unique,
sexchar
(2),
ageint,
primarykey(class,sno)
--
(2)插入一个记录班号李明,男性,岁;
insert
intos(CLASS,SNO,NAME,SEX,AGE)
values('
95031'
'
25'
李明'
男'
21);
--再插入一个记录班号王丽,女性,岁;
95101'
10'
王丽'
女'
20);
--(3)插入班座号为,名为郑和的学生记录;
intos(CLASS,SNO,NAME)
30'
郑和'
);
--(4)将年龄的数据类型改为smallint;
altertablesaltercolumnagesmallint;
--(5)向S表添加“入学时间(comedate)”列,其数据类型为日期型(datetime);
altertablesaddcomedatedatetime;
--(6)对表S,按年龄降序建索引(索引名为inxage);
createuniqueindexinxageons(age);
--(7)删除S表的inxage索引;
dropindexs.inxage;
--(8)删除S表;
droptables;
--(9)按照《数据库系统概论》(第四版)P56页的学生-课程数据库创建STUDENT、COURSE和SC三张表,每一张表都必须有主码约束,合理使用列级完整性约束和表级完整性。
并输入相关数据。
createtablestudent
snochar(9)primarykey,
snamechar(20)unique,
ssexchar
(2),
sagesmallint,
sdeptchar(20)
createtablecourse
cnochar(4)primarykey,
cnamechar(40),
cpnochar(4),
ccreditsmallint,
foreignkey(cpno)referencescourse(cno)
createtablesc
snochar(9),
cnochar(4),
gradesmallint,
primarykey(sno,cno),
foreignkey(sno)referencesstudent(sno),
foreignkey(cno)referencescourse(cno)
insert
intostudent(sno,sname,ssex,sage,sdept)
95001'
李勇'
20,'
CS'
95002'
刘晨'
19,'
IS'
95003'
王敏'
18,'
MA'
95004'
张立'
intocourse(cno,cname,cpno,ccredit)
2'
数学'
NULL,2);
6'
数据处理'
4'
操作系统'
3);
7'
PASCAL语言'
4);
5'
数据结构'
1'
数据库'
3'
信息系统'
intosc(sno,cno,grade)
92);
85);
88);
90);
80);
--按照《数据库系统概论》(第四版)P74页习题的SPJ数据库。
创建SPJ数据库,
createdatabasespj
(name=SPJData,
\db\SPJDat.maf'
name=SPJLog,
\db\SPJLog.ldf'
--并在其中创建S、P、J和SPJ四张表。
--每一张表都必须有主码约束,合理使用列级完整性约束和表级完整性
usespj
createtables
statusint,
citychar(20)
createtablep
pnochar(9)primarykey,
pnamechar(20),
colorchar(20),
weightint
createtablej
jnochar(9)primarykey,
jnamechar(20)unique,
createtablespj
pnochar(9),
jnochar(9),
qtyint,
primarykey(sno,pno,jno),
foreignkey(sno)referencess(sno),
foreignkey(pno)referencesp(pno),
foreignkey(jno)referencesj(jno)
intos(sno,sname,status,city)
S1'
精益'
天津'
S2'
盛锡'
10,'
北京'
S3'
东方红'
30,'
S4'
丰泰盛'
S5'
为民'
上海'
intop(pno,pname,color,weight)
P1'
螺母'
红'
12);
P2'
螺栓'
绿'
17);
P3'
螺丝刀'
蓝'
14);
P4'
P5'
凸轮'
40);
P6'
齿轮'
30);
intoj(jno,jname,city)
J1'
三建'
J2'
一汽'
长春'
J3'
弹簧厂'
J4'
造船厂'
J5'
机车厂'
唐山'
J6'
无线电厂'
常州'
J7'
半导体厂'
南京'
intospj(sno,pno,jno,qty)
s1'
p1'
j1'
200);
j3'
100);
j4'
700);
p2'
j2'
s2'
p3'
400);
500);
j5'
p5'
s3'
s4'
p6'
300);
s5'
实验二
--
(一)按照《数据库系统概论》P82页中的学生课程数据库及数据实现以下查询:
--1.查询所有课程的课号,课程名。
selectcno课号,cname课程名
fromcourse;
--2.查询计算机系年龄不到岁的所有男生的姓名和出生年份。
selectsname姓名,(2011-sage)出生年份
fromstudent
wheresdept='
cs'
andsage<
21andssex='
;
--3.查询已被学生所选课程的课程号。
selectdistinctcno课程号
fromsc;
--4.查询所有有成绩的学生学号和课程号,
--并为各列分别取相应的中文别名。
selectsno学号,cno课程号
fromsc
wheregradeisnotnull;
--
(二)按照《数据库系统概论》P75页中的SPJ数据库及数据实现以下查询:
--1.查询地点在‘北京’、‘上海’的供应商代码和供应商名字。
selectsno供应商代码,sname供应商名字
froms
wherecity='
orcity='
--2.查询供应商名中包含‘方’这个汉字的供应商信息。
select*
wheresnamelike'
%方%'
--3.查询零件名以‘刀’字结尾,包含三个汉字的零件信息。
fromp
wherepnamelike'
__刀'
--4.查询使用了供应商S1所供应零件的工程项目数。
selectcount(*)工程项目数
fromspj
wheresno='
--5.查询各个供应商所供应的零件的总数,要求对查询结果降序显示。
selectsno供应商号,sum(qty)零件总数
groupbysno
orderbysum(qty)desc;
--6.查询供应了3个以上项目的供应商代码和供应的项目总数。
selectsno供应商代码,count(*)项目总数
havingcount(*)>
3;
--(三)按照《数据库系统概论》P82页中的学生课程数据库和P75页中的SPJ数据库完成以下查询
--
(1)查询使用红色零件的工程名称。
selectdistinctjname工程名称
fromspj,j,p
wherespj.jno=j.jnoandspj.pno=p.pnoandcolor='
--
(2)查询每个工程的信息及相应的供应信息(包括列出尚未被供应零件的那些工程)。
selectj.jno,jname,city,sno,pno,qty
fromjleftouterjoinspjon(j.jno=spj.jno);
--(3)查询供应工程J1红色零件的供应商号SNO,请用两种方法实现。
--方法一
selectsno供应商号
fromspj,p
wherejno='
andspj.pno=p.pnoandcolor='
--方法二
andpnoin(selectpnofrompwherecolor='
--(4)求供应工程J1零件的供应商的完整信息。
wheresnoin
(selectsno
fromspj
wherejno='
--(5)查询使用北京供应商供应零件的工程信息。
fromj
wherejnoin
(selectjno
fromspj,s
wherespj.sno=s.sno
ands.city='
--(6)查询选修号课程且成绩在85分以上的所有学生。
wherecno=3andgrade>
85;
--(7)查询先行课的学分为4的课程信息。
fromcoursefirst,coursesecond
wherefirst.cpno=o
andsecond.ccredit=4;
--(8)查询课程与其间接先行课的名称。
selectame,ame
wherefirst.cpno=o
--(9)查询其他系中比计算机科学系所有学生年龄都小
--的学生完整信息,用两种方法实现。
--方法一:
wheresage<
all
(selectsage
fromstudent
wheresdept='
andsdept<
>
'
--方法二:
(selectmin(sage)
--(10)查询其他系中比计算机科学系某一学生年龄大
--的学生姓名与年龄,用两种方法实现。
selectsname,sage
wheresage>
any(selectsage
--(11)查询至少用了供应商S1所供应的所有零件
--的工程号JNO,用带EXISTS谓词的子查询实现。
selectjno
fromspjspjx
wherenotexists
(select*
fromspjspjy
wherespjy.sno='
and
notexists
fromspjspjz
wherespjz.sno=spjx.snoand
spjz.pno=spjy.pno));
--(12)查询使用了全部零件的工程号JNO,
--用带EXISTS谓词的子查询实现。
fromspj
fromspj
groupbyjno
havingcount(*)<
6);
--查询所有使用了P3零件的工程号JNO,
--用带EXISTS谓词的子查询实现。
selectdistinctjno
whereexists
wherejno=j.jno
andpno='
实验三
--
(一)数据更新
--插入一个学生:
张红,女,,信息系,岁
200215135'
张红'
--插入一个选课录:
,,成绩未定
intosc(sno,cno)
--将计算机系所有学生的年龄加岁
updatestudent
setsage=sage+1
--删除所有学生的选课记录
delete
200215130'
--删除所有姓张的同学的信息
wheresname='
张%'
--请自行设计案例对学生-课程数据库的数据更新,并观察是否有违反数据的完整性