mysql索引比较字符_MySQL索引、字符编码、表结构

一、索引:

就是用来提高搜索性能的 只有我们数据量非常大的时候,索引可以展现出它的优势来!

注意:索引,我们在添加了以后,不用刻意的去使用它,它会自动生效

1. 常规索引(index):没有任何限制,就是普通的索引

1> 在建表时创建普通索引

create table t1(

id int unsigned not null,

name varchar(32),

index id(id)// index 索引名(字段名)

);

2> 在建表之后给表字段添加普通索引

create index id on t2(id);

create 索引类型 索引名 on 表名(字段名);

3> 删除表中的普通索引

drop index id on t2;

drop 索引类型 索引名 on 表名;

2. 唯一索引(unique)

定义了唯一索引的数据列,它里面的内容,必须保证没有重复的,如果出现重复的内容,则会报错!

1> 在创建表的时候定义唯一索引

create table t1(

id int unsigned not null,

name varchar(32),

unique index name(name)//索引类型 索引名(字段名)

);

2> 在创建表的时候定义唯一索引2

create table t1(

id int unsigned not null,

name varchar(32) unique//直接在建表时将索引名写在指定字段后

);

3> 表创建以后添加唯一索引

create unique index name on t1(name);

create 索引类型 索引名 on 表名(字段名)

4> 删除唯一索引

drop index name on t1;

drop index 索引名 on 表名;

3. 主键索引(primary key)

主键索引类似于唯一索引,它的数据列也必须保证是唯一的,它跟唯一索引的区别在于,它只能在一个表中定义一次

1> 创建表是添加主键索引

create table t1(

id int unsigned not null auto_increment primary key,

name varchar(32)

);

2> 在建表之后加主键索引

因为主键索引比较特殊,它只能在一个表中出现一次,所以在建表后添加主键索引使用下面的方法

alter table t7 change id id int unsigned not null auto_increment primary key;

alter table 表名 change 原字段 新字段 类型(长度) 约束条件;

3> 删除主键索引

① 首先,看一下你的表中是否有 auto_increment 这个约束条件

② 如果有,先将其删除

alter table 表名 change id id int unsigned not null;

② 最后,可以删除主键索引

alter table 表名 drop primary key;

4. 全文索引

用户能够在不使用模式匹配操作的前提下去搜索单词或短语。全文索引在MySQL中是一个FULLTEXT类型的索引,但只能用在MyIASM表,并且只能在CHAR、VARCHAR或TEXT类型的列上创建,也允许创建在一个或多个数据列上。这是一种特殊的索引。

1> 创建表时添加全文索引

create table books(

bookid int(10) not null auto_increment,

bookname varchar(50) not null,

detail text not null,

fulltext (detail),

primary key (bookid)

);

2>查询detail字段中出现的‘hello’的记录,以相关性从高到低的顺序排列。

select match(detail) against('hello') from books;

二、存储引擎

1.需要先分析我们的项目属于那种类型的,然后再去选择使用哪种存储引擎

1> MyISAM//因为它不支持事务的处理,不占用磁盘的空间,所以访问速度快当我们执行查询的频率比较高时,使用MyISAM这种存储引擎

2> InnoDB//可以支持事务处理的,占用磁盘的空间,会降低访问速度,因为它安全,因此我们在执行一些具有风险的操作时,建议使用InnoDB存储引擎,修改、删除

2.查看当前我们所使用的存储引擎

show variables like 'default_storage_engine';

+------------------------+--------+

| Variable_name | Value |

+------------------------+--------+

| default_storage_engine | MyISAM |

+------------------------+--------+

1 row in set, 1 warning (0.00 sec)

3. 在建表时指定存储引擎

mysql> create table t8(

-> id int unsigned not null auto_increment primary key,

-> name varchar(32) not null unique

-> )engine=InnoDB[MyISAM];//这里是指定存储引擎的地方

4. 查看表存储引擎的方法

show create table 表名;查看建表语句即可

三、字符编码

查看当前服务器或数据库的编码,使用 \s 即可

1> 服务器级

2> 数据库级

3> 数据表级

4> 数据字段级

如果说你想要让数据库中的数据不出现乱码,就必须保证上面四个级别编码统一都是 utf8

我们可以设置的编码,到底有多少种

show character set;

注意:因为我们MySQL中,编码设置具有遗传性、继承性,所以,我们只设置服务器级别的编码设置为 utf8 ,那么无论他下面的数据库、数据表、数据字段都会继承 utf8 的编码

1. 服务器级别的编码如何来进行设置

set character_set_server = '编码';

2. 数据库级别的编码进行设置

创建时给定编码:create database 数据库名 default charset = 'utf8';

修改数据库编码:set character_set_database = '编码';

3. 数据表级别的编码进行设置

创建数据表时给定编码:

create table t9(

id int unsigned not null auto_increment primary key,

name varchar(32)

)engine=MyISAM default charset=utf8;//进行设置数据表编码的位置

修改表的编码:alter table t9 charset='utf8';

4. 对数据字段级别的编码进行设置

必须是字符串型的数据才会有编码

alter table t9 change name name varchar(32) character set 'utf8';

5.配置文件修改默认字符编码

在[mysqld]下添加

character-set-server=utf8

在[client]下添加

default-character-set=utf8

四、修改表结构

1.添加字段

alter table 表名 add 字段名 字段类型(长度) 约束条件;

alter table stu add aihao set("dabolang","xiaobolang");

alter table stu add xiaoming varchar(32) after name;

alter table stu add sid int unsigned not null .. first;

注意:我们在添加字段时,可以规定它添加的位置,通过 after 或 first 来控制默认位置为最后一个字段后

2.删除字段

alter table 表名 drop 字段名;

注意:删除字段是,关键字是 drop 而不是 delete 这点要注意

再次注意:drop 是针对于数据库或数据表或数据表结构执行删除时的关键字,delete 是针对数据表中的数据执行删除时的关键字

3.修改字段

alter table 表名 change 原字段名 新字段名 类型(长度) 约束条件;

例如:alter table stu change classid classname varchar(32) default 'lamp149';

alter table 表名 modify 原字段名 类型(长度) 约束条件;

例如:alter table stu modify classname varchar(64) default 'lamp149';

注意:使用change 关键字可以将字段名同时进行修改,但是modify不具有重命名的效果,只能修改数据类型和约束条件

4.修改表名

alter table 表名 rename 新表名;

例如:alter table stu rename stu1;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值