Mysql列属性
一.主鍵(primary key):一張表中只能有一個主鍵
??????????? 1.增加主鍵直接在字段名后加:id int(4) not null primary key
??????????? 2.復(fù)合主鍵:創(chuàng)建表之后在所有字段后使用primary key(主鍵字段列表)來創(chuàng)建主鍵(如果有多個字段做主鍵可以使用復(fù)合主鍵):????
???????????????????????? create table if not exists my_course(
??? ????????????????????????-> id int(4) comment '學(xué)號',
??????????????????????????? -> name char(8) not null comment '姓名',
??????????????????????????? -> primary key(id,name)
??? ??????????????????????? -> );
??????????? 3.當(dāng)表創(chuàng)建好后追加主鍵:alter table my_course add primary key(字段名);
??????????? 4.更新主鍵&刪除主鍵:主鍵必須刪除才能增加,alter table my_course drop primary key;
??????????? 5.主鍵分類:大部分是使用邏輯性字段(與業(yè)務(wù)關(guān)聯(lián)性很小
二.自增長:系統(tǒng)會在當(dāng)前字段中找到最大值然后進行+1操作,得到一個新的不同的數(shù)據(jù)。自增長通常與主鍵進行搭配
??????????? 1.自增長特點:自增長字段必須是一個索引;自增長字段必須是整數(shù);每張表只能有一個字段自增長。
??????????? 2.修改自增長:一張表只有一個字段是自增長,所以必須先刪除然后再重新定義。
??????????????? alter table my_course auto_increment=8; set auto_increment_increment=10;
??????????? 3.查看自增長變量:show variables like "auto_increment";
??????????? 4.刪除自增長:alter table my_course modify id int(4);
三.唯一鍵:一張表中有很多字段具有唯一性,但一張表中只有一個主鍵,唯一鍵(unique? key)可以有效的解決這個問題。
??????????? 1.唯一鍵本質(zhì):和主鍵差不多,區(qū)別唯一鍵(單個或多個)默認為空,空字段不參與唯一性比較。
??????????? 2.聲明唯一鍵
??????????????????????? 1):創(chuàng)建表的時候直接在字段后跟unique/unique key?? name char(10) not null unique;
??????????????????????? 2):在所有字段后添加唯一鍵unique??????
????????????????????????????????mysql> create table if not exists my_unique(
??? ?????????????????????????????????????? -> id int(4) not null primary key auto_increment,
??????????????????????????????????????????? -> sex char(7) not null,
??? ????????????????????????????????????????-> password char(6),
??????????????????????????????????????????? -> unique(sex,password)
??????????????????????????????????????????? -> );
?????????????????????????? 3):在創(chuàng)建表之后添加唯一鍵:alter table my_course add unique key(name,sex);
?????????????????????????? 4):刪除&更新唯一鍵:先刪除后更新 alter table my_course drop index name; ???????????????????????
四.索引:幾乎都建立在字段上,索引能夠快速匹配數(shù)據(jù)
????????????? 1.索引的作用:提交查詢的效率,約束數(shù)據(jù)的有效性
?????????????? 2.增加索引的前提條件:建立索引會產(chǎn)生索引文件(可能索引文件會比數(shù)據(jù)文件還大),會非常消耗磁盤空間
?????????????? 3.Mysql提供的索引????1.主鍵索引:primary key? 2.唯一鍵索引:unique key? 3.fulttext index??? 4.普通索引:index
五.范式:解決數(shù)據(jù)存儲與優(yōu)化的問題,若要滿足下一層范式,必須滿足上一層范式。
?????????????? 1.第一范式(1NF):要求所有的字段都滿足原子性,不可以再拆分。
?????????????? 2.第二范式(2NF):如果一張表中存在復(fù)合主鍵,表中存在字段依賴主鍵部分數(shù)據(jù),稱為部分依賴。第二范式不允許出現(xiàn)部分依賴。
??????????????? 解決方案:取消復(fù)合主鍵,使用邏輯主鍵。
?????????????? 3.第三范式(3NF):理論上講所有的字段都應(yīng)依賴主鍵(邏輯主鍵除外),第三范式解決部分傳遞依賴。
總結(jié)