欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

概述

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

分類:

常見約束操作

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

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ù)庫。

因為我們之后要學習Java web的開發(fā),里面的JDBC需要用java語言操作數(shù)據(jù)庫,這時你就要輸入sql命令了。

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

這時查看我的表,數(shù)據(jù)已經導入了,這時我們看id的變化,我們并沒有輸入id相關數(shù)據(jù),但是它自動給我們按照輸入順序排好序了,而且從1開始,這就是我們設置的約束語句語句起作用了。

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

1,如果輸入相同的數(shù)據(jù),會報錯。

2,輸入不符合規(guī)定年齡的數(shù)據(jù)會報錯。

3,雖然數(shù)據(jù)沒有成功寫入,但當你寫進去下一個合規(guī)數(shù)據(jù)時,id會變成4,這是因為輸入失敗但系統(tǒng)依然申請了一個id值。

外鍵約束

概念

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

案例

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

操作

建立上述兩個表并插入數(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,'市場部'),(3,'財務部'),(4,'銷售部'),(5,'總經辦');
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 '入職時間',
    managerid int comment '直屬領導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,'項目經理',12500,
'2005-12-05',1,1);

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

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

我們怎么確定兩個表的數(shù)據(jù)已經相連了?我們試試刪除附表里第一行數(shù)據(jù),結果報錯了:

這就表面連接成功了。

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

相關文章

最新評論