天天看點

SQLServer 學習筆記之超詳細基礎SQL語句 Part 9

Sqlserver 學習筆記

by:授客 QQ:1033553122

-----------------------接Part 8-------------------

3

範式的概念

第一範式的目标是確定每列的原子性。

如果每列都是不可再分的最小單元(也稱為最小的原子機關。),則滿足第一範式(1NF)

第二範式要求每個表隻描述一件事情。

如果一個關系滿足1NF,并且除了主鍵以外的其它列,都依賴該主鍵,則滿足第二範式。(2NF)

SQLServer 學習筆記之超詳細基礎SQL語句 Part 9

第三範式

如果一個關系滿足2NF,并且除了主鍵以外的其它列都不傳遞依賴于主鍵,則滿足第三範式(3NF)。

SQLServer 學習筆記之超詳細基礎SQL語句 Part 9

第一範式(1NF)的目标:確定每列的原子性。

第二範式(2NF)的目标:確定表中的每列,都和主鍵相關,即不存在部分依賴

SQLServer 學習筆記之超詳細基礎SQL語句 Part 9

第三範式(3NF)的目标:確定每列都和主鍵列直接相關,而不是間接相關,即不存在傳遞函數依賴

SQLServer 學習筆記之超詳細基礎SQL語句 Part 9

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群  

SQLServer 學習筆記之超詳細基礎SQL語句 Part 9
SQLServer 學習筆記之超詳細基礎SQL語句 Part 9
SQLServer 學習筆記之超詳細基礎SQL語句 Part 9