MySQL-5列屬性

MySQL中的列屬性

真正約束字段的是數(shù)據(jù)類型,但是數(shù)據(jù)類型的越是很單一,需要有一些額外的約束,更加保證數(shù)據(jù)的合法性

1.NULL

null / not null 約束是否為空

理論上來講任何數(shù)據(jù)都不應(yīng)該為NULL 空數(shù)據(jù)沒有意義也沒有辦法參與運(yùn)算

2.comment 列描述 、注釋

該屬性沒有實(shí)際含義,專門用來描述字段,會(huì)根據(jù)表創(chuàng)建語句保存

3.default,默認(rèn)值

insert into my_default (name) values('foo')
insert into my_default values ('foooooo',default);

4.主鍵 primary key?

一張表中只能有一個(gè)字段可以使用對(duì)應(yīng)的鍵,用來唯一的約束該字段里面的數(shù)據(jù),不能重復(fù),這種稱之為主鍵,一張表中只能有一個(gè)主鍵

增加主鍵?

SQL中有多種方式給表增加主鍵?

--1.創(chuàng)建表時(shí) 直接在字段后添加primary key關(guān)鍵字 ,設(shè)置關(guān)鍵字后其自動(dòng)not NULL;

create table 時(shí)設(shè)置關(guān)鍵字?primary key

缺點(diǎn) 只能使用一個(gè)字段作為主鍵

--2.在創(chuàng)建表時(shí),在所有字段之后,使用primary key(主鍵創(chuàng)建列表)來創(chuàng)建主鍵,若有多個(gè)字段作為主鍵,可以是復(fù)合主鍵

創(chuàng)建復(fù)合主鍵 primary key(字段列表)

--3.當(dāng)表已經(jīng)創(chuàng)建好之后,額外追加主鍵可以通過修改表字段屬性,或者直接追加

直接追加 alter table 表名 add primary key(字段列表);

追加主鍵

追加主鍵前提是表中字段對(duì)應(yīng)的數(shù)據(jù)本身是獨(dú)立的(不重復(fù))

修改表 alter table 表名 modify 字段名 字段類型 primary key;

--4.主鍵約束

主鍵對(duì)應(yīng)的字段中的數(shù)據(jù)不允許重復(fù),一旦重復(fù),數(shù)據(jù)操作失敗(增、改)

單主鍵 和 復(fù)合主鍵的沖突

--5.更新和刪除主鍵?

主鍵必須先刪除,才能增加?

alter table 表名 drop primary key

alter table king_class drop primary key;

--6.主鍵分類

在實(shí)際創(chuàng)建表的過程中,很少使用真實(shí)業(yè)務(wù)數(shù)據(jù)作為主鍵字段,大部分時(shí)候時(shí)候使用邏輯性字段作為主鍵,字段沒有業(yè)務(wù)含義,值是什么沒有關(guān)系,將這種字段成為邏輯主鍵

id為邏輯主鍵 和業(yè)務(wù)無關(guān),且自增長(zhǎng)

5.自動(dòng)遞增 auto_increment

?當(dāng)對(duì)應(yīng)的字段不給值或者給默認(rèn)值或NULL時(shí) 會(huì)自動(dòng)被系統(tǒng)觸發(fā),系統(tǒng)會(huì)從當(dāng)前字段中已有的最大值再進(jìn)行+1操作,得到一個(gè)新的不同的字段,so 常和 primary key搭配?

而自增漲字段已經(jīng)上升進(jìn)表結(jié)構(gòu),不會(huì)隨著數(shù)據(jù)的刪除而進(jìn)行改變

--1.任何一個(gè)字段要做子增長(zhǎng)必須前提是本身是一個(gè)索引(key 一欄有值)

--2.自增長(zhǎng)字段必須是整形數(shù)字類型

--3.一張表最多只有一個(gè)子增長(zhǎng)字段

auto_increment 屬性的使用

--4.觸發(fā)自增長(zhǎng)

不給值、NULL、Defualt

--5.修改自增長(zhǎng)

子增長(zhǎng)如果涉及到字段改變,需先刪除自增長(zhǎng),然后增加,一張表只能有一個(gè)自增長(zhǎng)

修改當(dāng)前自增長(zhǎng)已經(jīng)存在的值,修改只能比當(dāng)前已有的子增長(zhǎng)的最大值大,不能小于當(dāng)前該值,否則不生效

alter table 表名 auto_increment = 值;

--6.刪除表字段時(shí)自增長(zhǎng)導(dǎo)致的問題

當(dāng)刪除表內(nèi)字段后,自增長(zhǎng)不會(huì)為之發(fā)生改變,比較極端的例子為,若將表內(nèi)字段清空,自增長(zhǎng)不改變

刪除字段后 自增長(zhǎng)不隨之改變


--7.刪除自增長(zhǎng)

自增長(zhǎng)是字段的一個(gè)屬性 通過modify 進(jìn)行修改,保證字段沒有auto_increment 即可

但是注意 有主鍵時(shí),不要重復(fù)添加主鍵

6.唯一鍵

一張表中需要很多字段有唯一性,數(shù)據(jù)不能重復(fù),但是一張表中只能有一個(gè)主鍵:唯一鍵(unique key)就可以解決表中有多個(gè)字段需要唯一性約束的問題

唯一鍵 本質(zhì)本質(zhì)與主鍵差不多 :唯一鍵默認(rèn)的允許自動(dòng)為空 而且可以多個(gè)為空,空字段不參與唯一性比較

--1.在創(chuàng)建表時(shí)字段后增加關(guān)鍵字 unique / unique key?

創(chuàng)建表時(shí)直接添加關(guān)鍵字unique key

--2.使用unique key(字段列表)增加唯一鍵

與添加primary key類似

添加unique key 時(shí)需要注意 not null 否則unique 會(huì)添加失敗

--3.追加唯一鍵

alter table 表名 add unique key (字段列表);

--4.唯一鍵約束

若唯一鍵也不允許為空,與主鍵的約束作用是一致的

唯一鍵與主鍵本質(zhì)相同,唯一的區(qū)別就是唯一鍵默認(rèn)允許為null 而且是多個(gè)為null

--5.更新 & 刪除 unique key?

alter table 表名 drop index 索引名

查看索引名 show create table 表名 發(fā)現(xiàn)唯一鍵默認(rèn)字段名為索引名

alter table 表名 drop index 索引名

7.索引 (幾乎所有的索引都是建立在字段之上)

系統(tǒng)根據(jù)某種算法,將已有的數(shù)據(jù)(未來可能新增的數(shù)據(jù)),單獨(dú)創(chuàng)建一個(gè)文件,文件能夠?qū)崿F(xiàn)快速的匹配數(shù)據(jù),并且能夠快速找到對(duì)應(yīng)表中對(duì)應(yīng)的記錄

索引的意義在于 提升查詢數(shù)據(jù)是效率,約束數(shù)據(jù)的有效性

索引本身會(huì)產(chǎn)生索引文件,非常消耗磁盤空間,有時(shí)候甚至可能比數(shù)據(jù)文件還要大

若某個(gè)字段需要作為查詢的條件經(jīng)常使用,那么可以使用索引(一定會(huì)想辦法增加)

若某個(gè)字段需要進(jìn)行數(shù)據(jù)的有效約束,也可能使用索引(primary key or unique key)


MySQL中提供了多種索引

1.primary key

2.unique key

3.全文索引 fulltext index 針對(duì)文章內(nèi)部的關(guān)鍵字進(jìn)行索引 最大的問題 在于如何確定關(guān)鍵字?

4.普通索引 index

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 回顧 字段類型(列類型):數(shù)值型,時(shí)間日期型和字符串類型 數(shù)值型:整型和小數(shù)型(浮點(diǎn)型和定點(diǎn)型) 時(shí)間日期型:da...
    翊溪閱讀 1,065評(píng)論 0 0
  • 列屬性:約束,真正約束字段的是數(shù)據(jù)類型,但是數(shù)據(jù)的類型的約束很單一,需要有一些額外的約束,來更加保證數(shù)據(jù)的合法性。...
    陳智濤閱讀 517評(píng)論 0 0
  • 之前的文章一直在規(guī)避索引的建立去優(yōu)化數(shù)據(jù)庫,不是不想講,而是這個(gè)太重要,必須抽出來講。今天我們就來研究下數(shù)據(jù)庫索引...
    JackFrost_fuzhu閱讀 4,824評(píng)論 0 70
  • 列屬性:真正約束字段的是數(shù)據(jù)類型,但是數(shù)據(jù)類型的約束很單一,需要有一些額外的約束,來更加保證數(shù)據(jù)的合法性。列屬性有...
    pomelo_西閱讀 1,329評(píng)論 1 1
  • 蛛絲橫亙 扯拉烏漆漆的雕花檐 山風(fēng)嘯過,霧氣深重陰霾一片 那煙熏的火膛映著的 是溝壑縱橫的臉 你是大山的子民 循著...
    一舟洲閱讀 282評(píng)論 0 4

友情鏈接更多精彩內(nèi)容