資料的完整性=精確性+可靠性
資料喪失完整性體現在:資料可中存在不符合規定的資料或錯誤的資訊,例如:學號重複,身份證號重複,年齡為負數,薪水為負數,性別不存在
資料喪失完整性:是在設計表結構的時候造成的。
保證資料的完整性:在設計表結構的時候,新增約束。
約束的分類:
1.實體[行]完整性約束:保證行記錄的唯一
主鍵約束 primary key
自動增長列約束 identity(起點,步長)
唯一約束 unique
2.域[列,字段]完整性約束:保證列的資料型別,格式,取值範圍,長度正確
檢查約束
外來鍵約束
預設值約束
非空約束
3.引用完整性約束:建立在主外來鍵關係之上,保證表與表之間的資料完整性
作用:1.禁止在子表中,新增主表中不存在的記錄
2.禁止修改主表中,被子表引用的記錄
3.禁止刪除主表中,被子表引用的記錄
4.使用者自定義完整性約束:高階約束
觸發器儲存過程
規則1.主鍵約束 primary key
作用:新增了主鍵約束的列,行記錄具有唯一性
問題:乙個表中允許有幾個主鍵?
答案:乙個表中只允許存在1個主鍵
問題:選取某列作為主鍵列的原則?
答案:1.最少性:盡可能選擇單列,作為主鍵
2.穩定性:盡可能選取,更新比較少的列
當乙個表中,不存在,行記錄唯一的列,沒有符合作為主鍵列原則的列時?
答案:為該錶新增乙個標識列,作為主鍵,唯一的標識行記錄,沒有實際意義。
*****由多列組成的主鍵,稱為,組合 主鍵 此做法不推薦
2.唯一約束 unique
作用:新增了唯一約束的列,行記錄具有唯一性
使用場合:一般是非主鍵列
區別:唯一約束和主鍵約束的區別
唯一約束的列,行記錄允許空值,但只允許有1個空值
主鍵約束的列,行記錄不允許有空值
3.標識列約束 identity(起點,步長)
作用:新增了標識列約束的列,行記錄不需要賦值,會自動增長
使用場合:一般用在 整形的列上
*************************=
4.檢查約束 check
作用:約束當前列的取值範圍,格式,長度
例如:check(age>0 and age<200) 限制年齡為0-200
check(***='男' or ***='女') 限制性別
check(tel like '0716%' and len(tel)=11) 限制荊州**格式以0716開頭,長度為11個字元
check(tel like '186%' or tel like '159%')
5.預設值約束 default
作用:用於向列中,插入預設值,有預設值約束的列,可賦值,可不賦值
例如:default(18) 年齡預設為18
default('男')性別預設是 男
default('位址不詳') 位址預設 不詳
default(getdate()) 預設為當前時間
6.非空約束 not null
作用:約束當前列的值,不允許為空
注意:空格也算乙個字元,不是null
7.外來鍵約束 foreign key
作用:1.禁止在子表中,新增主表中不存在的記錄
2.禁止修改主表中,被子表引用的記錄
3.禁止刪除主表中,被子表引用的記錄
外來鍵所在的表是子表,此子表是相對於主表而言的。
問:乙個表中允許有幾個主鍵?幾個外來鍵?
1個主鍵,n個外來鍵
語法:子表中的外來鍵列 int foreign key references 主表名(主表中的主鍵)
注意:1.建立主外來鍵關係的列,列名可不同,但是資料型別和長度必須相同
2.被引用的列,必須是主鍵,而且,具有唯一性
經驗:1.如何辨別主表,子表
主表和子表都是相對的。
a.看錶的關係圖,鑰匙指向的是主表
b.邏輯判斷,先存在一定是主表
資料庫(1) 資料庫管理和表管理
一 資料庫管理 1 查詢所有資料庫 show databases 2 建立資料庫 create database name default character set utf8 指定預設字符集建立資料庫可以省略 3 檢視資料庫的預設字符集 show create database name 4 資料...
管理資料庫和表
第乙個字元必須是 unicode中定義的字母包括拉丁字母a z和a z,以及來自其他語言的字母字元 以及下劃線 符號或者數字符號 識別符號不能是所用rdbms的保留字。不允許嵌入空格或其他特殊字元。2.刪除資料庫 語法為 drop database 3.整型資料型別 tinyint 型 1個位元組 ...
管理資料庫與表
一 資料庫的建立與刪除 1.介紹 資料庫是用於儲存和操作諸如表,資料庫檢視,觸發器,儲存過程等資料的物件的集合。2.建立資料庫 3.顯示資料庫 show databases語句顯示mysql資料庫伺服器中的所有資料庫。其中 information schema,performance schema和...