天天看點

mysql鍵值介紹

限制條件:限制字段指派

NULL:是否允許為空
key:索引類型
default:預設值
Extra:額外設定
create table t1 (class char(10) ,name char(10) not null, age tinyint not null default 28, likes set("a","b") default "c");      

修改表結構

alter table 表名 動作
添加字段---add
  alter table t1 add mail varchar(50) default "[email protected]";  #添加表字段,設定預設值
  alter table t1 add stu_num char(9) first;   #在最前面添加
  alter table t1 add pay float(7,2) default 20000 after class;  #在class字段後面添加
修改字段---modify
  在插入表記錄之前需要先設計好字段結構
  alter table t1 modify mail char(50);        #修改表字段的類型
  alter table t1 modify mail char(50) after class;      #移動表的位置
修改字段名---change
  alter table t1 change pay money float(7,2);
  alter table t1 change yy age int(1) not null default 28
删除字段---drop
  alter table t1 drop age,drop qq
修改表名---rename
  alter table t1 rename tt1;      

鍵值

鍵值類型:

普通索引  index      唯一索引  unique      主鍵  primary key     外鍵    foreign key     全文索引   fulltext      

什麼是索引

對記錄集的多個字段進行排序的方法
  類似于書的目錄
  包括Btree(預設,二叉樹),B+tree,hash
索引的優缺點
  加快讀的速度,降低資料的維護速度,占用存儲空間
索引的使用:使用規則,索引,建立,删除      

普通索引

工作過程:去t1表的排隊檔案t1.idb中找,找到結果後直接定位到所在的行,并把表資訊顯示出來
    一個表中可以有多個INDEX字段;值允許重複且可賦NULL值;KEY标志是MUL
    預設索引名=字段名
建表的時候指定索引字段:
    create table t3 ( name char(10), age tinyint,  index(name),index(age) );
    show index from t3\G        #檢視表中的索引字段(豎行顯示)
    drop index name on t3   #删除表中的索引
在已有表裡建立索引
    create index 索引名 on tt1(name)      
一個表中隻能有一個primary key字段;不能重複,不能為空;複合主鍵必須一起建立;KEY标志是PRI;通常與AUTO_INCREMENT連用;  
  建表的時候指定主鍵字段:
    create table t4( class char(7), name char(10), stu_id int, primary key(stu_id) )
  在已有表裡添加主鍵(先添加自增長再添加主鍵)
     alter table tt1 add primary key(class)
  複合主鍵(同時一樣才重複)
    create table t6 ( class char(7), name char(10), pay enum("yes","no") default "no", primary key(class,name,pay) )
  删除主鍵:alter table t6 drop primary key(如果有自增長,需先去掉自增長)
  與auto_increment連用,讓字段的值自增長,字段的類型必須為數值且是主鍵
  create table t7(id int(1)primary key auto_increment,name char(10),sex enum("w","m"),age tinyint)      
存儲引擎必須是innodb;字段類型和寬度要一緻;被參照字段必須是索引類型的一種(primary key)
    on update cascade 同步更新        on delete cascade 同步删除
  create table yg( yg_id int(1) primary key auto_increment, name char(15) )engine=innodb    #開啟innodb引擎
  create table gz( gz_id int(1), gz float(7,2) default 20000, foreign key(gz_id) references yg(yg_id) on update cascade on delete cascade )engine=innodb  
  show create table gz\G      #檢視外鍵名
  alter table gz drop foreign key gz_ibfk_1 #删除外鍵
  alter table gz add foreign key(gz_id) references yg(yg_id) on update cascade on delete cascade  #添加外鍵