資料庫完整性三大約束 域完整性約束

2021-09-26 11:02:51 字數 3356 閱讀 9408

1.2 域完整性約束

域完整性約束的作用:限制此單元格的資料正確,不對其它單元格起作用,域代表當前單元格

域完整性約束:資料型別、非空約束(not null)、預設值約束(default)

check約束(mysql不支援)check(***='男'or ***='女')

1.2.1 資料型別

數值型別

型別大小

範圍(有符號)

範圍(無符號)

用途tinyint

1 位元組

(-128,127)

(0,255)

小整數值

smallint

2 位元組

(-32 768,32 767)

(0,65 535)

大整數值

mediumint

3 位元組

(-8 388 608,8 388 607)

(0,16 777 215)

大整數值

int或integer4 位元組

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整數值

bigint

8 位元組

(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

極大整數值

float

4 位元組

檢視幫助文件

檢視幫助文件

單精度浮點數值

double

8 位元組

檢視幫助文件

檢視幫助文件

雙精度浮點數值

double(m,d)8個位元組,m表示長度,d表示小數字數

同上,受m和d的約束 duble(5,2) -999.99-999.99

同上,受m和d的約束

雙精度浮點數值

decimal(m,d)對decimal(m,d) ,如果m>d,為m+2否則為d+2

依賴於m和d的值,m最大值為65

依賴於m和d的值,m最大值為65

小數值日期型別:

表示時間值的日期和時間型別為datetime、date、timestamp、time和year。

每個時間型別有乙個有效值範圍和乙個"零"值,當指定不合法的mysql不能表示的值時使用"零"值。

timestamp型別有專有的自動更新特性

型別大小(位元組)

範圍格式

用途date3

1000-01-01/9999-12-31

yyyy-mm-dd

日期值time

3'-838:59:59'/'838:59:59'

hh:mm:ss

時間值或持續時間

year

11901/2155

yyyy

年份值datetime8

1000-01-01 00:00:00/9999-12-31 23:59:59

yyyy-mm-dd hh:mm:ss

混合日期和時間值

timestamp

41970-01-01 00:00:00/2038 結束時間是第2147483647秒,北京時間2038-1-19 11:14:07,格林尼治時間 2023年1月19日 凌晨 03:14:07

yyyymmdd hhmmss

混合日期和時間值,時間戳

字串型別:

字串型別指char、varchar、binary、varbinary、blob、text、enum和set

型別大小

用途char0-255字元

定長字串 char(10) 10個字元

varchar0-65535 位元組

變長字串 varchar(10) 10個字元

tinyblob

0-255位元組

不超過 255 個字元的二進位制字串

tinytext

0-255位元組

短文本字串

blob(binary large object)

0-65 535位元組

二進位制形式的長文字資料

text0-65 535位元組

長文字資料

mediumblob

0-16 777 215位元組

二進位制形式的中等長度文字資料

mediumtext

0-16 777 215位元組

中等長度文字資料

longblob

0-4 294 967 295位元組

二進位制形式的極大文字資料

longtext

0-4 294 967 295位元組

極大文字資料

char和varchar型別類似,但它們儲存和檢索的方式不同。它們的最大長度和是否尾部空格被保留等方面也不同。在儲存或檢索過程中不進行大小寫轉換。

binary和varbinary類類似於char和varchar,不同的是它們包含二進位制字串而不要非二進位制字串。也就是說,它們包含位元組字串而不是字元字串。這說明它們沒有字符集,並且排序和比較基於列值位元組的數值值。

blob是乙個二進位製大物件,可以容納可變數量的資料。有4種blob型別:tinyblob、blob、mediumblob和longblob。它們只是可容納值的最大長度不同。

有4種text型別:tinytext、text、mediumtext和longtext。

1.2.2 非空約束

not null

create table student(

id int primary key,

name varchar(50) not null,

*** varchar(10)

);insert into student values(1,』tom』,null);

1.2.3 預設值約束

default

create table student(

id int primary key,

name varchar(50) not null,

*** varchar(10) default '男'

);insert intostudent1 values(1,'tom','女');

insert intostudent1 values(2,'jerry',default);

MySQL資料完整性(實體完整性 域完整性)

資料完整性 為保證插入到資料庫中的資料是正確的,防止使用者輸入錯誤的資料 分為實體完整性 域完整性 參照完整性 下節再說 1 實體完整性 實體指的是表中的一行,一行記錄對應乙個實體 通過主鍵實現 主鍵 關鍵字 primary key 特點 不能為null,並且唯一。邏輯主鍵 推薦 例如id,不代表實...

資料庫 完整性約束

問題描述 現有乙個商店的資料庫 shopping 記錄客戶及其購物情況,由以下四個關係組成 a 客戶表customer 儲存客戶資訊,包括客戶號customerid 客戶姓名cname 位址address 電子郵件email 性別gender 身份證號cardid 號碼telcode。b 商品表go...

完整性約束

create table student tb id int notnull 非空約束 資料不允許為空 name varchar 255 null 顯式指定允許為空 新增非空約束 alter table 表名 modify column 屬性名 屬性型別 not null alter table s...