1.主键索引(聚集索引)PRI
#创建主键索引
1.建表时创建主键索引
1)方法1:
mysql> create table student(id int unsigned primary key auto_increment comment '学生id');
2)方法2:
mysql> create table student1(id int unsigned NOT NULL AUTO_INCREMENT COMMENT '学生id', PRIMARY KEY (id));
2.已经有的表,添加主键索引
#建表
mysql> create table student2(id int unsigned NOT NULL COMMENT '学生id',name varchar(10) NOT NULL COMMENT '学生姓名');
#添加主键索引
mysql> alter table student2 add primary key pri_key(id);
2.唯一建索引 UNI
1)创建表时添加唯一键索引
1.方法1:
mysql> create table student3(id int unsigned NOT NULL unique key COMMENT '学生id');
2.方法2:
mysql> create table student4(id int unsigned NOT NULL AUTO_INCREMENT COMMENT '学生id', unique key (id));
2)已经有的表,添加唯一键索引
#建表
mysql> create table student5(id int unsigned NOT NULL COMMENT '学生id',name varchar(10) NOT NULL COMMENT '学生姓名');
#添加主键索引
mysql> alter table student2 add unique key uni_key(id);
3)如何确定哪一列可以创建唯一键
#1.查看表中某一字段的总数据
mysql> select count(name) from country;
+-------------+
| count(name) |
+-------------+
| 239 |
+-------------+
1 row in set (0.00 sec)
#2.去重查看表中某一列数据
mysql> select distinct(name) from country;
mysql> select distinct(count(name)) from country;
+---------------+
| (count(name)) |
+---------------+
| 239 |
+---------------+
1 row in set (0.00 sec)
#3.查看以上两个值是否完全相同
#4.如果相等则可以创建唯一建索引
mysql> alter table country add unique key uni_key(name);
4)函数
now() #当前时间的函数
database() #查看当前库的函数
count() #查看数据总数的函数,count(主键)
distinct() #去重数据的函数
PASSWORD() #数据库密码加密函数
max() #取某一列最大值
min() #取某一列最小值
avg() #取某一列平均值
sum() #取某一列总数
3.普通索引(辅助索引)MUL
1)创建索引
1.方法1:
mysql> alter table city add index index_key(name);
2.方法2:
mysql> create index idx_key on city(District);
4.全文索引 MUL
1)建表时创建全文索引
mysql> create table xiaoshuo(id int,bookname varchar(20),author varchar(10),content text,FULLTEXT(content));
2)插入数据
mysql> insert into xiaoshuo values('1','西游演义','lhd','上回书说到张飞长坂坡三打白骨精救宋江');
Query OK, 1 row affected (0.00 sec)
mysql> select * from xiaoshuo;
+------+--------------+--------+--------------------------------------------------------+
| id | bookname | author | content |
+------+--------------+--------+--------------------------------------------------------+
| 1 | 西游演义 | lhd | 上回书说到张飞长坂坡三打白骨精救宋江 |
+------+--------------+--------+--------------------------------------------------------+
1 row in set (0.00 sec)
3)使用索引查询数据
mysql> select * from xiaoshuo where match(content) against('上回书说到张飞长坂坡三打白骨精救宋江');
+------+--------------+--------+--------------------------------------------------------+
| id | bookname | author | content |
+------+--------------+--------+--------------------------------------------------------+
| 1 | 西游演义 | lhd | 上回书说到张飞长坂坡三打白骨精救宋江 |
+------+--------------+--------+--------------------------------------------------------+
1 row in set (0.00 sec)
5.查看索引
1.方式1:
mysql> desc city;
+-------------+----------+------+-----+
| Field | Type | Null | Key |
+-------------+----------+------+-----+
| ID | int(11) | NO | PRI | #主键索引
| Name | char(35) | NO | MUL | #普通索引
| CountryCode | char(3) | NO | UNI | #唯一键索引
| District | char(20) | NO | MUL |
| Population | int(11) | NO | |
+-------------+----------+------+-----+
2.方式2:
mysql> show index from city;
6.删除索引
mysql> alter table city drop index idx_key;