域完整性
引用完整性
用來保證存放到資料庫中的資料是有效的,即資料的有效性和準確性
確保資料的完整性 = 在建立表時給表中新增約束
完整性的分類:
舉例:
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...
資料庫完整性
完整性約束條件 實體完整性給出了主鍵的取值的最低約束條件 規則是 主鍵的各個屬性都不能為空。參照完整性給出了在關係之間建立正確的聯絡的約束條件 規則是 外來鍵或者取空值 此時要求外來鍵的各個屬性均為空值 或者等於被參照關係中的主鍵的某個值。使用者自定義完整性 關係數控應用系統中的關係往往還應該滿足一...
資料庫完整性
資料的完整性和安全性 資料庫的完整性和安全性是兩個既有聯絡又不盡相同的概念。資料的完整性是為了防止資料庫中存在不符合語義的資料,也就是防止資料庫中存在不正確的資料。資料的安全性是保護資料庫防止惡意破壞和非法訪問。完整性檢查和控制的防範物件是不合語義的 不正確的資料,防止它們進入資料庫。安全性控制的方...