sql 約束用於規定表中的資料規則。
如果存在違反約束的資料行為,行為會被約束終止。
約束可以在建立表時規定(通過 create table 語句),或者在表建立之後規定(通過 alter table 語句)。
create table table_name
(column_name1 data_type(size) constraint_name,
column_name2 data_type(size) constraint_name,
column_name3 data_type(size) constraint_name,
....
);
在 sql 中,我們有如下約束:
null 值代表遺漏的未知資料。預設地,表的列可以存放 null 值。
not null 約束強制列不接受 null 值。
not null 約束強制字段始終包含值。這意味著,如果不向字段新增值,就無法插入新記錄或者更新記錄。
下面的 sql 強制 「id」 列、 「lastname」 列以及 「firstname」 列不接受 null 值:
create table persons (
id int not null,
lastname varchar(255) not null,
firstname varchar(255) not null,
age int
);alter table persons modify age int not null;
alter table persons modify age int null;
unique 約束唯一標識資料庫表中的每條記錄。
unique 和 primary key 約束均為列或列集合提供了唯一性的保證。
primary key 約束擁有自動定義的 unique 約束。
請注意,每個表可以有多個 unique 約束,但是每個表只能有乙個 primary key 約束。
create table persons
(p_id int not null,
lastname varchar(255) not null,
firstname varchar(255),
address varchar(255),
city varchar(255),
unique (p_id)
)alter table persons add unique (p_id)
alter table persons add constraint uc_personid unique (p_id,lastname)
alter table persons drop index uc_personid
primary key 約束唯一標識資料庫表中的每條記錄。
主鍵必須包含唯一的值。
主鍵列不能包含 null 值。
每個表都應該有乙個主鍵,並且每個表只能有乙個主鍵。
create table persons
(p_id int not null,
lastname varchar(255) not null,
firstname varchar(255),
address varchar(255),
city varchar(255),
primary key (p_id)
)alter table persons add primary key (p_id)
alter table persons add constraint pk_personid primary key (p_id,lastname)
alter table persons drop primary key
乙個表中的foreign key指向另乙個表中的unique key(唯一約束的鍵)。
check 約束用於限制列中的值的範圍。
如果對單個列定義 check 約束,那麼該列只允許特定的值。
如果對乙個表定義 check 約束,那麼此約束會基於行中其他列的值在特定的列中對值進行限制。
default 約束用於向列中插入預設值。
如果沒有規定其他的值,那麼會將預設值新增到所有的新記錄。
isnull()、nvl()、ifnull() 和 coalesce() 函式
微軟的 isnull() 函式用於規定如何處理 null 值。
nvl()、ifnull() 和 coalesce() 函式也可以達到相同的結果。
在這裡,我們希望 null 值為 0。
oracle
oracle 沒有 isnull() 函式。不過,我們可以使用 nvl() 函式達到相同的結果
mysql
mysql 也擁有類似 isnull() 的函式。不過它的工作方式與微軟的 isnull() 函式有點不同。
在 mysql 中,我們可以使用 ifnull() 函式或者我們可以使用 coalesce() 函式
一知半解的人,多不謙虛;見多識廣有本領的人,一定謙虛。
HR經理必須掌握的五原則
今天在網上看到這樣一篇文章覺得很好,於是就轉了過來,其實這五個原則不單單是hr經理必須掌握的,我們要是掌握了這五個原則對我們的發展也是有好處的。工具一 招聘面試的star原則 招聘面試是hr經理的一項重要工作內容,每個成功的經理人都必須具備高超的招聘面試技巧,使合適的人在合適的崗位上,創造崗位高績效...
DevOps監控微服務的五原則
我們對微服務的需求可以歸納為乙個詞 速度。這種更快提供功能完善且可靠的軟體的需求,徹底改變了軟體開發模式。毫無疑問,這個改變對軟體管理,包括系統監控的方式,都產生了影響。在這篇文章裡,我們將重點關注放在有效地監控產品環境中的微服務所需做出的主要改變。我們將為這一新的軟體架構擬定 5 條指導性原則來調...
python中使用原始生態sql語句
使用原生sql的主要目的是解決一些很複雜的sql不能用orm的方法寫出的問題。django中幾種寫原生sql的方式 1.extra 結果集修改器,是嗎一種提供額外查詢引數的機制 python view plain copy book.objects.filter publisher name 清華大...