数据库索引的作用:
设置了合适的索引加快查询速度,降低数据库的排序成本
索引的分类:
1)普通索引:基本的索引类型,而且没有唯一性之类的限制,
2)唯一性索引:与普通索引基本相同,区别在于:索引列的所有值都只能出现一次:即必须唯一,但可以为空:
3)主键:是一种特殊的唯一索引,必须指定"PRIMAPY KEY",具有唯一性不能为空(列:身份证号)
4)全文索引:mysql3版本支持 ,在VARCHAR TEXT创建,
5)单列索引与多列索引: 索引可以是单列上创建的索引,也可以是多列上创建大的索引,
索引的创建依据:
1.表的主键,外键必须有索引,
2.数量超过三百行的表因该有索引
案列:
创建库并支持中文字符集,
MariaDB [(none)]> create database imployee_salary default charset utf8;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> use imployee_salary
Database changed
在数据库里 创建数据表
MariaDB [imployee_salary]> create table IT_salary(岗位类别 char(20) not null,姓名 char(20) not null, 年龄 int, 员工ID int not null,学历 char(6),年限 int,薪资 int not null, primary key(员工ID));
Query OK, 0 rows affected (0.01 sec)
在数据表里添加数据:
MariaDB [imployee_salary]> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资) values('.¡件驱动工程师','孙空无',27,011,'本科',3,4800);
Query OK, 1 row affected (0.00 sec)
MariaDB [imployee_salary]> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资) values('windowds工程师','蓝领',19,021,'本科',2,3500);
Query OK, 1 row affected (0.00 sec)
MariaDB [imployee_salary]> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资) values('linux工程师','姜文',32,013,'本科',8,15000);
Query OK, 1 row affected (0.00 sec)
MariaDB [imployee_salary]> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资) values('java工程师','关原',38,014,'大专',10,16000);
Query OK, 1 row affected (0.00 sec)
MariaDB [imployee_salary]> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资) values('网络工程师','罗仲昆',29,015,'大专',9,16500);
Query OK, 1 row affected (0.00 sec)
查看建立的表格:
MariaDB [imployee_salary]> select * from IT_salary;
+-----------------------+-----------+--------+----------+--------+--------+--------+
| 岗位类别 | 姓名 | 年龄 | 员工ID | 学历 | 年限 | 薪资 |
+-----------------------+-----------+--------+----------+--------+--------+--------+
| 硬件驱动工程师 | 孙空无 | 27 | 11 | 本科 | 3 | 4800 |
| linux工程师 | 姜文 | 32 | 13 | 本科 | 8 | 15000 |
| java工程师 | 关原 | 38 | 14 | 大专 | 10 | 16000 |
| 网络工程师 | 罗仲昆 | 29 | 15 | 大专 | 9 | 16500 |
| windowds工程师 | 蓝领 | 19 | 21 | 本科 | 2 | 3500 |
+-----------------------+-----------+--------+----------+--------+--------+--------+
5 rows in set (0.00 sec)
创建索引:
格式:CREATE INDX<索引的名字> ON 表名(字段);
创建普通索引:
MariaDB [imployee_salary]> create index salary_index on IT_salary(薪资);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
查看索引:两种查看方式
MariaDB [imployee_salary]> show index from IT_salary \G
MariaDB [imployee_salary]> show keys from IT_salary \G
创建唯一性索引:
MariaDB [imployee_salary]> create index salary_unlpue__index on IT_salary(姓名);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
查看:
MariaDB [imployee_salary]> show keys from IT_salary \G
创建主键:
格式:CREATE TABLE 表名(|。。。),PRIMAPY KEY(字段);
ALTER RABLE 表名 ADD PRIMAPY KEY(字段);
两种方法:
create table IT_salary(岗位类别 char(20) not null,姓名 char(20) not null, 年龄 int, 员工ID int not null,学历 char(6),年限 int,薪资 int not null, primary key(员工ID));
Query OK, 0 rows affected (0.01 sec)
MariaDB [imployee_salary]> alter table IT_salary add primary key(员工ID);
删除索引:
三种方法:
MariaDB [imployee_salary]> drop index salary_index on IT_salary;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
MariaDB [imployee_salary]> alter table IT_salary drop index salary_unlpue__index;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
MariaDB [imployee_salary]> alter table IT_salary drop primary key;
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0