MySQL (三)

來源:互聯網
上載者:User

標籤:sig   缺點   存在   efault   方案   course   有關   var   很多   

1 欄位屬性
  • 主鍵、唯一鍵和自增長。
1.1 主鍵
  • 主鍵:primary key,一張表中只能有一個欄位可以使用對應的鍵,用來唯一的約束該欄位裡面的資料,不能重複。
  • 一張表只能有最多一個主鍵。

 

1.1.1 增加主鍵
  • 在SQL操作中歐有多種方式可以給表增加主鍵,大體分為三種:

 

  • 方案1:在建立表的時候,直接在欄位之後,跟primary key關鍵字(主鍵本身不可為空)。
-- 增加主鍵create table my_pri(   id int primary key,   name varchar(20) not null comment ‘姓名‘)charset utf8;

    • 優點:非常直接;缺點:只能使用一個欄位作為主鍵。  

 

  • 方案2:在建立表的時候,在所有的欄位之後,使用primary key(主鍵欄位列表)來建立主鍵,如果有多個欄位作為主鍵,可以是複合主鍵。
create table my_pri2(   number char(10) comment ‘學號‘,   course char(10) comment ‘課程代碼:3901+0000‘,   score tinyint unsigned default 60 comment ‘成績‘,   -- 增加主鍵限制:學號和課程代碼應該是唯一的   primary key (number,course))charset utf8;

 

  • 方案3:當表已經建立好之後,額外追加主鍵:可以通過修改表欄位屬性,也可以直接追加。
alter table 表名 add primary key (欄位列表);

  • 前提:表中欄位對應的資料本身是獨立的(不重複)。

 

1.1.2 主鍵約束
  • 主鍵對應的欄位中的資料不允許重複,一旦重複,資料操作失敗(增和該)。

 

1.1.3 主鍵更新 & 刪除主鍵
  • 沒有辦法更新主鍵:主鍵必須先刪除,才能增加。
drop table 表名 drop primary key;

 

1.1.4 主鍵分類
  • 在實際建立表的過程中,很少使用真實業務資料作為主鍵欄位(業務主鍵,如學號、課程號)。
  • 大部分的時候,是使用邏輯性的欄位(欄位沒有業務含義,值是什麼都沒有關係),將這種欄位主鍵稱為邏輯主鍵。

 

1.2 自動成長
  • 自增長:當對應的欄位,不給值,或者給預設值,或者給null的時候,會自動的被系統觸發,系統會從當前欄位中的已有的最大值+1操作,得到一個新的不同的欄位。
  • 通常自動成長和主鍵搭配。

 

1.2.1 新增自增長
  • 自增長特點:auto_increment
    • 任何一個欄位要做自增長必須前提是本身是一個索引(key一欄有值)。

    • 自增長必須是數字。  

    • 一張表最多隻能有一個自增長。  

 

1.2.2 自增長使用
  • 當自增長被給定的值為null或者預設值的時候,會觸發自動成長。

 

1.2.3 修改自增長
  • 自增長如果是涉及到欄位改變:必須先刪除自增長,後增加(一張薄只能有一個自增長)。

 

  • 修改當前自增長已經存在的值:修改只能比當前已有的自增長的最大值大,不能笑(小不生效)。
-- 修改表選項的值alter table 表名 auto_increment = 值;

 

  • 思考:為什麼自增長是從1開始?為什麼每次都是自增1呢?
    • 所有系統的變現(如字元集、校對集)都是系統內部的變數進行控制的。
    • 查看自增長對應的變數:show variables like ‘auto_increment%‘;  

  • 可以修改變數實現不同的效果,但是修改是針對整個資料庫的修改,而不是單張表,不建議修改。
-- 不建議修改set auto_increment_increment = 5;

 

1.2.4 刪除自增長
  • 自增長是欄位的一個屬性:可以通過modify來進行修改(保證欄位沒有auto_increment即可)
alter table 表名 modify 欄位 類型;

 

1.3 唯一鍵
  • 一張表往往有很多欄位需要具有唯一性,資料不能重複;但是一張表中只能有一個主鍵,所以唯一鍵就可以解決表中有多個欄位需要唯一性的約束。

 

  • 唯一鍵的本質和主鍵差不多,唯一鍵預設的允許自動為空白,而且可以多個為空白。

 

1.3.1 增加唯一鍵
  • 基本上和主鍵差不多:三種方案。

 

  • 方案一:在建立表的時候,欄位之後直接跟unique/unque key。

 

  • 方案二:在所有的欄位之後增加unique key(欄位列表);--複合唯一鍵

 

  • 方案三:在建立表之後增加唯一鍵。

 

MySQL (三)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.