数据库原理与应用实验报告.doc
数据库原理与应用实验报告实验报告1. 实验目的熟悉SQL的数据定义语言,能够熟练地使用SQL语句来创建和更改基本表,创建和取消索引。对数据库进行单表查询、连接查询、嵌套查询、集合查询和统计查询。2. 实验内容² 在SSMS环境中使用SQL语言创建数据库² 使用CREATE语句创建基本表。² 更改基本表的定义: 增加列,删除列,修改列的数据类型。² 创建表的升、降序索引。² 删除基本表的约束、基本表的索引或基本表。3. 实验步骤(按自己来)1) 在SSMS环境中使用SQL语言创建数据库:姓名全拼_Mis2) 使用SQL语句创建关系数据库基本表:供应商表:姓名全拼_S(拼音缩写_Sno,拼音缩写_Sname,拼音缩写_Status,拼音缩写_City)零件表:姓名全拼_P(拼音缩写_Pno,拼音缩写_Pname,拼音缩写_Color,拼音缩写_Weight)工程项目表:姓名全拼_J(拼音缩写_Jno,拼音缩写_Jname,拼音缩写_City)零件供应情况表:姓名全拼_SPJ(拼音缩写_Sno,拼音缩写_Pno,拼音缩写_Jno,拼音缩写_QTY)其中:拼音缩写_Sno、拼音缩写_Pno、拼音缩写_Jno、(拼音缩写_Sno,拼音缩写_Pno,拼音缩写_Jno)分别是表xuning_S、表xuning_P、表xuninig_J、表xuning_SPJ的主键,具有唯一性约束。 3)找出供应工程J1的供应商号 4)找出供应工程J1零件P1的供应商号 5)找出供应工程J1红色零件的供应商号 6)找出没有使用杭州供应商生产的绿色零件的工程号 7)找出和供应商S1在同一城市的供应商所提供的所有零件 8)找出供应红色的P1零件且其供应量>200的供应商号 9)找出所有供应商的姓名和所在城市 10)找出零件的名称、颜色、重量 11)找出使用供应商S2所供应零件的工程号 12)找出工程项目J3实用的各种零件的名称及数量 13)找出杭州厂商供应的所有零件号码 14)找出使用杭州产的零件的工程号 15)找出没有天津产的零件的工程号 16)把全部红色零件的颜色改为蓝色 17)由供应商S4供给J3零件P5改为由S3供应,请做必要的修改 18)从供应商表关系中删除S3的记录,并从供应情况关系中删除相应的记录 19)请将(S2,J6,P4,300)插入到供应情况关系中 20)为一键工程项目建立一个供应情况的视图,包括供应商号,零件代码,供应商名称,供应数量A)找出一键使用的各零件代码及数量B)找出供应商S2的供应情况C)找出供应零件P2且供应数量大于100的供应商名21) 把对表xuning_S的插入权限授予用户zhangyong,并允许他再将此权利授予他人22) 把查询表xuning_SPJ和修改QTY的权限授予liming4. 实验结果(只要粘贴图片,查询分析器,写的语句和结果,四张表的语句粘一个图就可以了,剩下三张表的语句粘就可以了)1) 在SSMS环境中使用SQL语言创建数据库jiangxue_Mis 语句:CREATE DATABASE jiangxue_MisON(NAME=jiangxue_data,FILENAME='c:jiangxuejiangxue-mis-data.mdf',SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOG ON(NAME='jiangxue_Log', FILENAME='c:jiangxuejiangxue_mis_log.ldf',SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB)2)用SQL语言创建供应商表1.创造jiangxue_Screate table jiangxue_S(Sno char(5) primary key,Sname char(20) not null,Status int,City char(20) not null)2.创造jiangxue_Pcreate table jiangxue_P(Pno char(5) primary key,Pname char(20) not null,Color char(20) not null,Weight int)3.创造jiangxue_Jcreate table jiangxue_J(Jno char(5) primary key,Jname char(20) not null,City char(20) not null,)4.创造jiangxue_SPJcreate table jiangxue_SPJ(Sno char(5),Pno char(5),Jno char(5),QTY int,primary key(Sno,Pno,Jno),constraint S_SPJ foreign key(Sno) references jiangxue_S,constraint P_SPJ foreign key(Pno) references jiangxue_P,constraint J_SPJ foreign key(Jno) references jiangxue_J)3)将数据插入各表1.数据插入jiangxue_S表insert into jiangxue_Svalues('S1','利群',30,'广州')insert into jiangxue_Svalues('S2','同方',20,'杭州')insert into jiangxue_Svalues('S3','天远',60,'北京')insert into jiangxue_Svalues('S4','精诚',10,'上海')insert into jiangxue_Svalues('S5','化缘',80,'重庆')insert into jiangxue_Svalues('S6','弘治',50,'太原')2.将数据插入jiangxue_Pinsert into jiangxue_Pvalues('P1','钉子','绿','34')insert into jiangxue_Pvalues('P2','螺丝','蓝','25')insert into jiangxue_Pvalues('P3','螺母','橙','12')insert into jiangxue_Pvalues('P4','螺栓','紫','27')insert into jiangxue_Pvalues('P5','螺钉','红','53')insert into jiangxue_Pvalues('P6','齿轮','绿','17')insert into jiangxue_Pvalues('P7','传送带','红','28')3.将数据插入jiangxue_Jinsertinto jiangxue_J values('J1','一键','济南')insertinto jiangxue_J values('J2','三汽','广州')insertinto jiangxue_J values('J3','拉链厂','杭州')insertinto jiangxue_J values('J4','无线电厂','北京')insertinto jiangxue_Jvalues('J5','机床厂','上海')insertinto jiangxue_Jvalues('J6','螺钉厂','重庆')insertinto jiangxue_Jvalues('J7','机械厂','天津')4.将数据插入jiangxue_SPJinsertinto jiangxue_SPJ values('S1','P1','J3','340')insertinto jiangxue_SPJ values('S1','P1','J2','250')insertinto jiangxue_SPJ values('S1','P2','J5','120')insertinto jiangxue_SPJ values('S1','P2','J6','270')insertinto jiangxue_SPJ values('S1','P2','J7','530')insertinto jiangxue_SPJ values('S2','P2','J1','170')insertinto jiangxue_SPJ values('S2','P3','J2','280')insertinto jiangxue_SPJ values('S2','P4','J3','100')insertinto jiangxue_SPJ values('S2','P4','J4','120')insertinto jiangxue_SPJ values('S2','P5','J7','310')insertinto jiangxue_SPJ values('S2','P5','J5','560')insertinto jiangxue_SPJ values('S2','P6','J6','200')insertinto jiangxue_SPJ values('S3','P7','J1','300')insertinto jiangxue_SPJ values('S3','P1','J1','400')insertinto jiangxue_SPJ values('S4','P3','J2','410')insertinto jiangxue_SPJ values('S4','P4','J3','330')insertinto jiangxue_SPJ values('S4','P4','J4','650')insertinto jiangxue_SPJ values('S4','P5','J4','150')insertinto jiangxue_SPJ values('S5','P7','J5','230')insertinto jiangxue_SPJ values('S5','P7','J7','280')insertinto jiangxue_SPJ values('S6','P2','J2','350')insertinto jiangxue_SPJ values('S6','P2','J3','420')insertinto jiangxue_SPJ values('S6','P6','J1','310')题目1.4:(1) 找出供应工程J1零件的供应商号select distinct Snofrom jiangxue_SPJwhere Jno='J1'(2) 找出供应工程J1零件P1的供应商号select distinct Snofrom jiangxue_SPJwhere Jno='J1'and Pno='P1'(3) 找出供应工程J1红色零件的供应商号select distinct Snofrom jiangxue_SPJwhere Jno='J1' and Pno in (select Pnofrom jiangxue_Pwhere Color='红')(4) 找出没有使用杭州供应商生产的绿色零件的工程号select distinct Jnofrom jiangxue_SPJwhere Pno in (select Pnofrom jiangxue_Pwhere Color='绿') and Sno in (select Snofrom jiangxue_Swhere City<>'杭州')(5) 找出同供应商S1在同一城市的供应商所提供的所有零件(6) 找出供应红色的P1零件且其供应量大于200的供应商号select Sno from jiangxue_SPJwhere exists(select * from jiangxue_Pwhere Pno=jiangxue_SPJ.Pno and Color='红色'and Pno='P1' and QTY>200)题目1.5:(1)找出所有供应商的姓名和所在城市select Sname,Cityfrom jiangxue_S(2)找出所有零件的名称、颜色和重量select Pname,Color,Weightfrom jiangxue_P(3)找出使用供应商S2所供应零件的的工程号select Jno from jiangxue_SPJwhere Sno='S2'order by Jno ASC(4)找出工程项目J3使用的各种零件的名称及其数量select Pname,sum(QTY) QTYS from jiangxue_SPJ,jiangxue_Pwhere Jno='J2' and jiangxue_P.Pno=jiangxue_SPJ.Pnogroup by jiangxue_P.Pname (5)找出杭州厂商供应的所有零件号码select distinct Pno from jiangxue_SPJwhere Sno in (select Sno from jiangxue_Swhere City='杭州')(6)找出使用杭州产的零件的工程名称select distinct Jname from jiangxue_jwhere Jno in (select Jno from jiangxue_SPJwhere Sno in(select Sno from jiangxue_S where City=杭州)(7)找出没用供应天津产的零件的工程号Select distinct Jno from jiangxue_SPJwhere Sno in(select Sno from jiangxue_S where City <> '天津')(8)把全部红色零件的颜色改成蓝色修改前:修改后:(9)由供应商S4供给J3零件P5改为由S3供应,请做必要的修改修改前:修改后;(10)从供应商关系中删除S3的记录,并从供应情况关系中删除相应的记录(11)请将(S2,J6,P4,300)插入到供应情况关系中。插入前:修改后:题目1.11:为一建工程项目建立一个供应情况的视图,包括供应商号,零件代码,供应商名称,供应数量create view jiangxue_yijianas select jiangxue_S.Sno,Pno,Sname,QTYfrom jiangxue_S,jiangxue_SPJwhere jiangxue_S.Sno=jiangxue_SPJ.Sno and Jno in(select Jno from jiangxue_Jwhere Jname='一键')(1) 找出“一建”工程项目使用的各种零件代码及其数量select Pno,QTYfrom jiangxue_yijian(2) 找出供应商S2的供应情况select QTYfrom jiangxue_yijian where Sno='S2'(3) 找出供应零件P2且供应数量大于100的供应商号select Snofrom jiangxue_yijianwhere Pno='P2' and QTY>100题目1.12(1)把对表jiangxue_S的插入权限授予用户zhangyong,并允许他再将此权利授予他人grant inserton jiangxue_Sto ZhangYongwith grant option(2)把查询表jiangxue_SPJ和修改QTY的权限授予LiMinggrant select,update(QTY)on jiangxue_SPJto LiMing