MySql中的列屬性。


點擊進入推薦鏈接

MySql中,真正約束字段的是數據類型,但是數據類型的約束太單一,需要有一些額外的約束,來更加保證數據的合法性。

MySql中的常用列屬性有:null、not null、default、primary key、auto_increment和comment。

1、空屬性。

   空屬性有2個值,分別是 null(空,默認的) 和 not null(不為空),mysql數據庫默認字段都是為null的,但是在實際開發過程中,盡可能保證所有的數據都不應該為null,空數據沒有意義,空數據沒有辦法參加運算。

   語法:字段名 數據類型 not null   

   例子:創建一張【my_notnull】的表,為其添加一個name字段,並指定不為空。      

     create table if not exists my_notnull(
       name varchar(10) not null
     )charset utf8;

     

       

    空數據是不參加運算的。

     

       

2、列描述。

   列描述(注釋):comment,實際沒有什么含義,是專門用來描述字段的,會根據創建語句保存,用來給程序員(或者數據庫管理員)來進行了解的。主要用於查看創建表的語法上進行查看。

  語法:字段名 數據類型 comment ‘說明文字’

  例子:創建一張【my_comment 】的表,為其添加一個name字段,並為其添加說明。     

       create table if not exists my_comment(
        name varchar(10) comment '姓名字段'
      )charset utf8;

     

      

3、默認值。

   用default表示,某一種數據會經常的出現某個具體值,可以在一開始指定好,在需要真實數據的時候,用戶可以選擇性地使用默認值。

   語法:字段名 數據類型 default 默認值

   例子:添加一個【my_default】表,為其添加name字段,age字段,並未age字段指定默認值為18。      

      create table if not exists my_default(
        name varchar(10) not null comment '姓名',
        age tinyint unsigned not null default 18 comment '年齡'
       )charset utf8;

      

      

      插入數據:如果要使用默認值,在給表插入數據的時候,不給字段賦值即可。

            insert into  my_default(name) values('張三');

            

            

4、主鍵。

   一般情況下,對主鍵的理解是唯一鍵,一張表中只能有1個字段可以使用主鍵,用於約束該字段里面的數據,一張表中最多有1個主鍵

   4.1、添加主鍵。

       添加主鍵有4種方式。

     a)、創建表的時候,在字段后加上 primary key。       

        語法: 字段名 數據類型 primary key 

       例子:添加一個名叫【my_primark_key1】的表,為其添加id字段和name字段,且將id字段設置成主鍵。

            create table if not exists my_primary_key1(
             id int primary key,
             name varchar(10) not null
             )charset utf8; 

              

                

        插入數據:insert into my_primary_key1 values(1001,'張三');

            

               

        再次插入同樣的數據就會報錯:insert into my_primary_key1 values(1001,'張三');原因是主鍵值不能相同。

        

     b)、復合主鍵。

       在創建表的時候,在所有的字段之后,使用primay key(主鍵字段列表)來創建主鍵(可以有多個字段作為主鍵)來創建復合主鍵。

       語法:primary key(字段1,字段2......)

       例子:創建一張【my_primark_key2】的表,為其添加number字段(int類型)和classname 字段(varchar類型),將這個字段添加成復合主鍵。          

          create table if not exists my_primary_key2(
            number int not null,
            classname varchar(20) not null,
            primary key(number,classname)
          )charset utf8;

          

            

           插入數據:插入數據只有兩個字段(number,name)共同重復時才會插入失敗,如果有1個字段重復,另一個字段不重復,那么會插入成功。

                 insert into my_primary_key2(number,classname) values(1001,'高一(2)班');  -- 插入成功

               

                  

                 insert into my_primary_key2(number,classname) values(1001,'高一(3)班');  -- 插入成功,因為插入的值中有1個字段的值與表中的值不一樣。

               

                    

                 insert into my_primary_key2(number,classname) values(1001,'高一(2)班');  -- 插入失敗,因為插入的值中的2個字段值與表中的數據重復。

               

     c)、向表中的字段追加主鍵。     

       語法:alter table 表名字 字段名 數據類型 primary key(新建一個字段,添加主鍵,如果字段已經存在要用修改的方式);

        例子:新建一個名叫【my_primary_key3】的表,為其加入id字段和name字段。

           create table if not exists my_primary_key3(
            id int,
            name varchar(10) not null
            )charset utf8;

            

            

            修改 my_primary_key3表中的id字段為主鍵。

            alter table my_primary_key3 modify id int primary key comment '編號';

            

            

     d)、通過add primary key(字段名) 進行添加。

        語法:alter table 表名字 add primary key(要添加主鍵的字段名);

        例子:添加 id為主鍵。

           

            alter table userinfo  add primary key(id);

           

           

   4.2、主鍵約束。

     主鍵對應的字段中的數據不允許重復,一旦重復,操作失敗。

   4.3、更新主鍵,刪除主鍵。

     主鍵沒有辦法更新,只能先刪除主鍵,然后再添加主鍵。

     語法:alter table 表名字 drop primary key

     例子:修改【my_primary_key3】表中已存在的主鍵,為name字段設置主鍵。

        alter table my_primary_key3 drop primary key3; -- 先刪除。

        

         

         為name 字段添加主鍵(修改的形式)。

        alter table my_primary_key3 modify name varchar(10) primary key;

        

          

 5、自增長。

  當對應的字段不給值,或者說默認值,或者給null的時候會自動地被系統觸發,系統會從當前字段中已有的最大值再進行+1,得到一個新的不同的字段,通常和主鍵搭配。

  5.1、添加自增長。

     自增長的特點 :

        a)、任何一個字段做自增長前提 自身是一個索引(key一欄有值)。

      b)、自增長字段通常是整形。

      c)、一個表中只能有1個自增長。

     例子:添加一張【my_auto_increment】的表,為其添加id字段和name字段,其中id字段設置成主鍵和自增長。

         create table if not exists my_auto_increment(
          id int primary key auto_increment,
          name varchar(10) not null
         )charset utf8;

         

         

        插入值。        

          insert into my_auto_Increment values(null,'張三'); -- 有效
         insert into my_auto_Increment(name) values('李四'); -- 有效

            

           

           

     自增長如果對應的字段輸入了值,那么自增長失效,但是下一次還是能夠正確的自增長(從最大值+1)。

       如:insert into my_auto_Increment values(10,'王五');

      

        

        再次插入數據的時候,自增長就會從11開始。

      insert into my_auto_Increment values(null,'趙六');

      

        

  5.2、修改自增長。

      自增長如果是涉及到字段改變,必須先刪除自增長,后增加,一張表中只能有1個自增長。

      修改當前已存在自增長的值,修改只能比當前已有的自增長的最大值大,不能小(小則不生效)。

       update my_auto_increment set id = 20 where name = '趙六'; -- 將姓名為趙六的id修改成20

       

       

       再次插入數據。insert into my_auto_Increment values(null,'甜七');

       

       

  5.3、刪除自增增長。

     自增長是字段的一個屬性,可以通過modify屬性來修改(字段沒有自增長)。

     語法:alter table 表名字 modify 字段名 數據類型

     例子:將【my_auto_Increment】表中 id字段的自增長去掉。

        alter table my_auto_increment modify id int;

        

         

  5.4、自增長為什么從1開始?又為什么每次都是自增1呢?

      所有系統的表現(如字符集、校對集)都是由系統的內部變量進行控制的。

      查看自增長對應的變量的語法:show variables like 'auto_increment%'; 

      

     可以修改變量實現不同的效果。如果對整個數據修改(而不是但張表),這種方式是修改時會話級(當前客戶端,當此連接有效,關閉失效)。

      修改成一次自增為5。

     set auto_increment_increment = 5; -- 表示一次自增5

6、唯一鍵。

  一張表往往有很多字段需要具有唯一性,數據不能重復,這個時候用唯一鍵(unique)就體現出其優勢了,可以解決表中多個字段需要唯一性約束的問題,唯一鍵的本質與主鍵的性質差不多,唯一鍵默認的允許字段為空,

  而且可以多個字段為空(空字段不參與唯一性比較)。

  6.1、添加唯一鍵。

     語法:字段名 數據類型 unique/unique key

     有3種方式添加唯一鍵。

     a)、在字段后面添加唯一鍵。

        例子:新建一張【my_unique】的表,為其添加一個name字段,並設置成唯一鍵。

 

          create table if not exists my_unique(
            name varchar(10) not null unique
           )charset utf8;

 

            

           插入數據:

              insert into my_unique('李四');  -- 有效數據。

              

                

                再次插入一個名叫李四的就會報錯。

               

            這個時候會出現一種假象。 

             

            查看破解假象,查看表的創建語法。 

             

     b)、在所有的字段之后添加 unique key(字段列表),復合唯一鍵。

       例子:添加一張【my_unique】的表,為其添加number字段(int類型)和name字段(varchar類型),然后將兩個設置成復合唯一鍵。          

            create table if not exists my_unique2(
            number int not null,
            name varchar(20) not null,
            unique key(number,name)
          )charset utf8;

          

            

           插入數據。              

              insert into my_unique2 values(10001,'張三'); -- 有效數據
              insert into my_unique2 values(10001,'李四'); -- 有效數據(符合唯一鍵是兩個字段值要相同)

              

                

                insert into my_unique2 values(10001,'張三'); -- 無效數據(復合主鍵重復了)

              

     c)、追加唯一鍵。

       語法:alter table 表名字 add unque key(字段名);

       例子:新建一張【my_unique3】的表,添加一個字段name(carchar類型)。

           create table if not exists my_unique3(
            name varchar(30) not null
          )charset utf8;

          

            

            向my_unique3表中追加唯一鍵。

          alter table my_unique3 add unique key(name);

            

           

  6.2、更新唯一鍵。

      先刪除,后新增。

  6.3、刪除唯一鍵。

      語法:alter table 表名字 drop index 索引名字(唯一鍵默認的使用字段名作為索引名字)

End。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM