最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

概述

約束是作用于表中字段上的規(guī)則,用于限制存儲(chǔ)在表中的數(shù)據(jù)。保證數(shù)據(jù)庫(kù)中數(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ù)庫(kù)而不是借用像Navicat等工具操作數(shù)據(jù)庫(kù)。

因?yàn)槲覀冎笠獙W(xué)習(xí)Java web的開發(fā),里面的JDBC需要用java語言操作數(shù)據(jù)庫(kù),這時(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ù)庫(kù)之約束簡(jiǎn)析的文章就介紹到這了,更多相關(guān)MySQL約束內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

永济市| 宜章县| 新宁县| 浮山县| 龙岩市| 肥乡县| 乾安县| 林州市| 公安县| 蓝山县| 台山市| 开封县| 遂溪县| 永新县| 浦北县| 宜春市| 德兴市| 惠东县| 东阳市| 二连浩特市| 富民县| 平果县| 安丘市| 松滋市| 康平县| 左权县| 四川省| 金华市| 奈曼旗| 左云县| 台江县| 武胜县| 万载县| 土默特右旗| 海淀区| 宜昌市| 成安县| 监利县| 曲水县| 溧阳市| 盐边县|