mysql系列之2------數據類型,索引,鍵,存儲引擎

 一、Mysql數據類型:

   1、數值類型:

      整數類型:使用unsigned修飾時,只取正值,數值不夠指定寬度時,在左邊補空格

                      整數類型包括:tinyint,smallint,int等

      浮點型:  (5,2)總長度和小數點後的長度

                     包括:float,double,decimal(固定長度,不符合長度要求輸入不進去)

  2、字符類型:       

       char:  定長,255個字符,右邊用空格補齊,效率高

       varchar: 可變長,按數據實際大小分配空間,郵箱可用varchar

            大文本類型:text、blob

  3、日期時間類型:

     日期時間:datetime(8個字節)    timestamp(4個字節)

     日期: date   0001-01-01~9999-12-31

     年份:year    1901-2155    當用兩位表示時 :01-69 表示20XX     70-99 表示 19XX

        時間:time    HH:MM:SS,佔用三個字節

 4、時間函數

      now()  :獲取調用此函數時的系統日期時間

      month()   ,date()    time()  :獲取指定的月份,日期,時間

5、枚舉類型:愛好,性別,專業

     字段名       enum(值1,值2,值3)     單選   可用數字來表示

     字段名       set (值1,值2,值3)   多選

6、字段約束條件:限制如何給字段賦值

      null(爲空)  ,not null(非空),default(默認值)


二、Mysql索引

 優缺點:佔用物理存儲空間,減慢寫的速度;加快查詢的速度

  1、普通索引:index  

     可以有多個索引字段,其值可以重複和空值,在表結構中,其key鍵的值顯示爲:mul

       創建:create table user( id int(3), index(id)); //創建表時創建

               create index id on user1(id);   //在已存在的表裏創建

    刪除:drop index id on user1;   //在user1表裏刪除index爲id的索引

 2、唯一索引:unique  index    在鍵值那欄表示爲:UNI

      一個表中可以有多個唯一索引,對應字段的值不能重複,當不爲空時,限制功能

和主鍵相同。

       創建:create  unique index  hz_id  on   s2(hz_id);

       刪除:   drop    index    hz_id    on    s2;


三、主鍵、複合主鍵,外鍵

  1、主鍵:primary key   一個表只能有一個主鍵,其表示爲:PRI

    對應的字段值不能爲空。

        創建:alter  table   表名    add primary key (字段名);

        刪除:alter  table  表名    drop  primary key;  

    primary key 與 auto_increment連用,字段的值自動增長

    在創建主鍵時,在後面加上 auto_increment,刪除主鍵時,

  首先要刪除自增屬性,也就是先修改字段的屬性

  2、複合主鍵:表中多個字段一起做主鍵,要一起創建   

         創建:alter  table  s1   add   primary   key(stu_id,name);

         刪除:  alter  table  s1   drop   primary  key;

   3、外鍵使用規則:存儲引擎是innodb,類型和寬度一樣,被參考表:最好是主鍵

      創建:foreign      key(A表字段名)         references    B表名(字段名)  

               on update cascade(同步更新)  on delete cascade;(同步刪除)  

        刪除外鍵:alter  table 表名   drop  foreign  key   約束名;

     外鍵名查詢:show  create table  表名\G,可以查詢


四、Mysql存儲引擎

        何爲存儲引擎:負責爲數據庫執行實際的數據I/O操作,

不同的存儲引擎,其存儲數據的方式也不一樣,

在mysql5.7中,默認的存儲引擎是innodb.

 1、查看:show create table sys_in;    //查看某個表的存儲引擎

                 show engines;        //查看數據庫支持的和默認的存儲引擎

 2、修改數據庫默認的存儲引擎: vim /etc/my.cnf

     default-storage-engine=myisam/innodb

 3、修改某個存在表的默認引擎:

      alter table 表名 engine=innodb;

 4、myisam和innodb的區別

 myisam:支持表級鎖,適合多讀少寫;.frm(表結構), .MYI(索引), .MYD(數據)     

 innodb:支持行級鎖,適合多寫少讀,支持外鍵,支持事務,事務回滾,.frm(表結構).ibd(索引+數據)

5、鎖和事務的相關定義

     鎖類型:讀鎖(共享鎖),寫鎖(排它鎖)

     鎖粒度:表鎖,行鎖,頁鎖(內存)

     事務:一次sql操作從連接到斷開連接的過程稱爲事務。要麼成功,要麼失敗

     事務日誌文件:ib_logfile(sql語句存放位置);ibdata1(數據信息)






























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章