SQL Server 2008 資料庫_實驗一_SQL DDL 操作
SQL DDL 操作
什麼是SQL DDL 操作?
DDL是SQL定義語言,它主要包括三個關鍵字:create ,alter , drop(資料庫關鍵字不分大小寫 ),主要操作物件 有資料庫、表、索引、檢視等。
語句說明:
建立資料庫 create database
修改資料庫 alter database
刪除資料庫 drop database
建立表 create table
修改表 alter table
刪除表 drop table
建立索引 create index
刪除索引 drop index
實驗的目的
- 掌握建立資料庫和撤銷。
- 掌握基本表的建立、修改和撤銷。
- 掌握索引的建立和撤銷。
實驗內容與要求
利用SQL語句建立資料庫Lesson,並指定資料檔案和日誌檔案的儲存位置為E:\sqldata。
通過SQL語句建立以下基本表
- 教師關係 T (T#, TNAME,TITLE)
- 課程關係 C (C#,CNAME,T#)
- 學生關係 S (S#,SNAME,AGE,SEX)
- 選課關係 SC (
S#,C#,SCORE) - 班級關係CLASS(CLASSID,CLASSNAME)
- 其中粗體為主鍵,劃線的屬性為外來鍵。
- 通過SQL語句在CLASS表的CLASSID列上建立聚集索引IDX_CLASSID
- 通過SQL語句建立在S#和C#兩個列上建立索引IDX_S#_C#,並指定索引按S#降序,C#升序有序。
- 通過SQL語句實現以下操作:
- 撤銷索引IDX_CLASSID及IDX_S#_C#
- 在學生關係中增加班級號屬性列CLASSID
- 撤銷學生關係中的班級號屬性列CLASSID
- 撤銷班級關係CLASS
實驗主要步驟
一、建立資料庫Lesson
原始碼:
create database Lesson --建立lesson資料庫 on primary --主檔案組 ( name = 'Lesson_data', --主檔案邏輯檔名 filename = 'd:\sql2008project\實驗一\資料庫和日誌檔案\Lesson_data.mdf' --主檔案物理檔名(儲存路徑) ) log on --日誌檔案 ( name = 'Lesson_log', --日誌檔案邏輯檔名 filename = 'd:\sql2008project\實驗一\資料庫和日誌檔案\Lesson_log.ldf' --日誌檔案物理檔名(儲存路徑) ) select * from sysdatabases --查詢資料庫建立記錄
建立資料庫後創新可見所建立的資料庫。
二、通過SQL語句建立基本表
原始碼:
Use Lesson --指向需要所操作的資料庫Lesson
--建立教師關係表T
Create table T
(
T# varchar(50) not null,--教師編號
TNAME varchar(50) not null,--教師姓名
TITLE varchar(50) not null,--所授課程
primary key (T#)
);
--建立課程關係表C
Create table C
(
C# varchar(50) not null, --課程編號
CNAME varchar(50) not null, --課程姓名
T# varchar(50) not null, --教師編號
primary key (C#)
);
--建立學生關係表S
Create table S
(
S# varchar(50) not null, --學生編號
SNAME varchar(50) not null, --學生姓名
AGE varchar(10) not null, --學生年齡
SEX varchar(10) not null, --學生性別
primary key (S#)
);
--建立選課關係表SC
Create table SC
(
S# varchar(50) not null, --學生編號
C# varchar(50) not null, --課程編號
SCORE varchar(50) not null --學生分數
primary key (S#,C#),
foreign key (S#) references S (S#),
foreign key (C#) references C (C#)
);
--建立選課關係表CLASS
Create table CLASS
(
CLASSID varchar(50) not null,--班級編號
CLASSNAME varchar(50) not null,--班級姓名
)
三、通過SQL語句在CLASS表的CLASSID列上建立聚集索引IDX_CLASSID
原始碼:
Use Lesson --指向需要所操作的資料庫Lesson
create clustered index IDX_CLASSID --建立聚集索引
on CLASS(CLASSID) --為某表某列建立索引
四、通過SQL語句建立在S#和C#兩個列上建立索引IDX_S#_C#,並指定索引按S#降序,C#升序有序。
原始碼:
Use Lesson --指向需要所操作的資料庫Lesson
create index IDX_S#_C# on S(S# desc) --為學生關係表S的S#列建立降序索引
create index IDX_S#_C# on C(C# asc) --為課程關係表C的C#列建立升序索引
create index IDX_S#_C# on SC(S# desc,C# asc)--為選課關係表SC的S#列建立降序索引,C#列建立升序索引
五、撤銷索引IDX_CLASSID及IDX_S#_C#
原始碼:
Use Lesson --指向需要所操作的資料庫Lesson
drop index S.IDX_S#_C# --刪除學生關係表上的IIDX_S#_C#索引
drop index C.IDX_S#_C# --刪除課程關係表上的IIDX_S#_C#索引
drop index SC.IDX_S#_C# --刪除選課關係表上的IIDX_S#_C#索引
drop index CLASS.IDX_CLASSID --刪除班級關係表上的IDX_CLASSID索引
六、在學生關係中增加班級號屬性列CLASSID
原始碼:
Use Lesson --指向需要所操作的資料庫Lesson
alter table S add CLASSID varchar(50)
七、撤銷學生關係中的班級號屬性列CLASSID
原始碼:
Use Lesson --指向需要所操作的資料庫Lesson
alter table S drop column CLASSID
八、撤銷班級關係CLASS
原始碼:
Use Lesson --指向需要所操作的資料庫Lesson
drop table CLASS --刪除班級關係表
至此,本實驗全部要求已完成!
關鍵語法介紹:
-
建庫
create database 資料庫名
on primary --主檔案組
(
name = ‘主檔案邏輯檔名’,
filename = ‘主檔案物理檔名(儲存路徑)’ ,
size = 主檔案初始大小(單位MB),
maxsize = 主檔案增長的最大值(單位MB),
filegrowth = 主檔案的增長率(單位MB或者%)
)<此處可以繼續新增子檔案組>
log on --日誌檔案
(
name = ‘日誌檔案邏輯檔名’,
filename = ‘日誌檔案物理檔名(儲存路徑)’,
size = 日誌檔案初始大小(單位MB),
maxsize = 日誌檔案增長的最大值(單位MB),
filegrowth = 日誌檔案的增長率(單位MB或者%)
) <此處可以繼續新增日誌檔案> -
建表
create table 表名
(
列名 資料型別 是否為空 等
) -
建立索引
create [unique] [clustered] [nonclustered] index 索引名
on 表名(列名 [desc][asc])為某表某列建立索引(降序/升序) -
刪除索引
drop index 表名.索引名 -
新增列
alter table 表名 add 需要新增的列名 資料型別 -
刪除列
alter table 表名 drop column 列名 -
刪除表
drop table 表名
關鍵知識點
- 主鍵:
- 表中一列或幾列組合的,能夠唯一的表示表中的每一行
- 一個表只能有一個主鍵
- 多列組合當主鍵稱為符合主鍵
- 原則:最少性和唯一性
- 外來鍵
- 相對於主鍵而言
- 一個表可以有多個外來鍵
- 約束的型別
- 主鍵約束:要求主鍵列不能為空,要求主鍵列唯一
- 非空約束:要求列不能存在空值
- 唯一約束:要求列的值必須是唯一的,允許為空,但只能出現一個空值
- 檢查約朿:限制某列取值的範圍是否合適
- 預設約束:設計列的預設值
- 外健約束:用於在兩表之間建立關係,需要指定引用主表的哪一列
主健約束與唯一約束的區別:
- 主鍵約束所在的列不允許有空值,唯一約束所在的列允許空值
- 每個表中可以有一個主鍵,多個唯一鍵
- 索引
索引:是SQL編排資料的內部方法,為SQL SERVER 提供一種方法來編排查詢資料
索引的分類:
- 聚集索引:正文內容本身就是一種按照規定排列的目錄稱為 “聚集索引”。例如新華字典正文就是按照字母順序排序的,也可以說字典正文字身就是目錄,不需要檢視其它目錄去查詢,這就是聚集索引。
- 非聚集索引:目錄純粹是目錄,正文純粹是正文的排序方式稱為“非聚集索引”。例如在新華字典查詢不知道讀音的字,那就需要使用偏旁部首來查詢,而在偏旁部首裡並沒有按照讀音來排序,會出現偏旁部首裡鄰近的兩個字,而在正文裡相差甚遠,像這樣目錄是目錄,內容是內容的方式就是非聚集索引。
- 作用:大大提高資料庫的檢索速度,改善資料庫效能。
建立索引的一般原則:
- 每個表只能建立一個聚集索引;
- 每個表最多隻能建立一249個非聚集索引;
- 在程序查詢的欄位上建立索引;
- Text,Image和bit資料型別的列上不要建立索引;
- 外來鍵列可以建立索引;
- 主鍵列必須建立索引;
- 重複值表較多,查詢較少的列上不要建立索引。
如有錯誤,歡迎指正!