第一篇:數據庫和表的創建與管理實驗報告
南京信息工程大學實驗(實習)報告
實驗(實習)名稱 數據庫和表的創建與管理 實驗(實習)日期得分指導教師系
計算機 專業 計算機科
學與技術 年級班次姓名學號
一、實驗目的
1.熟悉SQL Server 2005 中SQL Server Management Studio的環境。
2.了解SQL Server 2005數據庫的邏輯結構和物理結構。
3.掌握使用向導創建和刪除數據庫的方法。
4.掌握使用SQL 語句創建和刪除數據庫。
5.了解表的結構特點,了解SQL Server 的基本數據類型,管理器創建表,會用T-SQL語句創建表。
6.管理器中修改表的定義,使用SQL語句修改表的定義。
二、實驗內容
內容一:使用向導創建和刪除數據庫。
內容二:使用 SQL 語句創建和刪除數據庫。
內容三:用向導和 SQL 語句創建和刪除表?!?/p>
內容四:修改數據庫基本表的定義。
三、實驗步驟
內容一:
設有一學籍管理系統,其數據庫名為“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)