MySQL之字段數據類型和列屬性


數據類型:

  對數據進行統一的分類,從系統的角度出發,為了能夠使用統一的方式進行管理,更好的利用有限的空間。

SQL中將數據類型分成了三大類:數值類型、字符串類型、時間日期類型。

 

數值型:

  數值型數據:都是數值,系統將數值型分為整數型和小數型。

   整數型:

  存放整形的數據,在SQL中因為更多考慮如何節省磁盤空間,所以系統將整形又細分為5類。

 

SQL中的數值類型全部都默認有符號,但是可以分正負。

有時候需要使用無符號數據:需要給數據類型限定:int unsigned;    無符號,從0開始。

 插入數據測試:

 

在查看表結構的時候,發現每個字段的數據類型之后會自帶一個括號,里面有指定的數字。

這個數據是顯示寬度,沒有特別的含義,只是默認的告訴用戶可以顯示的形式而已,實際上用戶是可以控制的,這種控制不會改變數據本身的大小。

顯示寬度的意義:當數據不夠顯示寬度的時候,會自動讓數據變成對應的顯示寬度,通常需要搭配一個前導0來增加寬度,不改變值的大小:()

 

 

小數型:

 

 

 

 

 

 

字符串類型:

  在SQL中,將字符串類型分為6類:char、varchar、text、blob、enum和set

  定長字符串:char,磁盤(二維表)在定義結構的時候,就已經確定了最終數據的存儲長度。

  變長字符串:varchar在分配空間的時候,按照最大的空間分配,但是實際上最終用了多少,是根據具體數據來確定的。

  字符串文本:

  如果數據量非常的大,通常說超出255個字符,就會使用文本字符串。

  枚舉字符串:

  枚舉:enum,事先將所有可能出現的結果都設計好,實際上存儲的數據必須是規定好的數據中的一個。

 

 證明字段存儲的數據是數值:將數據取出來 +0,就可以判斷出原來的數據存儲的到底是字符串還是數值,如果是字符串最終結果永遠是0,否則就是其他值。

 

 

  集合字符串:

  集合跟枚舉很類似:實際上存儲的是數值,而不是字符串(集合是多選)

集合中每一個元素都是對應一個對應的二進制位:

 

  MySQL的記錄長度:

  mysql中規定:任何一條記錄最長不能超過65535個字節(varchar永遠達不到理論值)

 

列屬性:

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

        

 

  空屬性:

  兩個值:null(默認)和not null(不為空)

  雖然是默認為空,數據庫基本都是字段為空,但是在實際開發的時候,應當盡可能的保證所有的數據都不應該為空,空數據是沒有意義的,空數據沒有辦法參與運算。

 

  列描述:

  comment(描述),沒有實際的含義,是專門用來描述字段,會根據表創建語句保存,用來給數據庫管理員來進行解釋的。

 

  默認值:

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

  默認值關鍵字:default

默認值的生效(使用):在數據進行插入的時候,不改變字段的賦值。

想要使用默認值,可以不一定去指定列表,故意不使用字段列表:可以使用default關鍵字代替。

 

  主鍵(primary key):

  一張表只能有一個字段可以使用對應的鍵,用來唯一約束該字段里面的數據,不能夠重復,這種鍵稱為主鍵。  

  增加主鍵:

  SQL操作中有多種方式可以給表增加主鍵:大體分為三種。

  方案一:在創建表的時候,直接在字段之后跟上primary key關鍵字(主鍵本身不允許為空)。其優點:非常直接,缺點:只能使用一個字段作為主鍵。

  方案二:在創建表的時候,在所以得字段之后,使用primary key(主鍵字段列表)來創建主鍵(如果有多個字段作為主鍵,可以是復合主鍵)

   方案三:當表已經創建好之后,額外追加主鍵,可以通過修改表的字段屬性,直接追加。(前提:表中的字段對應的數據本身是獨立的(不重復));

  Alter table 表名 add primary key(字段列表);

 

    主鍵約束:

  主鍵對應的字段中的數據不允許重復:一旦重復,數據操作失敗(增和改)

  更新主鍵與刪除主鍵

  沒有辦法更新主鍵,主鍵必須先刪除,后增加。

  Alter table 表名 drop primary key;

  主鍵分類:

  在實際創建表的過程中,很少使用真實業務數據作為主鍵字段(業務主鍵:如學號,課程號);大部分時候,是使用邏輯性的字段(字段沒有業務含義,值是什么沒有關系),將這種主鍵稱為邏輯主鍵。

 

  自增長(auto_increment):

  當對應的字段沒有值或者給默認值、或者給null的時候,會自動的被系統觸發。系統會從當前字段中已有的最大值再進行+1操作,得到一個新的不同的字段。

  自增長通常是跟主鍵搭配。

  自增長特點:

  自增長的使用:

  當自增長被給定的值是null或者默認值的時候會觸發自動增長。

  

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

      

    

  修改自增長:

  自增長如果涉及到字段的改變,必須先刪除自增長,后增加(一張表只能有一個自增長)

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

  Alter table 表名 auto_increment = 值;

      

       

 

 

  刪除自增長:

  自增長是字段的一個屬性:可以通過modify來進行修改(保證字段沒有auto_increment即可)

  Alter table 表名  modify 字段 類型;

 

  唯一鍵:

  一張表往往有很多字段需要具有唯一性,數據不能重復,但是一張表中只能有一個主鍵。

  唯一鍵(unique key)就可以解決表中有多個字段需要唯一性約束的問題。

  唯一鍵的本質和主鍵差不多:唯一鍵默認是允許自動為空,而且可以多個為空(空字段不參與唯一性比較)

  增加唯一鍵:

  與主鍵類似,有三種方案。

 

  唯一鍵約束:

  唯一鍵與主鍵本質相同,唯一區別就是唯一鍵默認允許為空,而且是多個為空。(如果唯一鍵也要求不能為空,那么與主鍵就是一樣的)

 

索引:

   幾乎所有的索引都是建立在字段之上。

  索引:系統根據某種算法,將已有的數據(未來可能新增的數據),單獨建立一個文件,文件能夠實現快速的配置數據,並且能夠快速找到對應標的記錄。

  索引的意義:

  1、提升查詢數據的效率。

  2、約束數據的有效性(唯一性等)

  增加索引的前提條件:索引本身會產生索引文件(有時候可能畢書盡文件還大),會非常耗費磁盤空間。

  如果某個字段需要作為查詢條件經常使用,那么可以使用索引(一定會想辦法增加);

  如果某個字段需要進行數據的有效約束,也可以使用索引(主鍵、唯一鍵)

  

 

      

索引詳細講解: https://www.cnblogs.com/chenshishuo/p/5030029.html


免責聲明!

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



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