資料庫高階一 資料庫完整性

2021-10-19 14:51:33 字數 4937 閱讀 5334

域完整性

引用完整性

用來保證存放到資料庫中的資料是有效的,即資料的有效性和準確性

確保資料的完整性 = 在建立表時給表中新增約束

完整性的分類:

舉例:

create table student(

studentno int primary key auto_increment,

loginpwd varchar(20) not null default '123456',

studentname varchar(50) not null,

*** char(2) not null, gradeid int not null,

phone varchar(255) not null,

address varchar(255) default '學生宿舍',

borndate datetime, email varchar(50)

);

實體:即表中的一行(一條記錄)代表乙個實體(entity)

實體完整性的作用:標識每一行資料不重複。

約束型別:

一、

create table student( id int primary key, name varchar(50) );
二、

create table student( id int, name varchar(50), primary key(id) );
特點:資料不能重複

create table student( id int primary key, name varchar(50) unique );
sqlserver資料庫 (identity-標識列)

oracle資料庫(sequence-序列)

給主鍵新增自動增長的數值,列只能是整數型別

create table student( id int primary key auto_increment, name varchar(50) ); insert into student(name) values(『tom』);
域完整性的作用:限制此單元格的資料正確,不對照此列的其它單元格比較

域代表當前單元格

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

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

數值型別

型別大小

範圍(有符號)

範圍(無符號 )

用途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)

大整數值

int4 位元組

(-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 744073 709 551 615)

極大整數值

float

4 位元組

(-3.402 823 466 e+38,-1.175 494 351 e-38),0,(1.175 494 351 e-38,3.402823 466 351 e+38)

0,(1.175 494 351 e-38,3.402 823 466 e+38)

單精度浮點數值

double

8 位元組

(-1.797 693 134 862 315 7 e+308,-2.225 073 858 507 201 4 e-308),0,(2.225 073 858 507 201 4 e-308,1.797 693 134 862 315 7 e+308)

0,(2.225 073 858 507 201 4e-308,1.797 693 134 862 315 7 e+308)

雙精度浮點數值

日期型別:

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

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

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

型別大小(位元組)

範圍格式

用途date

31000-01-01/9999-12-31

yyyy-mm-dd

日期值time

3『-838:59:59』/『838:59:59』

hh:mm:ss

時間值或持續時間

year

11901/2155

yyyy

年份值datetime

81000-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

型別大小

用途char

0-255位元組

定長字串

varchar

0-65535 位元組

變長字串

tinyblob

0-255位元組

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

tinytext

0-255位元組

短文本字串

blob

0-65 535位元組

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

text

0-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。這些對應4種blob型別,有相同的

最大長度和儲存需求。

not null

create table student( 

id int primary key,

name varchar(50) not null,

*** varchar(10)

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

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);

外來鍵約束:foreign key

create table student(

id int primary key,

name varchar(50) not null,

*** varchar(10) default '男'

); create table score(

id int primary key,

score int,

sid int ,

constraint fk_score_sid foreign key(sid) references student(id) );

constraint 自定義外來鍵名稱 foreign key(外來鍵列名) references 主鍵表名(主鍵列名)

外來鍵列的資料型別一定要與主鍵的型別一致

第二種新增方式:

alter table score1 add constraint fk_stu_score foreign key(sid) references stu(id);

MySQL(一) 資料庫完整性約束

提供定義完整性約束條件的機制 提供完整性檢查方法 違約處理 在建立表時 create table 使用primary key定義。例 create table student sno char 9 primary key sname char 20 not null s char 2 sage sm...

資料庫完整性

完整性約束條件 實體完整性給出了主鍵的取值的最低約束條件 規則是 主鍵的各個屬性都不能為空。參照完整性給出了在關係之間建立正確的聯絡的約束條件 規則是 外來鍵或者取空值 此時要求外來鍵的各個屬性均為空值 或者等於被參照關係中的主鍵的某個值。使用者自定義完整性 關係數控應用系統中的關係往往還應該滿足一...

資料庫完整性

資料的完整性和安全性 資料庫的完整性和安全性是兩個既有聯絡又不盡相同的概念。資料的完整性是為了防止資料庫中存在不符合語義的資料,也就是防止資料庫中存在不正確的資料。資料的安全性是保護資料庫防止惡意破壞和非法訪問。完整性檢查和控制的防範物件是不合語義的 不正確的資料,防止它們進入資料庫。安全性控制的方...