SQL 基本表的定義

2021-10-02 02:21:09 字數 3993 閱讀 6723

create

database

《資料庫名》

use

《資料庫名》

create

table

《表名》

(《屬性列名1

>

《資料型別》

[列級約束條件]

,《屬性列名2

>

《資料型別》

[列級約束條件],.

....

....

....

....

....

....

....

....

.,[表級約束條件]

)

下面是sql語言資料型別介紹:

資料型別

含義char(n)

定義定長度n的字串(不足n個自動補空格)

varchar(n)

定義最大長度為n的變長字串(不會補空格)

int整數

smallint

短整數real

取決於機器精度的浮點數

float(n)

浮點數,精度至少為n位

numeric(p,d)

定點數,由p位數字(符號,小數點除外)組成,小數點後有d位數字

decimal(p,d)

定點數,由p位數字(符號,小數點除外)組成,小數點後有d位數字

data

日期,包含年月日,格式為yyyy-mm-dd

time

時間,包含時分秒,格式為hh:mm:ss

下面介紹主鍵和外來鍵:

1.主鍵

主鍵是用於確定資料庫中的表的記錄的唯一標識字段,可以是乙個字段,也可以是多個。

(需要注意的是:

一旦該字段被確定為主鍵時,該欄位不能為空,也不能有重複屬性值。)

下面是sql語言中定義主鍵的方式:

primary

key[

(《屬性列(組)

>

)]

1).當主鍵只有乙個字段,採用列級約束條件進行約束
create

table s

(sno char(6

)primary

key,

sn char(10

),sd char(16

))

2).當主鍵有多個字段,採用表級約束條件進行約束
create

table sc

(sno char(6

),cno char(6

),grade decimal(4

,1),

primary

key(sno,cno)

)

2.外來鍵

外來鍵是相對於主鍵來說的,是用於關聯兩個或以上的表,乙個表(參照表)的某字段與另乙個表(被參照表)的主鍵相對應從而建立關係。(保證資料的一致性)

(需要注意的是:

1.外來鍵不一定要與主鍵同名,但是為了方便識別,通常採用同名方式。

2.外來鍵與對應的主鍵必須定義在同一值域上,即資料型別和長度要完全一致。)

下面是sql語言中定義外來鍵的方式:

foreign

key[

《外來鍵》

]references

(被參照表)(

《與外來鍵對應的主鍵名》

)

create

table s

(sno char(6

),cno char(6

),grade decimal(4

,1),

primary

key(cno,sno)

,foreign

key(sno)

references s(sno)

,foreign

key(cno)

references c(cno)

,)

當外來鍵被定義後,插入值便只能取對應被參照表的主鍵值。

為了防止完整性被破壞,採用了以下的更新策略:

on

update

(cascade|no

action

)(當修改被參照表中的主鍵值時,級聯修改參照表中的所有關聯元組或拒絕執行修改操作。)

ondelete

(cascade|no

action

)(當刪除被參照表中的主鍵值時,級聯修改參照表中的所有關聯元組或拒絕執行刪除操作。)

使用者定義完整性定義:

1)not null或null(預設)約束 約束關係主屬性必須限定為not null。

2)unique約束 唯一性約束條件,不允許出現重複的屬性值。

3)default約束 預設值約束。

4)check約束 檢查約束條件表示式設定屬性值應該滿足的條件。

下面是例子:

create

table s

(sno char(6

)primary

key,

sn char(10

)not

null

,sd char(16

),sb date

,*** char

default

'男',

check

(*** in

('男'

,'女'))

)

create

table sc

(sno char(6

),sno char(6

),grade decimal(4

,1),

primary

key(sno,cno)

,foreign

key(sno)

references s(sno)

,foreign

key(cno)

references c(cno)

,check

(grade between

0and

100)

)

實現**如下:

alter

table

《表名》

add《屬性列名》

《資料型別》

[完整性約束條件]

|《完整性約束》

1.增加表中某一列
alter

table s add sh char(30

)

2.補充定義sno為主鍵
alter

table s add

primary

key(sno)

3.修改原有列型別
alter

table

《表名》

alter

column

《屬性列名》

《資料型別》

4.刪除原有列或約束條件
alter

table

《表名》

drop

cascade:級聯更新

restrict: 在沒有檢視或約束引用該條件時,才能被刪除。

5.基本表的刪除

drop

table

《表名》

[cascade

|restrict

]

例如

drop

table s cascade

基本表的定義

create table 表名 列名 資料型別 列級完整性約束條件 列名 資料型別 列級完整性約束條件 表級完整性約束條件 sql中約束分為以下6種 主碼約束 primary key pk course 外碼約束 foreign key fk c 非空約束 not null n k 唯一約束 uni...

SQL獲取表定義

查詢某個庫里所有表的定義,包括欄位名,值型別,長度,是否為空,是否為主鍵等 select sysobjects.name astb name,syscolumns.name ascol name systypes.name ascol type,syscolumns.length ascol len...

SQL之表定義

sql 結構化查詢語言 1 用create table命令定義sql關係 create table r a1 d1,a2 d2,an dn,完整性約束1 完整性約束k 其中,r是關係名,每個ai是關係r模式中的乙個屬性名,di是屬性ai的域 2 完整性約束 not null,乙個屬性上的not nu...