实验二 数据库及数据库对象的创建和管理
一、实验目的
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 |
成交单价 |
Price |
Numeric |
(3)表结构的修改
Ø 修改客户表结构,要求客户名称和客户电话属性为not null
Ø 修改员工表结构,要求员工姓名和电话属性为not null
Ø 修改订单表结构,要求发票号码属性为not null
3.索引操作
在已创建的基本表的基础上,完成以下索引
(1)在员工表中按所得薪水建立一个非聚集索引salaryIdx
(2)在订单主表中,首先按订金金额的升序,然后按业务员编号的降序建立一个非聚集索引salenosumIdx。
4.视图操作
创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、客户住址、建立日期。
5.利用企业管理器(Enterprise Manager)完成以上1~4中的操作。
实验sql语句:
--实验内容1、数据库操作
CREATE DATABASE OrderDB /*创建数据库*/
ON
(
NAME = 'OrderDB1', /*创建主数据文件*/
FILENAME = 'E:\MYOrder\OrderDB1 dat.mdf', /*注意在文件路径下,例如是E盘中新建MYOrder文件夹*/
SIZE = 5MB,
MAXSIZE = 15MB,
FILEGROWTH = 2MB
),
(
NAME = 'OrderDB2', /*创建次数据文件 */
FILENAME = 'E:\MYOrder\OrderDB2 dat.ndf',
SIZE = 2MB,
MAXSIZE = 10MB,
FILEGROWTH = 10%
)
LOG ON
(
NAME = 'OrderDB_log', /*创建日志文件*/
FILENAME = 'E:\MYOrder\OrderDB log.ldf',
SIZE = 1MB,
MAXSIZE = 10MB,
FILEGROWTH = 1MB
)
ALTER DATABASE OrderDB /* 修改数据库的操作,使用alter*/
MODIFY FILE
(
NAME = 'OrderDB1',
SIZE = 8MB /*修改SIZE大小 */
)
ALTER DATABASE OrderDB
ADD FILE /*对数据库OrderDB进行修改 增加文件 */
(
NAME = 'OrderDB3.ndf',
FILENAME = 'E:\MYOrder\OrderDB3 dat.mdf',
SIZE = 4MB,
MAXSIZE = 10MB,
FILEGROWTH = 10%
)
DROP DATABASE OrderDB /*删除数据库 */
CREATE DATABASE OrderDB /* 简单创建数据库*/
--表操作
use OrderDB --注意切换到新建数据库,不然一下创建的表将创建在主表Master之中
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,3),--薪水
Address Varchar(50),--住址
Telephone Varchar(20)--电话
)
CREATE TABLE Customer/*创建客户表 */
(
CustomerNo Char(9) PRIMARY KEY,--客户号
CustomerName Varchar(40),--客户名称
Address Varchar(40),--客户住址
Telephone Varchar(20),--客户电话
Zip Char(6),--邮政编码
Createdate datetime--建立日期
)
CREATE TABLE Product /*创建商品表 */
(
ProductNo Char(9) PRIMARY KEY,--商品编号
ProductName Varchar(40),--商品名称
ProductClass Varchar(20),--商品类别
ProductPrice Numeric(8,3),--商品定价
Createdate Datetime--建立日期
)
CREATE TABLE OrderMaster/*创建订单主表 */
(
OrderNo Char(12) PRIMARY KEY,--订单编号
CustomerNo Char(9),--客户号
SaleNo Char(8),--业务员编号
Ordersum Numeric(8,3),--订单金额
Orderdate Datetime,--订货日期
Shipdate Datetime,--出货日期
InvoiceNo Char(10),--发票号码
FOREIGN KEY(CustomerNo) REFERENCES Customer(CustomerNo)
)
CREATE TABLE OrderDetail/*创建订单明细表 */
(
OrderNo Char(12) ,--订单编号
ProductNo char(9),--商品编号
PRIMARY KEY(OrderNo,ProductNo),
FOREIGN KEY(OrderNo) REFERENCES OrderMaster(OrderNo),
FOREIGN KEY(ProductNo) REFERENCES Product(ProductNo),
Qty Int,--销售数量
Price Numeric(8,3)--成交单价
)
--实验2、(3)表结构的修改
ALTER TABLE Customer /*修改表 */
ALTER COLUMN CustomerName Varchar(40) NOT NULL
ALTER TABLE Customer /*修改表 */
ALTER COLUMN Telephone Varchar(20) not null
ALTER TABLE Employee /*修改表 */
ALTER COLUMN EmployeeName Varchar(10) not null
ALTER TABLE Employee /*修改表 */
ALTER COLUMN Telephone Varchar(20) not null
ALTER TABLE OrderMaster /*修改表 */
ALTER COLUMN InvoiceNo char(10) not null
--实验3、索引操作
CREATE NONCLUSTERED INDEX salaryIdx ON Employee(Salary ASC); /*创建非聚簇索引表 ,按员工表中薪水升序*/
CREATE NONCLUSTERED INDEX salenosumIdx ON OrderMaster(Ordersum ASC,SaleNo DESC)
/*在订单主表中,首先按订金金额的升序,然后按业务员编号的降序建立一个非聚集索引*/
--实验4、视图操作
CREATE VIEW view_Customer /*创建视图*/
AS
SELECT CustomerNo,CustomerName,Address
FROM Customer
WHERE Address ='上海'