当前位置:文档之家› 实验一:数据定义及更新语句练习

实验一:数据定义及更新语句练习

实验一:数据定义及更新语句练习一、实验目的:熟练掌握用SQL语句实现数据库和基本表的创建、数据的更新。

二、实验内容:(一)用SQL语句建立如下mySPJ数据库,包括S,P,J,和SPJ四个基本表(教材第二章习题5中的四个表),要求实现关系的三类完整性。

S(SNO,SNAME,STA TUS,CITY);P(PNO,PNAME,COLOR,WEIGHT);J(JNO,JNAME,CITY);SPJ(SNO,PNO,JNO,QTY)供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。

零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。

工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。

(二)分别使用插入、删除、修改的方式更新基本表中的数据。

三、完成情况create table s(sno char(9)primary key, //主键约束sname char(20)unique, //唯一值status smallint,city char(20),);create table p(pno char(9)primary key, //主键约束pname char(20),color char(9),weight smallint,);create table j(jno char(9)primary key, //主键约束jname char(20)unique, //唯一值city char(20),);create table spj(sno char(9),pno char(9),jno char(9),QTY smallint,primary key(sno,pno,jno), //主键约束foreign key (sno)references s(sno), //外键约束foreign key (pno)references p(pno), //外键约束foreign key (jno)references j(jno), //外键约束);四、实验结果1、利用Insert 语句将习题中给出的示例记录插入各表insertinto s(sno,sname,status,city)values ('s1','精益',20,'天津')insertinto svalues ('s2','盛锡',10,'北京')insertinto svalues ('s3','东方红',30,'北京')insertinto svalues ('s4','丰泰盛',20,'天津')insertinto svalues ('s5','为民',30,'上海')select*from sinsertinto pvalues ('p1','螺母','红',12) insertinto pvalues ('p2','螺栓','绿',17) insertinto pvalues ('p3','螺丝刀','蓝',14) insertinto pvalues ('p4','螺丝刀','红',14) insertinto pvalues ('p5','凸轮','蓝',40) insertinto pvalues ('p6','齿轮','红',30)select*from pinsertinto jvalues ('j1','三建','北京') insertinto jvalues ('j2','一汽','长春') insertinto jinsertinto jvalues ('j4','造船厂','天津') insertinto jvalues ('j5','机车厂','唐山') insertinto jvalues ('j6','无线电厂','常州') insertinto jvalues ('j7','半导体厂','南京')select*from jinsertinto spjvalues ('s1','p1','j1',200) insertinto spjvalues ('s1','p1','j3',100) insertinto spjvalues ('s1','p1','j4',700) insertinto spjvalues ('s1','p2','j2',100) insertinto spjvalues ('s2','p3','j1',400) insertinto spjvalues ('s2','p3','j2',200) insertinto spjinsertinto spjvalues ('s2','p3','j5',400) insertinto spjvalues ('s2','p5','j1',400) insertinto spjvalues ('s2','p5','j2',100) insertinto spjvalues ('s3','p1','j1',200) insertinto spjvalues ('s3','p3','j1',200) insertinto spjvalues ('s4','p5','j1',100) insertinto spjvalues ('s4','p6','j3',300) insertinto spjvalues ('s4','p6','j4',200) insertinto spjvalues ('s5','p2','j4',100) insertinto spjvalues ('s5','p3','j1',200) insertinto spjvalues ('s5','p6','j2',200) insertinto spjvalues ('s5','p6','j4',500)select*from spj2.利用Update更新表中的记录:①将p表中的所有红色零件的重量增加5。

update pset weight=weight-5where color='红'②将spj表中所有天津供应商的QTY属性值减少10。

用子查询。

update spjset QTY=QTY-10where sno in(select snofrom swhere city='天津')3.利用Delete语句删除p表中的所有红色零件的记录。

deletefrom pwhere color='红'DELETE 语句与REFERENCE 约束"FK__spj__pno__4F7CD00D"冲突。

该冲突发生于数据库"myspj",表"dbo.spj", column 'pno'。

语句已终止。

(p.pno作为spj.pno的外键,两张表有关系)五、问题及解决1、数据库如何保存?本以为要用一次输入一次,后来通过老师讲解知道可以分离数据库(只保留.mdf 文件就行了,到用时在附加数据库),还可以备份数据库。

2、输入表是出错?有时候建基本表时容易输错,再往下就不然输入了,只能把整个表删了重建了。

六、思考题:(一)在为各表设定关键字时弹出的页面中有关键字和索引选项,试通过给基本表设定这两个项目并说明二者的区别。

索引可以加快表的查询速度,经常用来查询的一个或者几个字段设置为索引。

(二)在基本表中输入数据时,注意数据与字段的数据类型和长度以及能否为空的属性是否一致,保存时如有错误分析错误原因,及时改正并将错误报告写在实验报告中。

在基本表中输入数据时,不为空的地方不可以输入空值,否则将无法继续输入。

七、实验总结:感觉数据库还是比较好学的(相对编程来说),但是间数据库的时候容易出错,工作比较繁琐,稍不小心,不管通过代码添加还是手工输入都很可能稍输或输错。

最后还需要仔细检查才行,语句方面还都是一些简单的语句,可以完成。

相关主题