电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

mysql的約束及實例分析

瀏覽:5日期:2023-06-16 19:39:11
目錄表的約束空屬性默認(rèn)值列描述zerofill主鍵自增長唯一鍵外鍵總結(jié)表的約束

為什么要有約束?

我們在收集一些數(shù)據(jù)的時候會要求該數(shù)據(jù)必須存在

比如說像是國家在登記公民信息的時候身份證一欄是必須要填寫的不能為空

真正約束字段的是數(shù)據(jù)類型,但是數(shù)據(jù)類型約束很單一,需要有一些額外的約束,更好的保證數(shù)據(jù)的合 法性,從業(yè)務(wù)邏輯角度保證數(shù)據(jù)的正確性。比如有一個字段是email,要求是唯一的

表的約束很多,這里主要介紹如下幾個: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。

空屬性

數(shù)據(jù)庫默認(rèn)字段基本都是字段為空,但是實際開發(fā)時,盡可能保證字段不為空,因為數(shù)據(jù)為空沒辦法參與運(yùn)算

所以說對于一些屬性我們要設(shè)置為非空

語法

not null

實例

我們這里創(chuàng)建一個班級表 其中包含班級名和所在的教室

在外面正常的邏輯中 班級和教室都是不能為空的

如果班級名為空我們就不知道自己在哪個班如果教室為空我們就不知道自己在哪個教室

所以說我們在設(shè)計數(shù)據(jù)表的時候加上非空約束

默認(rèn)值

默認(rèn)值:某一種數(shù)據(jù)會經(jīng)常性的出現(xiàn)某個具體的值,可以在一開始就指定好,在需要真實數(shù)據(jù)的時候, 用戶可以選擇性的使用默認(rèn)值。

語法

default xxx

我們插入一個數(shù)據(jù)嘗試

我們這里只插入了值zhangsna但是age和sex都自動填寫了

有了default之后還需要設(shè)置非空嘛?

不需要 因為如果我們沒有填值的話 系統(tǒng)會給我們填上默認(rèn)值 所以說就不存在空值的情況了

列描述

列描述:comment,沒有實際含義,專門用來描述字段,會根據(jù)表創(chuàng)建語句保存,用來給程序員或DBA來進(jìn)行了解。

語法

comment ‘xxx'

此外我們可以通過查看創(chuàng)建語句來看到對于每個列的描述

實例

zerofill

剛開始學(xué)習(xí)數(shù)據(jù)庫時,很多人對數(shù)字類型后面的長度很迷茫

比如說在下圖中 int類型后面的11是什么意思呢?

整型不是4字節(jié)碼?這個10又代表什么呢?其實沒有zerofill這個屬性,括號內(nèi)的數(shù)字是毫無意義的

此時我們修改t8中age類型的屬性 在后面加上zerofill

此時我們發(fā)現(xiàn)age的18前面補(bǔ)上了三個0

也就是說zerofill的意義其實是看該類型有沒有達(dá)到指定的位數(shù) 如果沒有達(dá)到就在前面加上0填充

主鍵

主鍵:primary key用來唯一的約束該字段里面的數(shù)據(jù),不能重復(fù),不能為空,一張表中最多只能有一個主鍵;主鍵所在的列通常是整數(shù)類型。

語法

primary key

實例

我們創(chuàng)建一張表 id作為主鍵 name作為非空列

主鍵約束

主鍵中的值不能重復(fù) 一旦重復(fù)就會報錯 下面是示例

我們可以看到插入重復(fù)id時sql直接報錯了

刪除主鍵

語法

alter table 表名 drop primary key;

添加主鍵

語法

alter table 表名 add primary key(字段列表)

復(fù)合主鍵

在創(chuàng)建表的時候,在所有字段之后,使用primary key(主鍵字段列表)來創(chuàng)建主鍵,如果有多個字段 作為主鍵,可以使用復(fù)合主鍵

比如說在創(chuàng)建學(xué)生的課程表的時候?qū)W生id和課程號都是可以重復(fù)的 但是學(xué)生id和課程號的組合確是不能重復(fù)的 所以說我們要將他們設(shè)置為復(fù)合主鍵

語法

primary key(xxx , yyy)

自增長

auto_increment:當(dāng)對應(yīng)的字段,不給值,會自動的被系統(tǒng)觸發(fā),系統(tǒng)會從當(dāng)前字段中已經(jīng)有的最大值+1操作,得到一個新的不同的值。通常和主鍵搭配使用,作為邏輯主鍵。

自增長的特點:

任何一個字段要做自增長,前提是本身是一個索引(key一欄有值)自增長字段必須是整數(shù)一張表最多只能有一個自增長

語法:

auto_increment

下面是實例

我們開始插入名字 之后查看id的變化情況

我們發(fā)現(xiàn)id數(shù)據(jù)是從1開始依次往后遞增

那么如果我們現(xiàn)在插入一個id為1000的數(shù)據(jù)之后的id會如何變化呢?

我們可以發(fā)現(xiàn)后面的id從1001開始自增了

唯一鍵

在了解唯一鍵之前我們首先要明白一個概念

并不是因為我們選擇一個屬性成為了主鍵這個屬性才具有了唯一性 而是我們選擇了一個具有唯一性的屬性成為了主鍵

也就是說除了主鍵之間還有很多數(shù)據(jù)也可能具有唯一性 這也就是我們唯一鍵出現(xiàn)的原因

語法

unique

下面是實例

當(dāng)一個數(shù)據(jù)成為唯一鍵之后那么這個數(shù)據(jù)就不能重復(fù)了

外鍵

外鍵用于定義主表和從表之間的關(guān)系:外鍵約束主要定義在從表上,主表則必須是有主鍵約束或unique約束。

當(dāng)定義外鍵后,要求外鍵列數(shù)據(jù)必須在主表的主鍵列存在或為null。

我們先來看最后一句加粗的話 也就是說主表中必須有數(shù)據(jù)從表中才能插入數(shù)據(jù)

語法:

foreign key (class_id) references myclass(id)

下面是實例 我們先創(chuàng)建主表 之后再從表中創(chuàng)建外鍵約束

我們首先像從表中插入數(shù)據(jù)嘗試

我們可以發(fā)現(xiàn)主表中如果沒有插入數(shù)據(jù)從表中是不能插入的

而主表中有數(shù)據(jù) 從表中就可以插入數(shù)據(jù)了

而我們刪除數(shù)據(jù)的時候必須要先刪除從表中的數(shù)據(jù)才能刪除主表

這里總結(jié)下

外鍵是在從表中定義的從表添加數(shù)據(jù)必須主表先添加主表刪除數(shù)據(jù)必須從表先刪除

我們?nèi)绾卫斫馔怄I約束

首先這是一種約束 它肯定是為了防止我們做出錯誤或不符合邏輯的操作的

理論上,上面的例子,我們不創(chuàng)建外鍵約束,就正常建立學(xué)生表,以及班級表,該有的字段我們都有。

但是實際過程中由于可能會由于人為操作的失誤而造成一些錯誤 比如說一些數(shù)據(jù)只有學(xué)生表中有 而不存在于班級表中(這樣就不知道這個學(xué)生在哪個班了)

所以說我們添加外鍵約束是必須的 它的本質(zhì)其實就是將插入和刪除數(shù)據(jù)的合法性交給mysql去審核

總結(jié)

到此這篇關(guān)于mysql的約束及實例分析的文章就介紹到這了,更多相關(guān)mysql的約束內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 啤酒设备-小型啤酒设备-啤酒厂设备-济南中酿机械设备有限公司 | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 焊接烟尘净化器__焊烟除尘设备_打磨工作台_喷漆废气治理设备 -催化燃烧设备 _天津路博蓝天环保科技有限公司 | 暖气片十大品牌厂家_铜铝复合暖气片厂家_暖气片什么牌子好_欣鑫达散热器 | 刘秘书_你身边专业的工作范文写作小秘书| 精密模具-双色注塑模具加工-深圳铭洋宇通| 成都顶呱呱信息技术有限公司-贷款_个人贷款_银行贷款在线申请 - 成都贷款公司 | HDPE储罐_厂家-山东九州阿丽贝防腐设备 | 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 | 智能垃圾箱|垃圾房|垃圾分类亭|垃圾分类箱专业生产厂家定做-宿迁市传宇环保设备有限公司 | 吹田功率计-长创耐压测试仪-深圳市新朗普电子科技有限公司 | 郑州巴特熔体泵有限公司专业的熔体泵,熔体齿轮泵与换网器生产厂家 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | 交联度测试仪-湿漏电流测试仪-双85恒温恒湿试验箱-常州市科迈实验仪器有限公司 | 欧盟ce检测认证_reach检测报告_第三方检测中心-深圳市威腾检验技术有限公司 | 光谱仪_积分球_分布光度计_灯具检测生产厂家_杭州松朗光电【官网】 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | 镀锌角钢_槽钢_扁钢_圆钢_方矩管厂家_镀锌花纹板-海邦钢铁(天津)有限公司 | 钢衬玻璃厂家,钢衬玻璃管道 -山东东兴扬防腐设备有限公司 | 高压包-点火器-高压发生器-点火变压器-江苏天网 | 400电话_400电话申请_888元包年_400电话办理服务中心_400VIP网 | 直线模组_滚珠丝杆滑台_模组滑台厂家_万里疆科技 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 磁粉制动器|张力控制器|气胀轴|伺服纠偏控制器整套厂家--台灵机电官网 | 济南电缆桥架|山东桥架-济南航丰实业有限公司 | 沥青车辙成型机-车托式混凝土取芯机-混凝土塑料试模|鑫高仪器 | nalgene洗瓶,nalgene量筒,nalgene窄口瓶,nalgene放水口大瓶,浙江省nalgene代理-杭州雷琪实验器材有限公司 | 非标压力容器_碳钢储罐_不锈钢_搪玻璃反应釜厂家-山东首丰智能环保装备有限公司 | 电动垃圾车,垃圾清运车-江苏速利达机车有限公司 | 金现代信息产业股份有限公司--数字化解决方案供应商 | 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 安徽集装箱厂-合肥国彩钢结构板房工程有限公司 | 浙江栓钉_焊钉_剪力钉厂家批发_杭州八建五金制造有限公司 | 东莞办公家具厂家直销-美鑫【免费3D效果图】全国办公桌/会议桌定制 | 高压管道冲洗清洗机_液压剪叉式升降机平台厂家-林君机电 | 奥因-光触媒除甲醛公司-除甲醛加盟公司十大品牌 | 高压分散机(高压细胞破碎仪)百科-北京天恩瀚拓 | 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 河北中仪伟创试验仪器有限公司是专业生产沥青,土工,水泥,混凝土等试验仪器的厂家,咨询电话:13373070969 |