SQL約束名建立與修改新增

2021-10-05 07:31:22 字數 2635 閱讀 8683

primary key約束與 foreign key約束建立

主鍵primary建立:

格式1:

create

table

《表名》

(《列名1

> 資料型別 primary

key,

《列名2

> 資料型別

)

如:建立表g1並且設定g_id為主鍵

create

table g1

(g_id char(6

)primary

key,

g_name varchar(20

))

格式2:

create

table

《表名》

(《列名1

> 資料型別 ,

《列名2

> 資料型別 ,..

...,

constraint 約束名 primary

key(列或者列的組合)

)

如:建立表stu 定義主鍵為s_id

create

table stu

(s_id char(10

),s_name varcahr(30)

,s_*** char(2

),constraint pk primary

key(s_id)

)

foreign key 約束

建立時的foreign key約束:

create

table

《表名》

(《列名》 資料型別 references

《被引用的表名》 (被引用的列名)

例:

create

table

types

(t_id char(2

)primary

key,

t_name varcahr(2)

)

create

table goods

(g_id char(6

),g_name varchar(30

),t_id char(2

)references

types

(t_id)

//goods的外來鍵引用的types的t_id必須為types的主鍵,

乙個表可以有多個外來鍵,每個外來鍵是每個引用表的主鍵。

修改新增外來鍵約束:

alter

table

《表名》

addconstraint

《約束名》

foreign

key(欄位名)

references

《被引用的表名》 (被引用的列名)

例:

alter

table goods

addconstraint fg_t_id foreign

key(t_id)

references

types

(t_id)

check例子:

關於length:

datalength()函式返回的是字串位元組的長度,包含字尾空格。而len()函式返回的是字串的字元長度,不包含字尾的空格。

設定customers表的c_carid的長度只能為15或者18位

alter

table customers add

constraint

ck_carid check

(len

(c_carid)=15

orlen

(c_carid=18)

)//限定了輸入字元長度為15或者18

電子郵箱中(e-email)必須包含「@」符號

alter

table customers add

constraint

ck_email check

([c_e-mail]

like

'%@%'

)

unique 約束: 確保列中不輸入重複值來保證資料的完整性

建立unique

create

table

《表名》(..

..《列名》 資料型別 unique,.

..)

修改設定unique約束

alter

table

《表名》

addconstraint

《約束名》

unique

(字段)

//使用sp_help 《表名》檢視到約束名

sql 新增 修改 刪除 約束

1.向表中新增新的字段 alter table table name add column name varchar2 20 not null 2.刪除表中的乙個字段 alter table table name drop column column name 3.修改表中的乙個欄位名 alter ...

SQL 新增約束

sql 約束用於規定表中的資料規則。如果存在違反約束的資料行為,行為會被約束終止。約束可以在建立表時規定 通過 create table 語句 或者在表建立之後規定 通過 alter table 語句 建立表的時候新增約束 create table table name column name1 d...

建立與刪除SQL約束或字段約束

建立與刪除sql約束或字段約束 sql約束控制 1 禁止所有表約束的sql select alter table name nocheck constraint all fromwhere type u 2 刪除所有表資料的sql select truncate table name from sy...