數(shù)據(jù)庫列屬性

列屬性:真正約束字段的是數(shù)據(jù)類型袋狞,但是數(shù)據(jù)類型的約束很單一,需要有一些額外的約束乒疏,來更加保證數(shù)據(jù)的合法性蓖议。
列屬性有很多:NULL/NOT NULL, default, Primary key, unique key, auto_increment, comment

空屬性

兩個(gè)值:NULL(默認(rèn)的)和NOT NULL(不為空)
實(shí)際開發(fā)時(shí),盡可能的要保證所有的數(shù)據(jù)不應(yīng)該為空蛮艰,空數(shù)據(jù)沒有意義腋腮,空數(shù)據(jù)沒有辦法參與運(yùn)算。
例:

create table my_class(
name varchar(20) not null, 
room varchar(20) null  -- 允許為空壤蚜,不寫默認(rèn)
)charset utf8;

主鍵

Primary key即寡,一張表只能有一個(gè)字段可以使用對應(yīng)的鍵,用來唯一的約束該字段里面的數(shù)據(jù)袜刷,不能重復(fù)

1.增加主鍵
  • 方案1:在創(chuàng)建表的時(shí)候聪富,直接在字段之后跟primary key關(guān)鍵字(主鍵本身不允許為空)
    優(yōu)點(diǎn):非常直接;缺點(diǎn):只能使用一個(gè)字段作為主鍵著蟹。
  • 方案2:在創(chuàng)建表的時(shí)候墩蔓,在所有字段之后梢莽,使用primary key(主鍵字段列表)來創(chuàng)建主鍵(如果多個(gè)字段作為主鍵,可以是復(fù)合主鍵)奸披。
--復(fù)合主鍵
create table my_pri(
number char(10) comment '學(xué)號:itcast + 0000'昏名,
course char(10) comment '課程編號',
score tinyint unsigned default 60 comment '成績'
--添加主鍵限制:學(xué)號和課程應(yīng)該是對應(yīng)的,具有唯一性
primary key(number,course)
)charset utf8;
  • 方案3:當(dāng)表已經(jīng)創(chuàng)建好之后阵面,再次額外追加主鍵轻局,可以修改表字段屬性,也可以直接追加样刷。
    alter table 表名 modify 字段名 類型 屬性
    alter table 表名 add primary key(字段列表);
    前提:作為主鍵仑扑,表中字段對應(yīng)的數(shù)據(jù)本身是獨(dú)立的(不重復(fù))
2.主鍵約束

主鍵對應(yīng)的字段中的數(shù)據(jù)不允許重復(fù),一旦重復(fù)置鼻,數(shù)據(jù)操作失敺虮凇(增和改)。

3.主鍵刪除

alter table 表名 drop primary key;

默認(rèn)值

默認(rèn)值:某一種數(shù)據(jù)會(huì)經(jīng)常性的出現(xiàn)某個(gè)具體的值沃疮,可以在一開始就指定好盒让,在需要真實(shí)數(shù)據(jù)的時(shí)候,用戶可以選擇性的使用默認(rèn)值司蔬。
默認(rèn)關(guān)鍵字:default

create table my_default(
name varchar(20) not null,
age tinyint unsigned default 0,
gender enum('男', '女', '保密') default '男'
)charset utf8;

默認(rèn)值生效:在數(shù)據(jù)進(jìn)行插入的時(shí)候邑茄,不給該字段賦值。
想要使用默認(rèn)值俊啼,可以不一定去指定列表肺缕,故意不使用字段列表,可以使用default關(guān)鍵字代替值授帕。

列描述

列描述:comment同木,描述,沒有實(shí)際含義:是專門用來描述字段跛十,會(huì)根據(jù)表創(chuàng)建語句保存彤路,用來給程序員(數(shù)據(jù)庫管理員)來進(jìn)行了解的。

create table my_teacher(
name varchar(20) not null comment ' 姓名',
money decimal(10, 2) not null comment '工資'
)charset utf8;

自增長

auto_increment
自增長通常和主鍵搭配
特點(diǎn):

  • 任何一個(gè)字段要做自增長必須前提是本身是一個(gè)索引(key一欄有值)
  • 自增長字段必須是數(shù)字(整型)
  • 一張表最多只能由一個(gè)自增長
1.創(chuàng)建自增長
create table my_autoincrement(
id int primary key auto_increment comment '邏輯主鍵自增長',
name varchar(10) not null comment '姓名'
)charset utf8;
2.自增長的使用

當(dāng)自增長被給定的值為NULL或者默認(rèn)值的時(shí)候芥映,就會(huì)觸發(fā)自動(dòng)增長洲尊。
自增長第一個(gè)元素默認(rèn)是1,每次都是自增1奈偏。
自增長如果對應(yīng)的字段輸入了值坞嘀,那么自增長失效,但是下一次還是能夠正確的自增長(從最大值+1)

3.修改自增長

自增長如果是涉及到字段改變惊来,必須先刪除丽涩,后增加(一張表只能有一個(gè)自增長)
修改當(dāng)前自增長已經(jīng)存在的值:修改只能比當(dāng)前已有的自增的最大值大,不能胁靡稀(小不生效)
alter table 表名 auto_increment = 值;(表選項(xiàng)直接這么改)
查看自增長變量語句:
show variable like 'auto_increment%';
還可以修改自增長的初始值矢渊,以及步長(但沒什么意義)

4.刪除自增長

自增長是字段的一個(gè)屬性检眯,可以通過modify來進(jìn)行修改(保證字段沒有auto_increment即可)
alter table 表名 modify 字段 類型;

唯一鍵

一張表往往有很多字段具有唯一性,數(shù)據(jù)不能重復(fù)昆淡,但是一張表中只能有一個(gè)主鍵锰瘸,唯一鍵(unique key)就可以解決表中有多個(gè)字段需要唯一性約束的問題。
唯一鍵的本質(zhì)與主鍵差不多昂灵,唯一鍵默認(rèn)的允許自動(dòng)為空避凝,而且可以多個(gè)為空(空字段不參與唯一性比較)

1.增加唯一鍵
  • 方案1:創(chuàng)建表時(shí),字段之后直接跟unique/unique key
  • 方案2:在所有字段之后眨补,增加unique key(字段列表)管削,復(fù)合唯一鍵。
  • 方案3:在創(chuàng)建表之后增加唯一鍵(方式和主鍵一樣)撑螺。
2.唯一鍵約束

唯一鍵與主鍵本質(zhì)相同含思,唯一的區(qū)別就是唯一鍵默認(rèn)允許為空,而且是多個(gè)為空甘晤。
如果唯一鍵也設(shè)置成了not null含潘,那么和主鍵的約束作用是一致的。

3.刪除唯一鍵

唯一鍵可以有多個(gè)线婚。
alter table 表名 drop index 索引名;
--唯一鍵默認(rèn)的使用字段名作為索引名字遏弱。

索引

幾乎所有的索引都是建立在字段之上。
索引:系統(tǒng)根據(jù)某種算法塞弊,將已有的數(shù)據(jù)(未來可能新增的數(shù)據(jù))漱逸,單獨(dú)建立一個(gè)文件,文件能夠?qū)崿F(xiàn)快速的匹配數(shù)據(jù)游沿,并且能夠快速的找到對應(yīng)表中的記錄饰抒。

索引的意義:
1、提升查詢數(shù)據(jù)的效率
2诀黍、約束數(shù)據(jù)的有效性(唯一性等)
增加索引的前提條件:索引本身會(huì)產(chǎn)生索引文件(有時(shí)候可能比數(shù)據(jù)文件還大)袋坑,會(huì)非常耗費(fèi)磁盤空間。
Mysql中提供了多種索引

  • 主鍵索引:primary key
  • 唯一索引:unique key
  • 全文索引:fulltext index
  • 普通索引:index

全文索引:針對文章內(nèi)部的關(guān)鍵字進(jìn)行索引

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蔗草,一起剝皮案震驚了整個(gè)濱河市咒彤,隨后出現(xiàn)的幾起案子疆柔,更是在濱河造成了極大的恐慌咒精,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旷档,死亡現(xiàn)場離奇詭異模叙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鞋屈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門范咨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來故觅,“玉大人,你說我怎么就攤上這事渠啊∈淅簦” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵替蛉,是天一觀的道長贯溅。 經(jīng)常有香客問我,道長躲查,這世上最難降的妖魔是什么它浅? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮镣煮,結(jié)果婚禮上姐霍,老公的妹妹穿的比我還像新娘。我一直安慰自己典唇,他們只是感情好镊折,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著介衔,像睡著了一般腌乡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上夜牡,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天与纽,我揣著相機(jī)與錄音,去河邊找鬼塘装。 笑死急迂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蹦肴。 我是一名探鬼主播僚碎,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼阴幌!你這毒婦竟也來了勺阐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤矛双,失蹤者是張志新(化名)和其女友劉穎渊抽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體议忽,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡懒闷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愤估。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帮辟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出玩焰,到底是詐尸還是另有隱情由驹,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布昔园,位于F島的核電站荔棉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蒿赢。R本人自食惡果不足惜润樱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望羡棵。 院中可真熱鬧壹若,春花似錦、人聲如沸皂冰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秃流。三九已至赂蕴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舶胀,已是汗流浹背概说。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嚣伐,地道東北人糖赔。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像轩端,于是被迫代替她去往敵國和親放典。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容