亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL數(shù)據(jù)庫之約束簡(jiǎn)析

 更新時(shí)間:2023年09月06日 08:45:46   作者:CodeRanger  
這篇文章主要介紹了MySQL數(shù)據(jù)庫之約束簡(jiǎn)析,約束是作用于表中字段上的規(guī)則,用于限制存儲(chǔ)在表中的數(shù)據(jù),保證數(shù)據(jù)庫中數(shù)據(jù)的正確、有效性和完整性,需要的朋友可以參考下

概述

約束是作用于表中字段上的規(guī)則,用于限制存儲(chǔ)在表中的數(shù)據(jù)。保證數(shù)據(jù)庫中數(shù)據(jù)的正確、有效性和完整性。

分類:

常見約束操作

現(xiàn)在我們有一個(gè)建表需求,里面包含一些約束。

create table user(
    id int primary key auto_increment comment '主鍵',
    name varchar(10) not null unique comment '姓名',
    age int check ( age >0 && age <= 110 ) comment '年齡',
    status char(1) default '1' comment '狀態(tài)',
    gender char(1) comment '性別'
) comment '用戶表';

注意,check語句只有MySQL18以上的版本才有。新的數(shù)據(jù)表建立完成,我們現(xiàn)在該輸入數(shù)據(jù)了。

這里要說的是我們之后還是使用命令語句操作數(shù)據(jù)庫而不是借用像Navicat等工具操作數(shù)據(jù)庫。

因?yàn)槲覀冎笠獙W(xué)習(xí)Java web的開發(fā),里面的JDBC需要用java語言操作數(shù)據(jù)庫,這時(shí)你就要輸入sql命令了。

--還記得怎么插入數(shù)據(jù)嗎
insert into user(name,age,status,gender) values ('Tom1',19,'1','男'),('Tom2',25,'0','男');

這時(shí)查看我的表,數(shù)據(jù)已經(jīng)導(dǎo)入了,這時(shí)我們看id的變化,我們并沒有輸入id相關(guān)數(shù)據(jù),但是它自動(dòng)給我們按照輸入順序排好序了,而且從1開始,這就是我們?cè)O(shè)置的約束語句語句起作用了。

這里我們口頭測(cè)試一下其他的約束語句:

1,如果輸入相同的數(shù)據(jù),會(huì)報(bào)錯(cuò)。

2,輸入不符合規(guī)定年齡的數(shù)據(jù)會(huì)報(bào)錯(cuò)。

3,雖然數(shù)據(jù)沒有成功寫入,但當(dāng)你寫進(jìn)去下一個(gè)合規(guī)數(shù)據(jù)時(shí),id會(huì)變成4,這是因?yàn)檩斎胧〉到y(tǒng)依然申請(qǐng)了一個(gè)id值。

外鍵約束

概念

外鍵讓兩個(gè)表的數(shù)據(jù)建立聯(lián)系,從而保證數(shù)據(jù)的一致性和完整性。

案例

假如員工表的其中一列數(shù)據(jù)是部門id,可知一列數(shù)據(jù)只存儲(chǔ)的id;另一張部門表有兩列數(shù)據(jù)是id,和部門名稱,那么我們邏輯上把部門id和id聯(lián)系起來,并把部門的表稱為父表,而員工表為子表。

操作

建立上述兩個(gè)表并插入數(shù)據(jù):

create table dept(
    id int auto_increment comment 'ID ' primary key,
    name varchar(50) not null comment '部門名稱'
)comment '部門表';
INSERT IMTO dept (id,name) VALOES (1,'研發(fā)部'),(2,'市場(chǎng)部'),(3,'財(cái)務(wù)部'),(4,'銷售部'),(5,'總經(jīng)辦');
create table emp (
    id int auto_increment comment 'ID' primary key,
    name varchar(50) not null comment '姓名',
    age int comment '年齡',
    job varchar(20) comment '職位',
    salary int comment '薪資',
    entrydate date comment '入職時(shí)間',
    managerid int comment '直屬領(lǐng)導(dǎo)ID',
    dept_id int comment '部門ID'
)comment '員工表';
INSERT INTO emp (id,name,age,job,salary,entrydate,managerid,dept_id) VALUES
(1,'金庸',66,'總裁',20000,'2000-01-01',null,5),(2,'張無忌',20,'項(xiàng)目經(jīng)理',12500,
'2005-12-05',1,1);

廢了老大勁還是建完表了?,F(xiàn)在我們?cè)O(shè)置外鍵,將這兩個(gè)表建立數(shù)據(jù)連接。

--語法:
ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY (外鍵字段名) REFERENCES 主表 (主表列名);

我們?cè)趺创_定兩個(gè)表的數(shù)據(jù)已經(jīng)相連了?我們?cè)囋噭h除附表里第一行數(shù)據(jù),結(jié)果報(bào)錯(cuò)了:

這就表面連接成功了。

到此這篇關(guān)于MySQL數(shù)據(jù)庫之約束簡(jiǎn)析的文章就介紹到這了,更多相關(guān)MySQL約束內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論