实验二 数据库及数据库对象的创建和管理
一、实验目的
1.掌握用企业管理器(Enterprise Manager)对数据库的完整创建、修改和删除
2.掌握用企业管理器(Enterprise Manager)对常见的数据库对象如表、试图、索引等的创建、修改和删除
3.掌握用SQL语句进行创建和管理数据库、表、试图和索引
二、实验环境(实验的软件、硬件环境)
硬件:PC机 软件:SQL2000
三、实验指导说明
请复习相关的数据库及其对象的创建和管理的SQL语法知识点,并完成如下内容。
四、实验内容
1.数据库操作
(1)用SQL语句完整创建一个订单数据库,名为OrderDB,存放路径为:E:\MyOrder,它由5MB的主数据文件、2MB的次数据文件和1MB的日志文件组成。并且主数据文件以2MB的增长速度增长,其最大数据文件的大小为15MB,次数据文件以10%的增长速度增长,其最大次数据文件的大小为10MB,事务日志文件以1MB速度增长,其最大日志文件大小为10MB。
(2)将主数据文件大小由5M增大到8M,并删除次数据文件。
(3)为了扩大订单数据库,为它增加一个次要数据文件order3.ndf,该文件大小为4M,最大可增长到10M,以10%的速度增长。
(4)删除数据库。
2.表操作
(1)简单创建订单数据库orderDB
(2)为订单数据库创建5张表,分别如下:(要求在创建的过程中,分别为每张表合理建立主键、外键约束)
员工表Employee
员工号 | employeeNo | Char(8) |
员工姓名 | employeeName | Varchar(10) |
性别 | Sex | Char(1) |
所属部门 | Department | Varchar(30) |
职务 | Headship | Varchar(6) |
雇佣日期 | Hiredate | Datetime |
出生日期 | Birthday | Datetime |
薪水 | Salary | Number |
住址 | Address | Varchar(50) |
电话 | Telephone | Varchar(20) |
客户表customer
客户号 | CustomerNo | Char(9) |
客户名称 | customerName | Varchar(40) |
客户住址 | Address | Varchar(40) |
客户电话 | Telephone | Varchar(20) |
邮政编码 | Zip | Char(6) |
建立日期 | Createdate | datetime |
商品信息表product
商品编号 | ProductNo | Char(9) |
商品名称 | ProductName | Varchar(40) |
商品类别 | ProductClass | Varchar(20) |
商品定价 | ProductPrice | Number |
建立日期 | Createdate | datetime |
订单主表orderMaster
订单编号 | OrderNo | Char(12) |
客户号 | customerNo | Char(9) |
业务员编号 | SaleNo | Char(8) |
订单金额 | Ordersum | Numeric |
订货日期 | Orderdate | Datetime |
出货日期 | Shipdate | Datetime |
发票号码 | InvoiceNo | Char(10) |
订单明细表orderDetail
订单编号 | OrderNo | Char(12) |
商品编号 | ProductNo | Char(9) |
销售数量 | Qty | Int |
成交单价 | Qty | Numeric |
(3)表结构的修改
- 修改客户表结构,要求客户名称和客户电话属性为not null
- 修改员工表结构,要求员工姓名和电话属性为not null
- 修改订单表结构,要求发票号码属性为not null
3.索引操作
在已创建的基本表的基础上,完成以下索引
(1)在员工表中按所得薪水建立一个非聚集索引salaryIdx
(2)在订单主表中,首先按订金金额的升序,然后按业务员编号的降序建立一个非聚集索引salenosumIdx。
4.视图操作
创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、客户住址、建立日期。
5.利用企业管理器(Enterprise Manager)完成以上1~4中的操作。
五、实验步骤
请完成实验内容,并写出具体的实验步骤
1.(1)代码:/*数据库操作()*/
create database OrderDB
on primary(
--数据文件的具体描述
name = 'order1_data',--主数据文件的逻辑名称
filename = 'G:\MyOrder\order1_data.mdf',--存储地址
size = 5MB,--主数据文件的初始大小
maxsize = 15MB,--主数据文件的最大值
filegrowth = 2MB--主数据文件的增长值
),
(
--创建次数据文件
name = 'order2_data',--次数据文件的逻辑名称
filename = 'G:\MyOrder\order2_data.ndf',--存储地址
size = 2MB,--次数据文件的初始大小
maxsize = 10MB,--次数据文件的最大值
filegrowth = 10%--次数据文件的增长率
)
log on(
--创建日志文件
name = 'order1_log',--日志文件的逻辑名称
filename = 'G:\MyOrder\order1_log.ldf',--日志文件的存储地址
size = 1MB,--日志文件的初始大小
maxsize = 10MB,--日志文件的最大值
filegrowth = 1MB--日志文件的增长率
试验结果图:
1.(2)代码:--()将主数据文件大小由5M增大到8M,并删除次数据文件
alter database OrderDB
modify file
(
name = 'order1_data',--逻辑名称
filename = 'G:\MyOrder\order1_data.mdf',--存储地址
size = 8MB—大小变为8MB
)
alter database OrderDB
remove file order2_data—-删除次数据文件
试验结果图:
1.(3)代码:--()为了扩大订单数据库,为它增加一个次要数据文件order3.ndf,该文件大小为4M,最大可增长到10M,
--以10%的速度增长
alter database OrderDB
add file
(
name = 'order3_data',--逻辑名称
filename = 'G:\MyOrder\order3_data.ndf',--存储地址
size = 4MB,--原始大小
maxsize = 10MB,--最大值
filegrowth = 10%--增长率
)
试验结果图:
1.(4)代码:--()删除数据库
drop database OrderDB
2.(1)代码:--简单创建数据库orderDB
create database orderDB
试验结果图:
2.(2)代码:--创建张表
use orderDB
--员工表Employe
create table Employee
(
employeeNo char(8) primary key,--员工号为主键
employeeName varchar(10),--员工姓名
Sex char(1),--性别
Department varchar(30),--所属部门
Headship varchar(6),--职务
Hiredate Datetime,--雇佣日期
Birthday Datetime,--出生日期
Salary Numeric(8,2),--薪水
Address varchar(50),--地址
Telephone varchar(20)--电话
)
--客户表custome
create table customer
(
CustomerNo char(9) primary key,--客户号为主键
customerName varchar(40),--客户名称
Address varchar(40),--客户住址
Telephone varchar(20),--客户电话
Zip char(6),--邮政编码
Createdate datetime--建立日期
)
--商品信息表produc
create table product
(
ProductNo char(9) primary key,--商品编号为主键
ProductName varchar(40),--商品名称
ProductClass varchar(20),--商品类别
ProductPrice Numeric(8,2),--商品定价
Createdate datetime--建立日期
)
--订单主表orderMaste
create table orderMaste
(
OrderNo char(12) primary key,--订单编号为主键
customerNo char(9),--客户号
foreign key (customerNo) references customer(customerNo),--客户号为外键,引用表custom
SaleNo char(8),--业务员编号
Ordersum Numeric(8,2),--订单金额
Orderdate datetime,--订货日期
Shipdate datetime,--出货日期
InvoiceNo char(10)--发票号码
)
--订单明细表orderDetail
create table orderDetil
(
OrderNo char(12),--订单编号
foreign key(OrderNo) references orderMaste(OrderNo),--外键引用表orderMast
ProductNo char(9),--商品编号
foreign key(ProductNo) references product(ProductNo),--外键引用表produc
Qty int,--销售量
OrderPrice numeric(8,2)--成交价格
)
试验结果图:
2.(3)代码:--()表结构的修改
--修改客户表结构,要求客户名称和客户电话属性为not null
alter table customer
alter column customerName varchar(40) not null
alter table customer
alter column Telephone varchar(20) not null
--修改员工表结构,要求员工姓名和电话属性为not null
alter table Employee
alter column employeeName varchar(10) not null
alter table Employee
alter column Telephone varchar(20) not null
--修改订单表结构,要求发票号码属性为not null
alter table orderMaste
alter column InvoiceNo char(10) not null
试验结果图:
3.(1)代码:--()在员工表中按所得薪水建立一个非聚集索引salaryIdx
create nonclustered index salaryIdx on Employee(Salary)
试验结果图:
3.(2)代码:--()在订单主表中,首先按订金金额的升序,然后按业务员编号的降序建立一个非聚集索引
--salenosumIdx
create nonclustered index salenosumIdx on orderMaste(Ordersum asc,SaleNo desc)
试验结果图:
4.代码:--创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、客户住址、建立日期
create view shanghai
as
select customerNo,customerName,Address,Createdate
from customer
where Address = '上海'
试验结果图:
六、思考题:
1.请思考数据库和各数据库中的对象的联系和区别?
答:
2.请思考视图和表的联系和区别?
答:区别:1、视图是已经编译好的sql语句。而表不是
2、视图没有实际的物理记录。而表有。
3、表是内容,视图是窗口
4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改
5、表是内模式,试图是外模式
6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
8、视图的建立和删除只影响视图本身,不影响对应的基本表。
联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系
七、总结(实验过程的体会、心得和实验教与学之间还需改进的内容)
心得:
- 在做试验的过程中,让我学到了更多的东西,比如:删除数据库的语句各有不同,drop/delete/truncate,并且删除数据的速度,一般来说: drop> truncate > delete等;
- 在做试验的过程中,我加深了数据的创建以及数据库对象管理的SQL语句,并且对数据库的兴趣更浓厚了
- 我领会到了基础的重要性,觉得在数据库的学习和实践过程中离不开扎实的基础知识