北京联合大学数据库实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

北京联合大学《数据库》实验报告题目:*********姓名:*******学号:**********专业:计算机工程编制时间:********北京联合大学编制实验一一、实验目的学习MSSQLServer2005的安装、启动方法,注册SQLServer服务器的方法。熟悉SQLServer的工作环境掌握使用向导和命令建立数据库的方法掌握数据库常用选项的设置方法掌握建立数据表的方法。二、实验内容采用SQL语句创建数据库CREATEDATABASEOrderMag2ONPRIMARY(NAME=OrderMag2_Data,FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL\data\OrderMag2_Data.ndf',SIZE=10MB,MAXSIZE=200MB,FILEGROWTH=10%)LOGON(NAME=OrderMag2_Log,FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL\data\OrderMag2_Log.LD',SIZE=3MB,MAXSIZE=100MB,FILEGROWTH=10%)GO三回答问题创建Store、Customer、Order1三个表useOrderMag2createtableStore(Pnochar(6)primarykeynotnull,Pnamevarchar(20)notnull,Ptypechar(2),Pnumint)createtableCustomer(Cnochar(6)primarykeynotnull,Cnamevarchar(20)notnull,Ctelvarchar(12)notnull,Caddrvarchar(50),Czipvarchar(6))createtableOrder1(Onochar(6)primarykeynotnull,Cnochar(6),Pnochar(6),Onumint,Osumint,Odatedatetime)altertableOrder1addconstraintfk_customer_idforeignkey(Cno)referencesCustomer(Cno);altertableOrder1addconstraintfk_Store_idforeignkey(Pno)referencesStore(Pno);altertableOrder1addconstraintcheck_Onumcheck(Onum=0andOnum=100)altertableOrder1addconstraintcheck_Osumcheck(Osum0)操作过程中遇到的问题是“order”是数据库中的一个关键字,不能把它作为表的名字,所以在创建order表的时候在其后面加上数字或其他字母来以示区别。四实验小结通过本次实验学会了MSSQLServer2005的安装、启动方法,注册SQLServer服务器的方法;和如何使用向导和命令建立数据库和数据库常用选项的设置方法及建立数据表的方法。实验二、数据维护及简单查询一、实验目的:学习使用查询分析器掌握使用Insert、Update、Delete命令维护数据表的数据的方法熟练掌握简单SQL命令的使用二、实验内容:1.INSERT命令输入数据使用Insert命令分别向OrderMag数据库中的三个表中输入如下5条数据。1)Store(Pno,Pname,Ptype,Pnum)库存(零件号,零件名称,零件类别,零件数量)PnoPnamePtypePnumP1齿轮传动200P2蜗杆传动30P3螺栓标准120P4垫圈标准500P5螺母标准10202)Order(Ono,Cno,Pno,Onum,Osum,Odate)订单(订单号,顾客号,定购零件号,定购数量,订单金额,签订日期)OnoCnoPnoOnumOsumOsumO1C2P210010002006-4-8O2C3P3101002008-5-2O3C1P2202002007-4-5O4C1P42202009-2-4O5C3P51102009-3-13)Customer(Cno,Cname,Ctel,Caddr,Czip)顾客(顾客号,顾客名称,电话,地址,邮编)CCnameCtelCaddrCzipnoC1北京联合大学010-64900310北京100101C2上海贝尔021-23232323上海C3LG0755-2325123深圳412100C4华为(北京)北京C5香港航空852-56545236香港142553先修改Store表的列Ptype的长度,再进行插入操作,如下ALTERTABLEStoreALTERCOLUMNPtypechar(10)INSERTINTOStore(Pno,Pname,Ptype,Pnum)VALUES('P1','齿轮','传动',200)INSERTINTOStore(Pno,Pname,Ptype,Pnum)VALUES('P2','蜗杆','传动',30)INSERTINTOStore(Pno,Pname,Ptype,Pnum)VALUES('P3','螺栓','标准',120)INSERTINTOStore(Pno,Pname,Ptype,Pnum)VALUES('P4','垫圈','标准',500)INSERTINTOStore(Pno,Pname,Ptype,Pnum)VALUES('p5','螺母','标准',1020)INSERTINTOCustomer(Cno,Cname,Ctel,Caddr,Czip)VALUES('C1','北京联合大学','010-64900310','北京','100101')INSERTINTOCustomer(Cno,Cname,Ctel,Caddr,Czip)VALUES('C2','上海贝尔','021-23232323','上海','')INSERTINTOCustomer(Cno,Cname,Ctel,Caddr,Czip)VALUES('C3','LG','0755-2325123','深圳','412100')INSERTINTOCustomer(Cno,Cname,Ctel,Caddr,Czip)VALUES('C4','华为(北京)',null,'北京','')INSERTINTOCustomer(Cno,Cname,Ctel,Caddr,Czip)VALUES('C5','香港航空','852-56545236','香港','142553')INSERTINTOOrder1(Ono,Cno,Pno,Onum,Osum,Odate)VALUES('O1','C2','P2',100,1000,'2006-4-8')INSERTINTOOrder1(Ono,Cno,Pno,Onum,Osum,Odate)VALUES('O2','C3','P3',10,100,'2008-5-2')INSERTINTOOrder1(Ono,Cno,Pno,Onum,Osum,Odate)VALUES('O3','C1','P2',20,200,'2007-4-5')INSERTINTOOrder1(Ono,Cno,Pno,Onum,Osum,Odate)VALUES('O4','C1','P4',2,20,'2009-2-4')INSERTINTOOrder1(Ono,Cno,Pno,Onum,Osum,Odate)VALUES('O5','C3','P5',1,10,'2009-3-1')2.把store表中所有零件的数量增长一倍UPDATEStoreSETPnum=Pnum*23.把order表中签订日期在2005年之前的数据删除。deletefromorder1whereOdate'2005'4.向store表中添加一列:零件颜色(Pcolour);ALTERTABLEStoreADDPcolourvarchar(20)5.查询三个表中的内容SELECT*FROMStoreSELECT*FROMCustomerSELECT*FROMOrder16.查询所有订单的金额,并按照金额的降序排列SELECTOsumFROMOrder1ORDERBYOsumDESC7.查询签订日期在2009年的所有订单的信息。SELECT*FROMOrder1WHEREOdate'2009'8.查询顾客姓名中含有“北京”的顾客姓名和电话。SELECT*FROMCustomerWHERECnameLIKE'%北京%'9.查询库存数量少于100的零件号和名称。SELECTPno,PnameFROMStoreWHEREPnum10010.查询邮编为空的顾客的情况。SELECT*FROMCustomerWHERECtelisnull三、回答问题1)使用Insert命令需要注意哪些问题答:1)插入一条记录时最好一次性插进去,避免主键列报错。或者把主键列设置为自动增长,这样就不用考虑主键那报错了2)尽量不用关键字做列的名子,即使要用也要在其外面加[]。2)Alter与Update语句有什么区别答:Alter用于修改表结构,而Update用于修改表中内容四、实验小结通过本实验学会了如何运用Insert、Update、Delete命令对表中内容进行修改。实验中遇到的问题是区别邮编为空(null)的情况和空字符串(’’),。实验三、SQL命令使用(二)一、实验目的:(1)学习、掌握分组与汇总的函数的使用(2)学习、掌握在SQL语句中使用函数的方法(3)学习、掌握连接查询的方法(4)学习、掌握子查询的方法二、实验内容:1.查询订单金额大于100的顾客的名称和电话;SELECTCname,CtelFROMCustomer,Order1WHEREOrder1.Cno=Customer.CnoANDOrder1.Osum1002.查询所有签订订单的顾客的名称和邮编;selectCname,CzipfromCustomerwhereCnoin(selectdistinctCnofromOrder1)3.统计每类零件的数量分别为多少;selectPno,sum(Onum)fromOrder1groupbyPno4.统计每个顾客签订订单的次数;selectCno,count(*)fromOrder1groupbyCno5.查询所有顾客签订订单的情况(包括没有签订订单的顾客);select*fromCustomerleftouterjoinOrder1on(Customer.Cno=Order1.Cno)6.查询没有卖过一次的零件号(没有订单);selectPnofromStorewherePnonotin(selectdistinctPnofromOrder1)7.查询每个顾客签订订单的金额总数;selectCno,sum(Osum)fromOrder1groupbyCno8.查询所有订单金额的平均值;selectavg(Osum)fromOrder19.查询至少签订过两次订单的顾客信息。selectCno,count(*)timesfromOrder1groupbyCnohavingcount(*)=2三、完成实验报告并回答问题1)外连接与内联接的区别在哪里答:外连接是指把舍弃的元组也保存在结果关系中,而在其他属性上填空值。内连接是指只有满足连接条件的元组才能作为结果输出。2)使用子查询需要注意哪些事项答:a.一个子查询必须放在圆括号中。b.子查询的select语句中不能使用orderby子句,orderby子句只能对最终查询结果排序。c.带有In谓词的子查询中,当In中为单一值时可用“=”代替,否则不可。d.带有比较运算符的子查询,将子查询放在比较条件的右边以增加可读性。f.子查询返回单值时可以用比较运算符,但返回多值时要用Any或All谓词修饰,而使用Any或All时必须同时

1 / 24
下载文档,编辑使用

©2015-2020 m.111doc.com 三一刀客.

备案号:赣ICP备18015867号-1 客服联系 QQ:2149211541

×
保存成功