第三章 sql 的約束

2022-02-15 21:28:38 字數 1833 閱讀 8737

1.0 約束分類

約束型別:

主鍵預設值

唯一外來鍵

非空關鍵字:

primary key

default

unique

foreign

not null

2.0 建立含約束的表

3.0 主鍵

約束英文:constraint

約束實際上就是表中資料的限制條件

主鍵是用於約束表中的一行,作為這一行的唯一識別符號,在一張表中通過主鍵就能準確定位到一行,主鍵不能有重複且不能為空

復合主鍵

constraint p_id primary

key (s_name,d_age)

4.0 預設值約束

當有 default 約束的列,插入資料為空時,將使用預設值

p_num int(10)default'10',

p_num 有預設約束,預設值為10

# 正常插入資料

insert

into department(dpt_name,people_num) values('

dpt1

',11);

#插入新的資料,people_num 為空,使用預設值

insert

into department(dpt_name) values('

dpt2

');

select + 表欄位名 + from +資料表名

表欄位名那個,如果想要獲得所有的字段或者不知道有哪些欄位的情況下用*代表所有字段。

比如select * from 獲取每條資訊全部欄位的值

select id , name from 只能獲取每條資訊的id欄位和name欄位的值

5.0 唯一約束 (unique)

當 insert 語句新插入的資料和已有資料重複的時候,如果有 unique約束,則 insert 失敗

比如:

insert

into employee values(01,'

tom',25,3000,110110,'

dpt1');

insert

into employee values(02,'

jack

',30,3500,110110,'

dpt2

');

6.0 外來鍵約束 (foreign key)

既能確保資料完整性,也能表現表之間的關係。乙個表可以有多個外來鍵,每個外來鍵必須(參考)另乙個表的主鍵,被外來鍵約束的列,取值必須在它參考的列中有對應值。

7.0 非空約束

非空約束 (not null),聽名字就能理解,被非空約束的列,在插入值時必須非空。

在mysql中違反非空約束,會報錯,比如以下語句:

#insert 成功 age 為空,因為沒有非空約束,表中顯示 null

insert into employee(id,name,salary,phone,in_dpt) values(03,'jim',3400,119119,'dpt2');

#報錯 salary 被非空約束,插入資料失敗

insert into employee(id,name,age,phone,in_dpt) values(04,'bob',23,123456,'dpt1');

primapy是主鍵的意思,表示定義的該列值在表中是唯一的意思,不可以有重複。

nsigned是無符號的意思,代表該欄位沒有正負。

auto_increment可以理解為自動遞增的意思,每增加一條記錄,值會自動加1。(例如在上面的例子中,id列每增加一條記錄,便會從100自增) 。

第三章 SQL的程式設計

use myschool go create table shengfu time datetime not null result nvarchar not null insert into shengfu time,result values 2005 05 09,勝 insert into s...

第三章 SQL語句的優化

3.1 優化sql語句的一般步驟 3.1.1 通過show status命令了解各種sql的執行效率 格式 mysql show session global status 其中 session 預設 表示當前連線,global表示自資料庫啟動至今 mysql show status mysql s...

第三章 堆疊

1.基礎知識 堆疊可以實現很多的應用,遞迴的問題轉化成非遞迴形式,在本質上也是堆疊的問題.它是一種 filo 操作的資料結構,一般也有兩種儲存方式 陣列跟鍊錶實現形式,這裡我給出了鍊錶形式的堆疊模板,裡面包括了基本的堆疊所有的操作,還有兩個比較著名的應用例子,時間倉促,精力比較有限,關於迷宮老鼠還沒...