SQL之定義資料

2021-10-04 11:15:44 字數 3813 閱讀 6845

sql 2012使用 2020.3.26

今天開始學習sql的打碼,主要學習了資料定義中的定義資料庫,定義基本表、約束條件、修改基本表、刪除、定義索引的操作。

首先,由於使用的教材中的例題基本上全是大寫字母,所以我打碼的時候要左手一直按著shift鍵(好累),後來直接開了caps lock,然而這並沒有加快我的速度,反而因為不習慣而經常打錯字。好了,進入正題。

一、定義資料庫

create

database 資料庫名 on

primary

( name=資料庫名,

filename=

'檔案路徑'

--如 c:\sqlserver\data\學生選課.mdf',

size=

5mb,

--sql2012最小模板大小為5mb

maxsize=

10mb,

filegrowth=20%

)

需要說明的是name和filename的區別是filename是磁碟檔案路徑,name就是新建資料庫的名字。

選擇資料庫

use

《資料庫名》

刪除資料庫

drop

database

《資料庫名》

二、定義基本表

create

table 表名

(列名1 資料型別1 列級完整性約束條件1

, 列名2 資料型別2 列級完整性約束條件2

, 列名3 資料型別3 列級完整性約束條件3

, 列名4 資料型別4 列級完整性約束條件4,.

....

.

表級完整性約束條件 )

其中完整性約束條件為選填。

下面具體說說幾種約束。

(1)null/not null 約束

constraint 約束名 null

constraint 約束名 not

null

注意該約束只能定義列約束,如果沒有指定not null約束,系統預設為null。null值不是0也不是空白,更不是填入字串『null』,而是表示「不知道」、「不確定」或「沒有資料」的意思,不佔據任何儲存空間。

(2)unique約束

該約束指明在某一列或多個列組合的取值必須唯一。定義了unique約束的屬性的列組合成為唯一碼。唯一碼允許為空,但是最多隻可以出現乙個null值。unique既可以用於列約束也可以用於表約束 。

constraint 約束名 unique

--列約束

constraint 約束名 unique

(列名1,列名2,...

)--表約束,用法參見表定義

(3)primary key約束

該約束用於定義基本表的主碼,其屬性值不能取null,也不能重複,以此來保證實體的完整性。

乙個表中只能有乙個primary key約束,但可定義多個unique約束。 不能為同乙個列或一組列既定義unique約束,又定義primary key約束。primary key約束可以用於列約束,也可以用於表約束。

constraint 約束名 primary

key--列約束

constraint 約束名 primary

key(列名1,列名2,...

)--表約束

(4)foreign key約束

該約束用於指定某乙個列或一組列作為外碼,當定義foreign key約束後,系統將確保參照完整性,即參照關係在外碼上的取值要麼是被參照關係中某乙個主碼值,要麼取空值。foreign key即可用於列約束,也可用於表約束。

constraint 約束名 foreign

key(

)references 被參照關係名(列名)

(5)check約束

用於檢查字段值所允許的範圍。check約束既可用於列約束,也可用於表約束。

constraint 約束名 check

(條件)

三、修改基本表

sql語言用alter table語句來修改基本表,其一般格式為

(1)add方式

用於增加新列和完整性約束,列的定義方式同create table語句中列的定義方式相同。

alter

table 表名 add 列定義 完整性約束定義

--例子

alter

table student add

constraint score_chk

check

( score between

0and

100)

alter

table student add

constraint s_come

default

(getdate())

for come_date --把來的那天設定預設時間為系統時間

alter

table book add

constraint pk_no primary

keyclustered

(borrow_date)

--新增主鍵約束

(2)drop方式

用於刪除指定的完整性約束條件,或刪除指定的列。

alter

table 表名 drop 完整性約束名

--例子

alter

table student drop score_chk

(3)alter方式

用於修改某些列。

alter

table 表名 alter

column 列名 資料型別

--例子

alter

table student alter

column sname varchar(28

)

四、刪除基本表

drop

table 表名

使用drop方式刪除基本表後,表中的資料和在該錶上所建立的索引都被刪除,系統將繼續保留檢視定義,但已經無法使用。如果重新恢復該錶,這些檢視可重新使用。

五、定義索引

create

unique

index 索引名

on 表名(列名1 次序1,列名2 次序2,...

)

其中,unique表示要建立唯一索引,此索引的每乙個索引值只對應唯一的資料記錄。若把unique換成cluster,則表示要建立的索引是聚簇索引。索引可以建立在該錶的一列或多列上,各列名之間用逗號分隔,並可用《次序》指定索引值得排列次序,公升序asc,降序desc,預設為asc。

create

unique

index s_sno on student(sno)

create

unique

index scno on sc(sno asc

,cno desc

)

六、刪除索引

隨著索引的增多,資料更新時,系統會花費許多時間來維護索引,因此有必要刪除不必要的索引。

drop

index 表名.索引名

--例子

drop

index student.s_sno

SQL之資料定義

sql是關聯式資料庫標準語言,主要功能有資料定義 資料查詢 資料操縱和資料控制。其特點是高度非過程化 綜合統 一 物件導向操作 對應資料系統結構的 模式結構,其包含的檢視和部分基本表與外模式相對應 基本表與模式相對應 索引與內模式相對應。sql 有一些語法約定符號,如下 方括號 中的內容為任選項,根...

sql 之 資料定義語言 DDL

sql語言,是結構化查詢語言 structured query language 的簡稱。sql語言是一種資料庫查詢和 程式語言,用於訪問資料以及查詢 更新和管理關係資料庫系統 同時也是資料庫指令碼檔案的副檔名。sql語言集 value 資料查詢 select 資料定義 create,drop,al...

SQL資料定義

定義模式create schema test autorization zhang create table tab1 col1 smallint,col2 int,col3 char 20 col4 numeric 10,3 col5 decimal 5,2 刪除模式drop schema 模式名...