數據庫學習筆記之創建、約束和刪除

數據庫學習筆記之創建、約束和刪除

寒假自己看黑馬的視頻自學了MySQL數據庫,這學期學校也開了數據庫這門課,用的是SqlServer(這裏也同樣是使用SqlServer),由於疫情原因也沒有紙質版的書,本來是做了幾次手寫的筆記,但是手寫真的是很麻煩啊,所以還是決定通過寫博客的方式來總結一下,也順便可以和大家分享一下。
筆記絕大部分都是按照老師上課的PPT寫的,由於老師講課的時候有些例題只有代碼沒有代碼執行過後的結果,平常上課其實幹聽對於數據庫的學習還是有些模糊的,所以筆記裏我會再將執行的結果貼出來方便理解。
首先是創建數據庫
創建之前當然要了解一些基本的SQL的數據類型辣(數據類型有點多,什麼Smallint、Tinyint…各種…),這裏就用表格簡單總結一下吧

數值型

準確型(整數) 所佔字節
Bigint 8
Int 4
Smallint 2
Tintint 1
Bit 1位,存儲1或0
準確型(小數) 備註
Numeric/Decimal (p,q) p爲數字位長度,q爲小數位長度
近似型 所佔字節
Float 8
Real 4

字符串型

普通編碼字符串類型 備註
char(n) 定長存儲,n<=8000
varchar(n) 不定長存儲(按實際長度存儲),長度最大不超過n,n<=8000
text 存儲大於8000字節的文本
統一字符編碼字符串類型 備註
nchar(n) 定長存儲,n<=4000
nvarchar(n) 不定長存儲,長度最大不超過n,n<=4000
ntext 存儲大於8000字節的文本
二進制字符串類型 備註
binary(n) 固定長度,n<=8000
varbinary(n) 可變長度,n<=8000
image 大容量、可變長二進制字符數據,可用於存儲文件

日期時間型

日期時間型 備註
datetime 8字節,年月日時分秒毫秒
smalldatetime 4字節,年月日時分

說完數據類型,就可以開始着手定義表辣。

定義基本表

一般格式:
CREATE TABLE <表名> (
<列名> <數據類型> [列級完整性約束定義]
{,<列名> <數據類型> [列級完整性約束定義]…}
[,表級完整性約束定義] )

關於約束

約束 說明
NOT NULL 限制列取值非空
DEFAULT 給定列的默認值
UNIQUE 限制列取值不重複
CHECK 限制列的取值範圍
PRIMARY KEY 指定本列爲主碼
FOREIGN KEY 定義本列爲引用其他表的外碼

其中FOREIGN KEY的使用形式爲:
[FOREIGN KEY(<外碼列名>)]
REFERENCES <外表名>(<外表列名>)

說明:
1、NOT NULL 和 DEFAULT只能是列級完整性約束
2、其他約束均可在表級完整性約束處定義
3、如果CHECK約束是定義多列之間的取值約束,則只能在表級完整性約束處定義
4、如果表的主碼由多個列組成,則也只能在表級完整性約束處定義,並將主碼列用括號括起來,即:PRIMARY KEY( 列1{ [,列2 ]…} )
5、如果在表級完整性約束處定義外碼,則“FOREING KEY ( <外碼列名> )”部分不能省略

幾個例子:

列取值非空約束:
用法:<列名> <類型> NOT NULL
例:sname char(10) NOT NULL

表主碼約束:
用法:列定義 PRIMARY KEY
1、在定義列是定義主碼(僅用於單列主碼)
例: Sno char(7) PRIMARY KEY
2、在定義完列時定義主碼(用於單列或多列主碼)
例:PRIMARY KEY(Sno)
PRIMARY KEY(Sno, Cno)

外碼引用約束:
用法:[ FOREIGN KEY ( <本表列名> ) ]
REFERENCES < 外表名 > ( <外表主碼列名>)
例:FOREIGN KEY (Sno)
REFERENCES 學生表(Sno)

創建幾個表並查看一下內容:
學生表:
在這裏插入圖片描述
在這裏插入圖片描述

課程表:
在這裏插入圖片描述
在這裏插入圖片描述

選課表:
在這裏插入圖片描述

在這裏插入圖片描述

表的刪除
語法:
DROP TABLE <表名> { [,<表名> ] … }
例:刪除test表:
DROP TABLE test

先這麼多吧。。。下次該寫表的修改了。。。看了一下,這部分其實還是概念多一點。。。。還是多記吧,之後的有關數據操作的部分的實操應該就會多一些辣。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章