数据库第一次实验附结果.docx
《数据库第一次实验附结果.docx》由会员分享,可在线阅读,更多相关《数据库第一次实验附结果.docx(19页珍藏版)》请在冰点文库上搜索。
数据库第一次实验附结果
南昌航空大学实验报告
2013年4月14日
课程名称:
数据库概论实验名称:
表与视图的基本操作
班级:
11206220姓名:
李昂同组人:
指导教师评定:
签名:
一、实验目的
掌握数据库表与视图的基础知识,并熟练掌握和使用SQL语句、SQLServer企业管理器创建数据库、表、索引、视图和修改表结构,并学会使用SQLServer查询分析器接收Transact-SQL语句和进行结果分析。
二、实验内容
1.建立数据库(数据库名称以学生姓名拼音命名)
示例:
createdatabasestudentdb
on
(name='studentdb',
filename='d:
\database\studentdb.mdf',
size=2,
maxsize=10,
filegrowth=1)
logon
(name='studentlog',
filename='d:
\database\studentlog.ldf',
size=1,
maxsize=5,
filegrowth=1)
go
2.使用SQL语句创建表结构,如下:
(1)/*员工人事表employee*/
emp_no
char(5)
Notnull
primarykey
员工编号
emp_name
char(10)
Notnull
员工姓名
sex
char
(1)
Notnull
性别
dept
char(4)
Notnull
所属部门
title
char(6)
Notnull
职称
date_hired
datetime
Notnull
到职日
birthday
datetime
Null
生日
salary
int
Notnull
薪水
addr
char(50)
null
住址
Mod_date
datetime
Default(getdate())
操作者
(2)/*客户表customer*/
cust_id
char(5)
Notnull
primarykey
客户号
cust_name
char(20)
Notnull,
客户名称
addr
char(40)
Notnull,
客户住址
tel_no
char(10)
Notnull,
客户电话
zip
char(6)
null
邮政编码
(3)/*销售主表sales*/
order_no
int
Notnull
primarykey
订单编号
cust_id
char(5)
Notnull,
客户号
sale_id
char(5)
Notnull,
业务员编号
tot_amt
numeric(9,2)
Notnull,
订单金额
order_date
datetime
Notnull,
订货日期
ship_date
datetime
Notnull,
出货日期
invoice_no
char(10)
Notnull
发票号码
(4)/*销货明细表sale_item*/
order_no
int
Notnull,
primarykey
订单编号
prod_id
char(5)
Notnull,
产品编号
qty
int
Notnull
销售数量
unit_price
numeric(7,2)
Notnull
单价
order_date
datetime
null
订单日期
(5)/*产品名称表product*/
prod_id
char(5)
Notnull
primarykey
产品编号
prod_name
char(20)
Notnull
产品名称
3.分别为每张表建立主键约束
4.为相关表建立外键约束
5.在表employee加入CHECK约束:
输入的员工编号必须以E开头的5位数编号,性别只能为M/F
6.为销售主表sales中的发票编号字段建立UNIQUE约束
7.创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、住址
8.对视图添加一条记录数据(注意:
分别查看customer表和该视图的结果)
9.删除视图中所有姓“王”的客户数据
10.通过视图修改表内某一客户的姓名
11.由两个基本表employee和sales,创建一个视图,该视图包含相同业务员的编号、姓名、订单号、销售总金额
12.将上述视图中订单号为10001的记录的销售总金额改为60000
13.给上述视图添加一条记录数据
14.删除上述视图
三、实验步骤
1.建立数据库
于是在D盘新建文件夹,并命名为“database”.
于是把T—SQL语句中的“size=2”改为“size=3”之后,运行如下:
2.使用SQL语句创建表结构
(1)/*员工人事表employee*/
(2)/*客户表customer*/
由于customer表之后需要对数据的各种操作,请允许我擅自加进一些数据方便后面的操作。
(3)/*销售主表sales*/
(4)/*销货明细表sale_item*/
(5)/*产品名称表product*/
3.分别为每张表建立主键约束
(1)/*员工人事表employee*/
(2)/*客户表customer*/
(3)/*销售主表sales*/
(4)/*销货明细表sale_item*/
(5)/*产品名称表product*/
4.为相关表建立外键约束
5.在表employee加入CHECK约束:
输入的员工编号必须以E开头的5位数编号,性别只能为M/F
6.为销售主表sales中的发票编号字段建立UNIQUE约束
7.创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、住址
视图创建成功,可是把鼠标移到列名上却显示“视图中已存在名为’cust_view’的对象了”。
8.对视图添加一条记录数据(注意:
分别查看customer表和该视图的结果)
插入失败
9.删除视图中所有姓“王”的客户数据
10.通过视图修改表内某一客户的姓名
11.由两个基本表employee和sales,创建一个视图,该视图包含相同业务员的编号、姓名、订单号、销售总金额
12.将上述视图中订单号为10001的记录的销售总金额改为60000
13.给上述视图添加一条记录数据
添加失败
14.删除上述视图
四、实验总结
本次实验,遇到了不少问题:
1、未先创建数据库的目录,就用T—SQL语句试图直接新建一条路径来作为数据库的路径。
于是我在D盘创建“database”,解决了这个问题。
2、创建视图cust_view时只含三个信息,接下来插入信息时,由于其对应的表中第四条信息不能为NULL,无法进行插入(后来才知道原来不是所有题目都是能运行成功的)。
3、由于事先不知道给视图cust_view插入信息是做不出来的的,我就把customer表删了,、再重建时把tel_no的NOTNULL约束给去掉了。
结果还是插不进去。
经过一番思索,发现cust_view在创建时就有条件“whereaddlike‘上海’”,所以我的地址为“南昌市…”的信息就插不进去。
4、第9题让我删除视图中所有姓“王”的客户数据,一开始我采用方法
Delete
Fromcust_view
Wherecust_name=’王%’;
显示(0行受影响),我就觉得奇怪。
后来苦苦思索,发现我把语句Wherecust_name=’王%’;给写错了,应该写成wherecust_namelike‘王%’;,开始还以为那样写是可以的。
总结:
1、实验前没有好好预习;
2、对T—SQL语句掌握不够到位,不够熟悉;
3、做实验时的紧张感不够,应该不断督促自己进入一个高度集中状态,遇到不懂的地方不能磨蹭,要立刻思索解决办法。
程序中需要进一步完善的地方就是:
以之为对象创建视图的表中,不准备插入数据的列名最好不要有notnull约束,不然操作就失败。
通过本次试验,让我对T—SQL语言的运用与了解上升了一个台阶,把学完就忘的知识巩固了一遍,也让我学会了在遇到困难的时候,多XX查查自己的错误,遇到不明白的T—SQL语句也应该XX看看它的功能。
自学是非常重要的。
实验之前进行充分预习也是很必要的!