四、MySQL键值

索引介绍: 树状目录结构; 对记录集的多个字段进行排序的方法,类似与书的“目录”,类型包括 :Btree 、 B+tree 、 hash

优点:加快查询表记录的速度

缺点: 会减慢编辑表记录的速度,且占用磁盘的物理存储空间

键值:普通索引  唯一索引  全文索引  主键  外键

普通索引的使用(index

使用规则:

一个表中可以有多个 INDEX 字段

字段的值允许有重复,且可以赋 NULL 值

经常把做查询条件的字段设置为 INDEX 字段

INDEX 字段的 KEY 标志是 MUL

 创建索引

create   index   索引名  on   表名(字段名);    //在已有表创建索引,可以自定义索引名

EG:create  index    aaa     on    studb.t2(age);

create  table  表名(字段列表,index(字段名),index(字段名));  //新建表时建立索引,索引名与字段名一致

create index xxx on t16(class);

create table t16(name char(15),age int(2),class char(7),index(name),index(class));

 查看索引

desc  表名;   //KEY 标志是 MUL 表示是索引项; 

show   index  from   表名\G;    //查看详细信息,加\G 分列显示

 Table: t2             //表名

Key_name: age   //索引名

Column_name: age   //列名

Index_type: BTREE  //类型,BTREE(二叉树)  

删除索引

drop   index   索引名  on   表名;

主键 primary   key

(普通主键    复合主键    主键+auto_increment)

 使用规则

一个表中只能有一个 primary key 字段

对应的字段值不允许有重复,且不允许赋 NULL 值

如果有多个字段都作为 PRIMARY KEY ,称为复合主键,必须一起创建。

主键字段的 KEY 标志是 PRI

通常与 AUTO_INCREMENT 连用

经常把表中能够唯一标识记录的字段设置为主键字段[ 记录编号字段 ]

查看主键 

desc  表;  //KEY 标志是 PRI

创建主键

在已有表创建     alter  table   表   add   primary  key(字段名);

建表时创建       create  table  表名(字段列表,primary  key(字段名));

EG: alter table  t21  add  primary key(stu_id);

create table t17(id char(9) primary key,name char(10));    //该格式不能创建复合主键

create table t18(id char(9),name char(10),primary key(id));

alter table t17 add primary key(id);

删除主键  

alter  table   表   drop    primary  key;

 

复合主键的使用:多个字段一起做主键,插入记录时,只要做主键字段的值不同时重复,就可以插入记录。

创建:create table t19(cip char(15),serport smallint(2),status enum("yes","no"),primary key(cip,serport));

删除:alter table t19 drop primary key;

新增:alter table t19 add primary key(cip,serport);

 主键primary  key  通常和auto_increment连用,auto_increment让字段的值自动增长i++,i为表中最大数值,也可以指定值

create table t21 (id int(2) primary key auto_increment,name char(10));  //创建表,设置某行自增长

alter table t4 add id int(2) primary key auto_increment;    //新增一行自增长

 

外键(限制如何给字段赋值的)

a表x字段设外键为b表x字段则a表x字段赋值时,值只能在b表的x字段值的范围里选择,且b表x字段某值的更改、删除均会让a表x字段对应值自动同步。

 使用规则

表的存储引擎必须是 innodb       字段类型要一致          被参照字段必须要是索引类型的一种 (primary key)

 创建外键 foreign  key 的命令格式:

create table 表(字段名列表,foreign key(字段名) references 表名(字段名)on update cascade on delete cascade)engine=innodb;

新建表:create  table  jfb(jfb_id int(2),name char(15), foreign key(name) references bjb(name)on update cascade on delete cascade)engine=innodb;

旧表:alter  table  bjb  add  foreign  key(bjb_id)   references  jfb(jfb_id)  on  update cascade    on  delete  cascade;

 查看外键   show create table 表名;   

 删除外键    alter  table  表名  drop  foreign key  外键名;

alter  table  bjb  drop  foreign key  bjb_ibfk_1;

 on update 和 on delete  后面可以跟的词语有四个no action  , set null ,  set default  ,cascade

no action 表示不做任何操作,   set null  表示在外键表中将相应字段设置为null    set default 表示设置为默认值

cascade 表示级联操作,就是说,如果主键表中被参考字段更新,外键表中也更新,主键表中的记录被删除,外键表中改行也相应删除

posted @ 2021-06-21 16:00  落樰兂痕  阅读(94)  评论(0编辑  收藏  举报