第一篇:数据库和表的创建与管理实验报告
南京信息工程大学实验(实习)报告
实验(实习)名称 数据库和表的创建与管理 实验(实习)日期得分指导教师系
计算机 专业 计算机科
学与技术 年级班次姓名学号
一、实验目的
1.熟悉SQL Server 2005 中SQL Server Management Studio的环境。
2.了解SQL Server 2005数据库的逻辑结构和物理结构。
3.掌握使用向导创建和删除数据库的方法。
4.掌握使用SQL 语句创建和删除数据库。
5.了解表的结构特点,了解SQL Server 的基本数据类型,管理器创建表,会用T-SQL语句创建表。
6.管理器中修改表的定义,使用SQL语句修改表的定义。
二、实验内容
内容一:使用向导创建和删除数据库。
内容二:使用 SQL 语句创建和删除数据库。
内容三:用向导和 SQL 语句创建和删除表。‘
内容四:修改数据库基本表的定义。
三、实验步骤
内容一:
设有一学籍管理系统,其数据库名为“EDUC”,初始大小为 10MB,最
大为 50MB,数据库自动增长,增长方式是按 5%比例增长;日志文件初始为2MB,最大可增长到 5MB,按 1MB 增长。数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:sql_data”。日志文件 的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存 放路径为“E:sql_data”。
(1)使用向导创建上诉描述的数据库。1.建立数据库
2.修改数据库名,数据库逻辑名,初始大小,增长方式等
(2)使用向导删除上面建立的数据库。1.删除数据库:
内容二:
1. 以下是创建数据库 userdb1 的 SQL 语句,Create database userdb1 On((name='userdb4_data',/*数据文件的逻辑名称,注意不能与日志逻辑同 名*/ filename='d:sql_datauserdb4.mdf' ,/*物理名称,注意路径必须存 在*/ size=5,/*数据初始长度为 M*/ maxsize=10,/*最大长度为 M*/ filegrowth=1)/*数据文件每次增长 M*/ log on((name=userdb4_log, filename='d:sql_datauserdb4.ldf ' , size=2, maxsize=5, filegrowth=1)Go a.选“视图”-“模板资源管理器”-Database-create database,双击 database
b.编写上述代码:
2.根据步骤 1 的 sql 语句,写出创建实验二中数据库 EDUC 的 sql 语句,并 建立数据库 EDUC.3.用 SQL 语句删除步骤一建立的数据库 userdb1。
内容三:
1.在实验三建立的数据库 EDUC 中,根据分析需要如下几个表:
2.根据如上表结构用向导创建各表。a.右键单击EDUC的子目录“表”,选择“新建表”,在新表中输入“字
段名称”,选择“类型”与“宽度”,并设置“sno“为主键,右键单击“sno”, 单击“设置主键”,关闭,保存表名为“student”
3.用企业管理器删除所建立的表Student_course,Student和Course
4.在查询分析器中用sql语句删除表Tearch_course和表Teacher
5.根据如上表结构用SQL语句创建各表。
6.将以上创建表的SQL命令以.SQL文件的形式保存在磁盘上
内容四:
修改列属性
1.用企业管理器将Student表中的birthday字段设为不能为空(not null)
2.用SQL语句将Student中的属性sno char(8)改成archar(20)类型。
添加列
1.用企业管理器将course表中添加一列year,类型为varchar(4),默认设置为空。
2.用sql语句在year字段添加约束,year的属性值在2004-2008之间。
删除列
1.用sql语句将course表中的years字段删除
四、实验小结:
通过这次实验,掌握使用向导创建和删除数据库的方法,掌握使用SQL 语句创建和删除数据库,操作了创建的步骤和流程,将数据输入到数据库内,作为一个小型的数据库,完成这个实验,掌握相关的操作技术。
第二篇:图书管理系统--创建数据库和表
/* 1管理员表(L_Administrator)字段名 字段说明 数据类型 约束 备注 a_id 管理员编号 int Primary Key Identity(1000,1)a_name 管理员姓名 nvarchar(20)Not null a_pwd */ use Library go create table L_Administrator(a_id int not null primary key Identity(1000,1), a_name nvarchar(20)not null, a_pwd varchar(20)not null);
/* 2职务类型表(L_Duty)字段名 字段说明 数据类型 约束 备注 d_id 职务编号 int Primary Key Identity(1000,1)d_name 职务名称 nvarchar(20)Not null d_maxcount 最大借阅数量 tinyint Not Null */ use Library go create table L_Duty(d_id int not null primary key Identity(1000,1), d_name nvarchar(20)not null, d_maxcount tinyint not null);
/* 3读者表(L_Reader)字段名 字段说明 数据类型 管理员密码 varchar(20)
Not Null
约束 备注
r_id 读者编号 bigint Primary Key r_name 读者姓名 nvarchar(20)Not Null r_pwd r_sex 读者密码 读者性别 varchar(20)Not Null bit Not Null
int Foreign Key 职务类型表的主键
r_typeid 职务类型
r_academy 所在院系 nVarchar(20)r_major 专业 nVarchar(20)
r_contact 联系方式 Varchar(20)r_email 邮箱 nvarchar(20)
r_photo 读者照片 */ use Library nVarchar(100)
存的是读者照片的路径 go create table L_Reader(r_id bigint not null primary key, r_name nvarchar(20)not null, r_pwd varchar(20)not null, r_sex bit not null, r_typeid int not null, r_academy nvarchar(20), r_major nvarchar(20), r_contact varchar(20), r_email varchar(20), r_photo nvarchar(100));alter table L_Reader add constraint fk_dtypeid foreign key(r_typeid)references L_Duty(d_id)on delete cascade on update cascade;
/*创建一个存储过程*/ use Library go create procedure reader @r_id bigint, @r_name nvarchar(20), @r_pwd varchar(20), @r_sex bit, @r_typeid int, @r_academy nvarchar(20), @r_major nvarchar(20), @r_contact varchar(20), @r_email varchar(20), @r_photo nvarchar(100)as begin insert into L_Reader(r_id,r_name,r_pwd,r_sex,r_typeid,r_academy,r_major,r_contact,r_email,r_photo)values(@r_id,@r_name,@r_pwd,@r_sex,@r_typeid,@r_academy,@r_major,@r_contact,@r_email,@r_photo);end /* 4图书类型表(L_BookType)字段名 字段说明 数据类型 bt_id 类型编号 bt_name 类型名称 */
约束 备注
int Primary Key Identity(1000,1)nVarchar(20)Not null use Library go create table L_BookType(bt_id int not null primary key Identity(1000,1), bt_name nvarchar(20)not null);
/* 5出版社信息表(L_Publishing)字段名 字段说明 数据类型 ISBN */ use Library go create table L_Publishing(ISBN char(13)not null primary key, p_name nvarchar(30)not null);
/* 6图书信息表(L_Book)字段名 字段说明 数据类型 国际标准图书编码
约束 备注
char(13)Primary Key
p_name 出版社名称 nvarchar(30)Not Null
约束 备注
b_id 图书编号 Varchar(30)Primary Key Identity(1000,1)b_name 图书名称 nvarchar(30)Not Null ISBN 国际标准图书编码 char(13)Foreign Key 13位数字组成 b_bkcaseid 书架编号 Varchar(20)
b_price 定价 b_author 作者 Numeric(10,2)nvarchar(20)
b_typeid 类型编号 int Foreign Key b_intime 入库时间 DateTime b_synopsis 图书简介 Nvarchar(500)b_state 图书状态 b_photo 封面图片 */ use Library go
create table L_Book(b_id varchar(20)not null primary key , b_name nvarchar(30)not null, ISBN char(13), b_bkcaseid varchar(20), b_price Numeric(10,2)not null, b_author nvarchar(20), b_typeid int, b_intime DateTime,bit 0--借出,1--没有借出 Nvarchar(100)存的是路径 b_synopsis nvarchar(1000), b_state bit not null default 0, b_photo nvarchar(100));
alter table L_Book add L_BookType(bt_id)on delete cascade on update cascade;alter table L_Book add constraint fk_bisbn foreign key(ISBN)references L_Publishing(ISBN)on delete cascade on update cascade;alter table L_Book drop column b_bkcaseid /*创建存储过程*/ use Library go create procedure book @b_name nvarchar(30), @ISBN char(13), @b_bkcaseid varchar(20), @b_price numeric(10,2), @b_author nvarchar(20), @b_intime datetime,@b_synopsis nvarchar(1000), @b_photo nvarchar(100)as begin insert into L_Book(b_name,ISBN,b_bkcaseid,b_price,b_author,b_intime,b_synopsis,b_photo)values(@b_name,@ISBN,@b_bkcaseid,@b_price,@b_author,@b_intime,@b_synopsis,@b_photo);end /* 7借阅管理表(L_Borrow)字段名 字段说明 数据类型
constraint fk_btypeid foreign key(b_typeid)references
约束 备注
bw_id 借阅编号 int Primary Key Identity(1,1)bw_bookid 图书编号 Varchar(20)Foreign Key bw_readerid 读者编号 bw_outtime 借出日期 bw_endtime 到期日期 bw_backtime 归还日期 bw_isexpired 是否过期 bw_fine 罚款数目 */ use Library
Int Foreign Key DateTimeNot Null DateTimeNot Null
DateTime
Bit Not Null 默认为0--不过期
过期后才计算罚款数目 Numeric(10,2)go create table L_Borrow(bw_id int not null primary key Identity(1,1), bw_bookid varchar(20), bw_readerid bigint , bw_outtime datetime not null,bw_endtime as dateadd(d,30,bw_outtime), bw_backtime datetime, bw_isexperied bit default 0, bw_fine numeric(10,2)default 0.00);alter table L_Borrow add constraint fk_bookid foreign key(bw_bookid)references L_Book(b_id)on delete cascade on update cascade;alter table L_Borrow add constraint fk_readerid foreign key(bw_readerid)references L_Reader(r_id)on delete cascade on update cascade;/* 8图书资源表(L_Resource)字段名 字段说明 数据类型
约束 备注
rs_id 资源编号 Int Primary Key Identity(1000,1)rs_name 资源名称 nVarchar(30)Not null rs_synopsis 资源简介 nVarchar(500)rs_amount 资源大小 int 单位为KB或是MB rs_type 资源类型 等常用格式 */ use Library go create table L_Resource(rs_id int not null primary key Identity(1000,1), rs_name nvarchar(30)not null, rs_synopsis nvarchar(500), rs_amount bigint, rs_type varchar(20));
/* 9图书评论表(L_BookMarks)
字段名 字段说明 数据类型 约束 备注 ISBN 国际标准图书编码 char(13)Foreign Key bm_contents 评论内容 Nvarchar(500)Not Null bm_time 评论时间 DateTimeNot Null */ Varchar(20)
类似于doc、xsl、ppt、pdf、zip、rar、MP3、wmvuse Library go create table L_BookMarks(ISBN char(13)not null, bm_contents nvarchar(500)not null, bm_time datetime not null);alter table L_BookMarks add constraint fk_bmisbn foreign key(ISBN)references L_Publishing(ISBN)on delete cascade on update cascade;/* 10书架信息表(L_BookCase)字段名 字段说明 数据类型 约束 备注
bc_id 书架编号 int Primary Key Identity(1000,1)bc_typeid 类型编号 int Foreign Key
*/ use Library go create table L_BookCase(bc_id int not null primary key Identity(1000,1), bc_typeid int not null);alter table L_BookCase add constraint fk_bctypeid foreign key(bc_typeid)L_BookType(bt_id);
references
第三篇:数据库及表的创建与修改
实验一
数据库及表的创建与修改
一、实验目的
1.熟悉掌握利用SSMS中的设计工具来创建表。修改表结构以及查看表属性等操作。
2.熟悉T-SQL的数据定义语言,能够熟练地使用SQL语句创建和更改基本表。
二、实验内容
1.完成实验教材中,实验1.1的全部内容。熟悉SQL SERVER的工作环境。
2、依照实验1.2中的二维表,完成如下内容。
1.利用SSMS中的设计工具为数据库LibraryLib创建表表1-5所示的BookClass(图书类别表)、1-6所示的Publish(出版社信息表)、表1-7所示的Book(图书信息表)。
2.利用T-SQL创建新表1-
8、1-9与1-10。
3.修改表1-10 ExtraDateFee(超期罚款信息表):将FineMoney字段数据类型更改为:numeric(15,2);删除Remarks字段;增加新字段Descript(varchar,70)。
4.利用T-SQL语句:删除BookClass(图书类别表),并重新创建该表。5.在SSMS中查看Book(图书信息表)的属性。
三、实验步骤
1.利用SSMS中的设计工具为数据库LibraryLib创建表。
表创建后的截图如下: 表1-5:
表1-6:
表1-7:
2.T-SQL语句创建表:
创建表1-8: CREATE TABLE [Borrow]([BorrowID] [int] NOT NULL , [UserID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [BookID] [int] NOT NULL , [BorrowBeginDate] [datetime] NOT NULL , [BorrowEndDate] [datetime] NOT NULL , [ManagerID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , CONSTRAINT [PK_Borrow] PRIMARY KEY CLUSTERED([BorrowID])ON [PRIMARY])ON [PRIMARY]
创建表1-9:
CREATE TABLE [BorrowHistory]([BorrowID] [int] IDENTITY(1, 1)NOT NULL , [UserID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [BookID] [int] NOT NULL , [BorrowBeginDate] [datetime] NOT NULL , [BorrowEndDate] [datetime] NOT NULL , [BorrowReturnDate] [datetime] NOT NULL , [ManagerID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [ManagerReturnID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , CONSTRAINT [PK_BorrowHistory] PRIMARY KEY CLUSTERED([BorrowID])ON [PRIMARY])ON [PRIMARY] 创建表1-10: CREATE TABLE [ExtraDateFee]([BorrowID] [int] NOT NULL , [UserID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [BookID] [int] NOT NULL , [BorrowBeginDate] [datetime] NOT NULL , [BorrowEndDate] [datetime] NULL , [BorrowReturnDate] [datetime] NOT NULL , [ManagerID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [ManagerReturnID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [FineMoney] [money] NOT NULL , [TurnIn] [bit] NOT NULL , [ManagerFineID] [varchar](20)COLLATE Chinese_PRC_CI_AS NOT NULL , [Remarks] [char](10)COLLATE Chinese_PRC_CI_AS NOT NULL , CONSTRAINT [PK_ExtraDateFee] PRIMARY KEY CLUSTERED([BorrowID])ON [PRIMARY])ON [PRIMARY]
3.修改表1-10 ExtraDateFee(超期罚款信息表):将FineMoney字段数据类型更改为:numeric(15,2);删除Remarks字段;增加新字段Descript(varchar,70)。
修改前:
修改后:
4.利用T-SQL语句:删除BookClass(图书类别表),并重新创建该表。删除BookClass: Delete book: DELETE FROM [LibraryLib1].[dbo].[BookClass]
创建BookClass: Create book: CREATE TABLE [BookClass]([BookClassID] [int] IDENTITY(1, 1)NOT NULL , [BookClassName] [varchar](30)COLLATE Chinese_PRC_CI_AS NOT NULL , [BookBorrowDays]
[int]
NOT
NULL
CONSTRAINT [DF_BookClass_BookBorrowDays] DEFAULT(60), [BookFee] [money] NOT NULL , CONSTRAINT [PK_BookClass] PRIMARY KEY CLUSTERED
([BookClassID])ON [PRIMARY])ON [PRIMARY]
5.在SSMS中查看Book(图书信息表)的属性。
四、实验心得
1.刚刚开始使用SQL servers进行数据库的建立及其操作,对这个平台的功能还不大熟悉。在寻找功能键这一步就话了很多的时间。
2.实验室安装的平台是SQL SERVERS 2005,但是实验书上用的平台是SQL SERVERS 2008,两者使用的语句以及两个平台之间的功能都有一下差异,导致理解上有些困难。
3.虽然理论课上已经学了很多SQL的操作语句,像表的建立,表的修改插入删除等,但是由于平时没有及时进行实际的上机操作,感觉对SQL的语句掌握得不太好,以后会多实践改进。
第四篇:数据库实验报告
数据库实验报告
一、题目要求
某银行准备开发一个银行业务管理系统,通过调查,得到以下的主要需求:
银行有多个支行。各个支行位于某个城市,每个支行有唯一的名字。银行要监控每个支行的资产。银行的客户通过其身份证号来标识。银行存储每个客户的姓名及其居住的街道和城市。客户可以有帐户,并且可以贷款。客户可能和某个银行员工发生联系,该员工是此客户的贷款负责人或银行帐户负责人。银行员工也通过身份证号来标识。员工分为部门经理和普通员工,每个部门经理都负责领导其所在部门的员工,并且每个员工只允许在一个部门内工作。每个支行的管理机构存储每个员工的姓名、电话号码、家庭地址及其经理的身份证号。银行还需知道每个员工开始工作的日期,由此日期可以推知员工的雇佣期。银行提供两类帐户——储蓄帐户和支票帐户。帐户可以由2个或2个以上客户所共有,一个客户也可有两个或两个以上的帐户。每个帐户被赋以唯一的帐户号。银行记录每个帐户的余额、开户的支行以及每个帐户所有者访问该帐户的最近日期。另外,每个储蓄帐户有其利率,且每个支票帐户有其透支额。每笔贷款由某个分支机构发放,能被一个或多个客户所共有。每笔贷款用唯一的贷款号标识。银行需要知道每笔贷款所贷金额以及逐次支付的情况(银行将贷款分几次付给客户)。虽然贷款号不能唯一标识银行所有为贷款所付的款项,但可以唯一标识为某贷款所付的款项。对每次的付款需要记录日期和金额。
二、需求分析
这一部分主要是根据实验需求对银行系统需求中的实体、实体属性以及实体之间的关联进行确认,以便画出正确的概念模型。
2.1 实体确认
根据需求分析确认实体:银行员工、银行支行、客户、账户(其中:储蓄账户、支票账户是继承实体账户而来)、贷款、支付(弱实体)。
2.2 实体属性确认
银行员工:身份证号(pi)、姓名、电话号码、家庭地址、开始工作日期 银行支行:支行名、资产、城市
客户:身份证号、姓名、街道、所在城市 账户:账户号、余额、最近访问日期 支票账户:透支额 储蓄账户:利率 2.3 实体关系确认
账户和支行:N:1定义关系为Relationship_accout_bank 客户和贷款:M:N定义关系为Relationship_client_loan 客户和员工:M:1 定义关系为 Relation_client_staff 贷款和支行:1:N 定义关系为 Relationship_loan_bank 客户和账户:M:N 定义关系为 client__accout 贷款发放信息和贷款:N:1 定义关系为 Relationship_loan_pay 支行和员工:1:N 定义关系为Relationship_staff_bank
员工和员工:1:N 定义关系为 Relationship_lead
三、概念模型(CDM)
根据sybase power designer画出概念模型(CDM),如下图所示:
四、物理模型(PDM)
根据概念模型转化成物理模型(PDM),如下图所示:
第五篇:数据库实验报告
实验4SQL高级应用
【实验目的】
1、掌握在SQL SERVER 2005下进行数据还原的方法。
2、掌握SQL语句的查询统计功能和数据更改功能。
【实验内容】
1.还原factory数据库。
2.在factory数据库上,完成如下各题。
(1)删除factory数据库上各个表之间建立的关系。(2)*显示各职工的工资记录和相应的工资小计。
(3)*按性别和部门名的所有组合方式列出相应的平均工资。
(4)在worker表中使用以下语句插入一个职工记录。职工号:20;姓名:陈立;性别:女;出生日期:55/03/08;党员否: 1;参加工作:75/10/10;部门号:4。
在depart表中使用以下语句插入一个部门记录。部门号:5;部门名:设备处。对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然后删除这两个插入的记录。
(5)显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。(6)显示最高工资的职工所在的部门名。
(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。(8)*采用游标方式实现(6)小题的功能。(9)*采用游标方式实现(7)小题的功能。
(10)*先显示worker表中的职工人数,开始一个事务,插入一个职工记录,再显示worker表中的职工人数,回滚该事务,最后显示worker表中的职工人数。
【实验报告要求】
1.第(1)写出操作步骤。
2.其他各题写出实现要求的命令/程序,并列出执行结果。
【操作步骤】
1.还原factory数据库。
2.在factory基础上,有
(1)删除factory数据库上各个表之间建立的关系。
(2)*显示各职工的工资记录和相应的工资小计。
Select 职工号,姓名,工资from salary Order by 职工号
Compute sum(工资)by 职工号
(3)*按性别和部门名的所有组合方式列出相应的平均工资。
select worker.职工号,worker.性别,depart.部门名,avg(工资)as'平均工资' from worker inner join depart on worker.部门号=depart.部门号 inner join salary on worker.职工号=salary.职工号
group by worker.职工号,worker.性别,depart.部门名
order by worker.职工号
(4)在worker表中使用以下语句插入一个职工记录。职工号:20;姓名:陈立;性别:女;出生日期:55/03/08;党员否: 1;参加工作:75/10/10;部门号:4。
insert into worker values('20','陈立','女','1955-03-08','1','1975-10-10',4)
在depart表中使用以下语句插入一个部门记录。部门号:5;部门名:设备处。
Insert into depart Values('5','设备处')对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然后删除这两个插入的记录。
use factory Select b.部门号,c.姓名
from salary a,departb,worker c delete from worker where 职工号=20 delete from depart where 部门号=5(5)显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。
Use factory Select b.部门名,c.职工号,c.姓名,b.部门名,a.日期,a.工资 from salary a,departb,worker c Where 工资in(select max(a.工资)from salary a)and a.职工号=c.职工号and b.部门号=c.部门号(6)显示最高工资的职工所在的部门名。
Use factory Select b.部门名from salary a,departb,worker c Where 工资in(select max(a.工资)from salary a)and c.部门号=b.部门号and a.职工号=c.职工号
(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。
Use factory Select a.职工号,a.姓名,avg(b.工资)as平均工资from worker a,salary b where a.职工号=b.职工号 group by a.职工号,a.姓名
having avg(工资)<(select avg(工资)from salary)