JAVA基礎--MySQL(二)

 數據庫約束數據庫

  1.基礎限制ide

    ① 單一表內字節量總和不能超過65535,null 佔用一個字節空間函數

    ② varchar存儲255 之內字節佔用一個字節表示長度,255以上本身則佔用兩個字節表示長度spa

    ③ 例如int(10)這裏10指的是10字節寬度並不是數字10,且 utf8下 一字符=3字節,gbk下一字符=2字節 ,具體以下blog

  數字類型索引

       根據字節數便可算出表示的範圍了 
  • TINYINT                                    1 字節 
  • SMALLINT                                 2 個字節 
  • MEDIUMINT                              3 個字節 
  • INT                                           4 個字節 
  • INTEGER                                   4 個字節 
  • BIGINT                                      8 個字節 
  • FLOAT(X)                                  4 若是 X < = 24 或 8 若是 25 < = X < = 53 
  • FLOAT                                       4 個字節 
  • DOUBLE                                    8 個字節 
  • DOUBLE PRECISION                  8 個字節 
  • REAL                                         8 個字節 
  • DECIMAL(M,D)                          M字節(D+2 , 若是M < D) 
  • NUMERIC(M,D)                          M字節(D+2 , 若是M < D)
     日期和時間類型
  • DATE                                        3 個字節 
  • DATETIME                                 8 個字節 
  • TIMESTAMP                               4 個字節 
  • TIME                                         3 個字節 
  • YEAR                                         1 字節
     字符串類型
  • CHAR(M)                                        M字節,1 <= M <= 255 
  • VARCHAR(M)                                 L+1 字節, 在此L <= M和1 <= M <= 255 
  • TINYBLOB, TINYTEXT                     L+1 字節, 在此L< 2 ^ 8 
  • BLOB, TEXT                                   L+2 字節, 在此L< 2 ^ 16 
  • MEDIUMBLOB, MEDIUMTEXT         L+3 字節, 在此L< 2 ^ 24 
  • LONGBLOB, LONGTEXT                 L+4 字節, 在此L< 2 ^ 32 
  • ENUM('value1','value2',...)                1 或 2 個字節, 取決於枚舉值的數目(最大值65535) 
  • SET('value1','value2',...)                    1,2,3,4或8個字節, 取決於集合成員的數量(最多64個成員)

  2.主鍵rem

    主鍵關鍵字primary key ,規則 惟一,非空,索引憑據字符串

    建立方式,例如:it

      create table tb1(id int primary key not null auto_increment)engin=innodb chrset=utf8;innodb

      create table tb1(id int not null auto_increment , primary key(id) )engin=innodb chrset=utf8;

    修改主鍵時須要 使用關鍵字 modify ,也可設置主鍵起始值,或者給主鍵賦值,可是主鍵賦值以後再次插入數據時候會根據末尾ID進行自增+1

    自增主鍵可設置起始值

      create table tb1(id int not null auto_increment , primary key(id) )engin=innodb auto_increment=9 chrset=utf8;

    修改主鍵使用drop關鍵字,修改主鍵使用modify

      alter table tb1 drop primary key;

      alter table tb1 modify id int;--這裏是去掉了自增

    

 

     

    查看剛剛生成的主鍵 last_insert_id() 函數,相似魚SQL中的 select scope_identity;

      select last_insert_id();   

      

  3.外鍵

    外鍵關鍵字 foreign key(class_id) references tb1(id) ,外鍵能夠爲空,能夠重複,不符合外鍵約束值則沒法添加,且外鍵關係是相互的其中一方無效則外鍵無效

      create table class(id int not null primary key auto_increment,name varchar(20))engine=innodb charset=utf8;

      create table student(id not null primary key auto_increment,name varchar(20),class_id int,foreign(class_id) references class(id))engine=innodb charset=utf8;

      insert into class (name) values('a','b','c');

      insert into student(name,class_id) values('1',1),('2',2),('3',null);

    

 

    

    

    

    刪除外鍵使用關鍵字drop,添加外鍵使用add關鍵字,刪除外鍵索引index

    注意刪除外鍵以前須要查看外鍵,直接刪除外鍵名稱則找不到外鍵

    

    

    

   4.非空

    限制字段不潤許取NULL值,可是能夠存空字符,修改非空與否 與修改表字段相同只是不添加限制條件

    

  ·5.惟一

    限制字段取值,不能取出重複的值,容許null值,若字段中村財重複值則沒法加入惟一,固然也能夠設置多個字段同時擁有惟一約束

    

  6.檢測

    check,該約束在數據插入的時候並不生效,因此通常忽略不計用法相似判斷條件,通常會使用enum枚舉來代替或者觸發器trigger 。。then 代替。

相關文章
相關標籤/搜索