Sqlserver 學習筆記
by:授客 QQ:1033553122
-----------------------接Part 8-------------------
3
範式的概念
第一範式的目标是確定每列的原子性。
如果每列都是不可再分的最小單元(也稱為最小的原子機關。),則滿足第一範式(1NF)
第二範式要求每個表隻描述一件事情。
如果一個關系滿足1NF,并且除了主鍵以外的其它列,都依賴該主鍵,則滿足第二範式。(2NF)
第三範式
如果一個關系滿足2NF,并且除了主鍵以外的其它列都不傳遞依賴于主鍵,則滿足第三範式(3NF)。
第一範式(1NF)的目标:確定每列的原子性。
第二範式(2NF)的目标:確定表中的每列,都和主鍵相關,即不存在部分依賴
第三範式(3NF)的目标:確定每列都和主鍵列直接相關,而不是間接相關,即不存在傳遞函數依賴
4 T-SQL建立資料庫的文法:
CREATE DATABASE
資料庫名
ON [PRIMARY]
(
<</span>資料檔案參數>
[,…n]
[<</span>檔案組參數>]
)
[LOG ON]
<</span>日志檔案參數>
[,…n]
示例
--建立學生資料庫:一個資料檔案,一個日志檔案
CREATE
DATABASE studentDB
ON
PRIMARY--預設就是屬于PRIMARY主檔案,可以省略
(
NAME='stdDB_data',--主資料檔案的邏輯名
FILENAME='E:\SQL\stuDB.mdf',--主資料檔案的實體名
SIZE=3mb,--主資料檔案的初始大小
MAXSIZE=10mb,--主資料檔案的增長的最大值
FILEGROWTH=10%--主資料檔案的增長率
)
LOG
ON
NAME='stuDB_log',
FILENAME='E:\SQL\stuDB_log.ldf',
SIZE=3mb,
MAXSIZE=10mb,
FILEGROWTH=1mb
GO
注意:這裡的兩個name參數不能一樣的邏輯名,否則會提示邏輯檔案名xxx已被使用,請選擇另一個名稱
--建立學生資料庫:多個資料檔案,多個日志檔案
DATABASE employeeDB
NAME='employee1_data',--主資料檔案的邏輯名
FILENAME='E:\SQL\employee1.mdf',--主資料檔案的實體名
),
NAME='employee2_data',--主資料檔案的邏輯名
FILENAME='E:\SQL\employee2.mdf',--主資料檔案的實體名
(
NAME='employee1_log',
FILENAME='E:\SQL\employee1_log.ldf',
NAME='employee2_log',
FILENAME='E:\SQL\employee2_log.ldf',
USE
master --設定目前資料庫為master,以便通路sysdatabase表
IF
EXISTS(SELECT *
FROM sysdatabases WHERE name='stuDB')
DROP DATABASE stuDB
DATABASE stuDB
PRIMARY
NAME='stdDB2_data',--主資料檔案的邏輯名
FILENAME='E:\SQL\stuDB2.mdf',--主資料檔案的實體名
FILENAME='E:\SQL\stuDB2_log.ldf',
說明:EXISTS()語句:檢測是否存在stuDB資料庫如果存在stuDB資料庫,則删除
--建立表
stuDB--将目前資料庫設定為stuDB
TABLE stuInfo
stuName VARCHAR(20)
NOT NULL, --姓名,非空(必填)
stuNo CHAR(6)
NOT NULL, --學号,非空(必填)
stuID NUMERIC(18,0),
stuSeat SMALLINT IDENTITY(1,1),
--座位号,自動編号
stuAddress TEXT --住址,允許為空,即可選輸入
說明:NUMERIC
(18,0)
代表18位數字,小數位數為0
IDENTITY(起始值,遞增量)
5
限制
目的:確定表中資料的完整型
常用的限制類型:
1)
主鍵限制(Primary Key
Constraint):要求主鍵列資料唯一,并且不允許為空
2)
唯一限制(Unique
Constraint):要求該列唯一,允許為空,但隻能出現一個空值。
3)
檢查限制(Check
Constraint):某列取值範圍限制、格式限制等,如有關年齡的限制
4)
預設限制(Default
Constraint):某列的預設值,如我們的男性學員較多,性别預設為“男”
5)
外鍵限制(Foreign Key
Constraint):用于兩表間建立關系,需要指定引用主表的那列
添加限制的文法:
ALTER TABLE
表名
ADD CONSTRAINT
限制名
限制類型
具體的限制說明
其中,限制名的取名規則推薦采用:限制類型_限制字段
a)
主鍵(Primary
Key)限制:如
PK_stuNo
b)
唯一(Unique
UQ_stuID
c)
預設(Default
DF_stuAddress
d)
檢查(Check
CK_stuAge
e)
外鍵(Foreign
Key)限制:如
FK_stuNo
--給stuInfo表添加限制
ALTER
ADD
CONSTRAINT PK_stuNo PRIMARY KEY
(stuNo)
CONSTRAINT UQ_stuID UNIQUE(stuID)
CONSTRAINT DF_stuAddress
DEFAULT
('位址不詳')
FOR stuAddress
CONSTRAINT CK_stuAge
CHECK(stuNo
BETWEEN 1 AND 60)
CONSTRAINT FK_stuNo
FOREIGN
KEY(stuNo)
REFERENCES stuInfo(stuNo)
作者:授客
微信/QQ:1033553122
全國軟體測試QQ交流群:7156436
Git位址:https://gitee.com/ishouke
友情提示:限于時間倉促,文中可能存在錯誤,歡迎指正、評論!
作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額随意,您的支援将是我繼續創作的源動力,打賞後如有任何疑問,請聯系我!!!
微信打賞
支付寶打賞 全國軟體測試交流QQ群