索引

Msyql索引

 

索引:相当于“书的目录”

索引的优点和缺点

优点:加快查询的速度

缺点:占用物理存储空间,减慢写的速度

使用索引index(在表中的字段上创建索引)

使用规则

查看索引:desc 表名:key---->MUL

      show index from 表名;

      Index_type:BTREE (B+TREE Hash)

创建index索引:

创建表时 指定索引字段

在已有表里指定索引字段 

create index  索引名 on 表名(字段名);

删除索引

drop index 索引名 on 表名;

 

主键的使用primary key

使用规则

查看desc 表名:key---->PRI

      show index from 表名;

 

创建时查查创建;

create tabke t1(

stu_id char(9),

name char(10),

sex enmu(‘boy’,’girl’),

age tinyint(2) unsigned,

primary key(字段名)

);

建表时创建

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

主键只能作用于一个列上,添加主键索引时,你需要确保该主键默认不为空(NOT NULL)。实例如下:

ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;

ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);

删除主键:alter table  表名 drop primary key;

复合主键的使用(表中多个字段一起做主键,复合主键字段的值不允许同时重复,要一起创建)

创建:> create table db.q1(

    -> name char(10),

    -> class char(7),

    -> pay enum('yes','no') default 'no',

    -> primary key(name,class)  //需要一起创建

    -> );

 

验证:insert into db.q1 values('jim','a11','no');

insert into db.q1 values('jim','b11','no');   

删除:alter table 表名 drop primary key;

 

 

primary key 与auto_increment 连用

              字段的值自动增长i++ i=$+1

               数值类型  primary key

create table db.q2(

    -> id int(2) zerofill primary key auto_increment,

    -> name char(7),

    -> age tinyint(2) unsigned,

    -> sex enum('boy','girl','gav')

    -> );

insert into q2(name,age,sex) values('tom',22,'gav');

insert into q2(name,age,sex) values('tom',22,'gav');

select * from q2;

 

唯一索引unique

使用规则

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

对应的字段值不允许有重复

查看:desc 表名:key---->UNI

创建

建表时创建

Create unique index 索引名 on 表名(字段名);

create table asd.q1(

name char(7),

hz_id char(5),

jsz_id char(5),

unique(hz_id),

unique(jsz_id)

);

已有表创建

删除:drop index 索引名 on 表名;  //索引名默认和字段名同名

 

外键的使用

-让当前表字段的值在另外一个表中字段值的范围内选择

-表的存储引擎必须是innodb

-字段类型要一致

-被参照字段必须要是

创建外键:

References  //参考

on update cascade   //同步更新

on delete cascade   //同步删除

foreign key(字段名) references 表名(字段名) on update cascade on delete cascade

创建两个表

create table qq.bjb(

    -> bjb_id int(2) unsigned primary key auto_increment,

    -> name char(10),

    -> pay float(7,2)

    -> );

create table qq.jf(

    -> bjb_id int(2) unsigned primary key auto_increment,

    -> name char(10),

    -> pay float(7,2)

    -> );

在已有表创建外键

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

 

update 表名 set 字段名=值 where 条件;     //更新数据                                

delete from 表名 where 条件;

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

show create table 表名;  //查看外键名

 bjb   | CREATE TABLE `bjb` (

  `bjb_id` int(2) unsigned NOT NULL AUTO_INCREMENT,

  `name` char(10) DEFAULT NULL,

  `pay` float(7,2) DEFAULT NULL,

  PRIMARY KEY (`bjb_id`)

) ENGINE=InnoDB(默认存储引擎) DEFAULT CHARSET=latin1 |

转载于:https://www.cnblogs.com/xiaoren112/p/8401251.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值