久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL數據庫中數據約束的示例分析

132次閱讀
沒有評論

共計 4294 個字符,預計需要花費 11 分鐘才能閱讀完成。

這篇文章主要介紹了 MySQL 數據庫中數據約束的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

為了防止不符合規范的數據進入數據庫,在用戶對數據進行插入、修改、刪除等操作時,DBMS 自動按照一定的約束條件對數據進行監測,使不符合規范的數據不能進入數據庫,以確保數據庫中存儲的數據正確、有效、相容。

# 數據約束

# 五種完整性約束:#NOT NULL :非空約束,指定某列不能為空;#UNIQUE :  唯一約束,指定某列或者幾列組合不能重復
#PRIMARY KEY :主鍵,指定該列的值可以唯一地標識該列記錄
#FOREIGN KEY :外鍵,指定該行記錄從屬于主表中的一條記錄,主要用于參照完整性
#CHECK :檢查,指定一個布爾表達式,用于指定對應的值必須滿足該表達式(mysql 不支持 check 約束)#--------------------------------NOT NULL  非空約束  ---------------------------
create table test4
 # 建立非空約束
id int not null,
name varchar(55) default  ABCD  not null,
#默認值就是 null
age int null
#取消非空約束
 alter table test4
 modify name varchar(55) default  ABCD  not null,
#增加非空約束
 alter table test4
 modify age int not null;
#--------------------------------UNIQUE :  唯一約束 --------------------------------
#列級約束語法建立約束
 create table test_unique
 (
 # 建立行級唯一約束
 id int not null unique,
 age int
 );
 # 表級約束語法格式
 create table unique_test3
 (
test6_id int not null,
test6_name varchar(255),
test6_pass varchar(255),
#使用表級約束語法建立唯一約束, 指定 test6_id 和 test6_name 兩列組合不能重復
constraint test6_unique unique(test6_id,test6_name),
#使用表級約束語法建立唯一約束, 約束名為 test6_unique_2,test6_pass 不能重復
constraint test6_unique_2 unique(test6_pass)
 );
 #add 關鍵字增加唯一約束
 alter table test4
 add unique(id,name,age);
 #modify 關鍵字刪除或者增加唯一約束
 alter table test4
 modify age varchar(255) not null;
 alter table test4
 modify age varchar(255) not null unique;
 # 對大部分數據庫而言,刪除約束使用: alter table  表名  drop constraint  約束名
 # 但是 Mysql 不采取此方式,而是: alter table  表名  drop index  約束名
 #--------------------------------PRIMARY KEY :  主鍵約束 --------------------------------
 # 主鍵約束相當于非空約束和唯一約束。 # 每個表只允許擁有一個主鍵,但是這個主鍵可以由多個數據列組成,這些列組合不能重復
 # 標準 SQL 允許給主鍵自行命名,但是對于 Mysql 來說自己的名字沒有任何作用,總是默認名為 PRIMARY
 create table primary_test
 (
#使用列級語法建立主鍵約束
test_id int primary key,
test_name varchar(255)
 );
 # 使用表級語法建立主鍵約束
 create table primary_test2
 (
test_id int not null,
test_name varchar(255),
test_pass varchar(255),
#指定主鍵約束名為 test2_pk,對大部分數據庫有效,但是對 mysql 無效,此主鍵約束名仍為 PRIMARY
constraint test2_pk primary key (test_id)
 );
 # 以多列組合創立主鍵
 create table primary_test3
 (
test_id int,
test_name varchar(255),
primary key(test_id,test_name)
 );
 # 使用列級約束語法
 alter table primary_test3
 modify test_id int primary key();
 # 使用表級約束語法
 alter table primary_test3
 add primary key(test_id,test_name);
 # 刪除主鍵約束:alter table  表名  drop primary key;
 # 主鍵列自增長特性:如果某個數據列的類型是整型,而且該列作為主鍵列,則可指定該列具有自增長功能
 #mysql 使用 auto_increment 來設置自增長,向該表插入記錄時可不為該列指定值,由系統生成
 create table primary_test3
 (
// 建立主鍵約束、設置自增長
test_id int auto_increment primary key,
test_name varchar(255)
 );
 # 外鍵約束  FOREIGN KEY
 #Mysql 中只有表級語法建立的外鍵約束才可以生效
 # 為保證參照主表的存在,先建立主表
 create table teacher_tb
 (
t_id int auto_increment,
t_name varchar(255),
primary key(t_id)
 );
 create table student_tb
 (
s_id int auto_increment primary key,
s_name varchar(255) not null,
t_java int,
foreign key(t_java) references teacher_tb(t_id)
 );
#如果使用表級約束語法,則需要使用 foreign key 指定本表的外鍵列,如果創建外鍵約束時沒有指定約束名,#則 mysql 會為該外鍵約束命名為 table_name_ibfk_n, 其中 table_name 是從表的表名,n 是從 1 開始的整數
 create table teacher_tb2
 (
t_id int auto_increment,
t_name varchar(255),
primary key(t_id)
 );
 create table student_tb2
 (
s_id int auto_increment primary key,
s_name varchar(255) not null,
t_java int,
constraint student_teacher_fk foreign key(t_java) references teacher_tb2(t_id)
 );
 # 建立多列組合外鍵約束
 create table teacher_tb5
 (t_name varchar(255),
t_pass varchar(255),
primary key(t_name,t_pass)
 );
 create table student_tb5
 (
s_id int auto_increment primary key,
s_name varchar(255) not null,
t_java_pass varchar(255),
t_java_name varchar(255),
foreign key(t_java_name,t_java_pass) 
 references teacher_tb5(t_name,t_pass)
 );
 # 刪除外鍵約束
 alter table student_tb2
 drop foreign key student_teacher_fk;
 # 增加外鍵約束
 alter table student_tb2
 add foreign key(t_java) references teacher_tb2(t_id);
 # 外鍵約束參照自身,自約束
 create table foreign_test9
 (
foreign_id int auto_increment primary key,
foreign_name varchar(255),
refer_id int,
foreign key(refer_id) references foreign_test9(foreign_id)
 );
 # 定義當刪除主表記錄時,從表記錄也隨之刪除
 #on delete cascade  把參照該主表記錄的從表記錄全部級聯刪除
 #on delete set null  把參照該主表記錄的從表記錄從表設為 null e
 create table teacher_tb8
 (
t_id int auto_increment,
t_name varchar(255),
primary key(t_id)
 );
 create table student_tb8
 (
s_id int auto_increment primary key,
s_name varchar(255) not null,
t_java int,
constraint student_teacher_fk foreign key(t_java) references teacher_tb8(t_id) on delete cascade
 );

感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“MySQL 數據庫中數據約束的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-28發表,共計4294字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 田林县| 揭西县| 阿坝| 洞口县| 四川省| 高青县| 巢湖市| 响水县| 磴口县| 盈江县| 苍溪县| 昌邑市| 社会| 安西县| 繁昌县| 玉溪市| 福鼎市| 城步| 上林县| 额敏县| 巴彦淖尔市| 临漳县| 鄂州市| 日土县| 丹凤县| 西畴县| 桂林市| 迭部县| 额济纳旗| 民县| 方城县| 平远县| 略阳县| 延长县| 南川市| 新乡县| 沂水县| 辽阳市| 拉萨市| 姜堰市| 聂拉木县|