mysql索引

rant可以%匹配
grant all privileges *.* to 'root'@'10.0.0.*' identified by 'admin'
grant all privileges *.* to 'root'@'10.0.0.0/255.255.255.0' identified by 'admin'
flush privileges;
mysql用户可以授权的权限有哪些
mysql> help revoke;
Name: 'REVOKE'
Description:
Syntax:
REVOKE
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    FROM user [, user] ...

REVOKE ALL PRIVILEGES, GRANT OPTION
    FROM user [, user] ...

REVOKE PROXY ON user
    FROM user [, user] ...
mysql> show grants for test02@localhost ;
+---------------------------------------------------------------------------------------------------------------+
| Grants for test02@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test02'@'localhost' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' |
| GRANT ALL PRIVILEGES ON `test`.* TO 'test02'@'localhost'                                                      |
+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> REVOKE INSERT ON test.* FROM 'test02'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for test02@localhost ;
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for test02@localhost                                                                                                                                                                                                    |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test02'@'localhost' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441'                                                                                                                  |
| GRANT SELECT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `test`.* TO 'test02'@'localhost' |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql -uroot -padmin -e "show grants for test02@localhost";
企业环境授权
GRANT SELECT, UPDATE, DELETE  *.* to 'root'@'10.0.0.*' identified by 'admin'
mysql> use tt;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
’| tt         |‘
+------------+
1 row in set (0.00 sec)

mysql>

mysql> create table student(
    -> id int(4) not null,
    -> name char(40) not null,
    -> age tinyint(2) not null default '0',
    -> dept varchar(16) default null
    -> );
Query OK, 0 rows affected (0.07 sec)

mysql> show create table student;
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                   |
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
  `id` int(4) NOT NULL,
  `name` char(40) NOT NULL,
  `age` tinyint(2) NOT NULL DEFAULT '0',
  `dept` varchar(16) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

5.1之前默认为myisam 5.5之后为innodb
mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(4)      | NO   |     | NULL    |       |
| name  | char(40)    | NO   |     | NULL    |       |
| age   | tinyint(2)  | NO   |     | 0       |       |
| dept  | varchar(16) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
mysql> show columns from student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(4)      | NO   |     | NULL    |       |
| name  | char(40)    | NO   |     | NULL    |       |
| age   | tinyint(2)  | NO   |     | 0       |       |
| dept  | varchar(16) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
为表的字段建立索引
创建主键索引 列的内容唯一 主键查询最快
create table student(
    id int(4) not null auto_increment,
    name char(40) not null,
    age tinyint(2) not null default '0',
    dept varchar(16) default null,
    primary key(id),
    key index_name(name)
   );
   mysql> drop table student;
Query OK, 0 rows affected (0.05 sec)

mysql> create table student(
    ->     id int(4) not null auto_increment,
    ->     name char(40) not null,
    ->     age tinyint(2) not null default '0',
    ->     dept varchar(16) default null,
    -> primary key(id),
    -> key index_name(name)
    ->    );
Query OK, 0 rows affected (0.10 sec)

mysql> desc student;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(4)      | NO   | PRI | NULL    | auto_increment |
| name  | char(40)    | NO   | MUL | NULL    |                |
| age   | tinyint(2)  | NO   |     | 0       |                |
| dept  | varchar(16) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
建表后通过alter 命令增加主键索引主键不能重复创建
alter table student drop primary key id  ;
alter table student  change id id int primary key auto_increment;
alter table student  drop index index_name;
alter table student add index index_dept(dept)
对字段的前n个字符创建普通索引
create inde index_name on test(name(8))前n个字符基本唯一
mysql> show index from student;
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table   | Non_unique | Key_name   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| student |          0 | PRIMARY    |            1 | id          | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| student |          1 | index_name |            1 | name        | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.07 sec)
联合索引
create index ind_name_dept on student (name,dept)
mysql> create index ind_name_dept on student (name,dept)
    -> ;
Query OK, 0 rows affected (0.09 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show index from student;
+---------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table   | Non_unique | Key_name      | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| student |          0 | PRIMARY       |            1 | id          | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| student |          1 | index_name    |            1 | name        | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| student |          1 | ind_name_dept |            1 | name        | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| student |          1 | ind_name_dept |            2 | dept        | A         |           0 |     NULL | NULL   | YES  | BTREE      |         |               |
+---------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
4 rows in set (0.00 sec)
drop index ind_name_dept on student
create index ind_name_dept on student (name(8),dept)前缀特效index(a,b,c) a,ab,abc可以走索引
更具多个列创建联合索引
create index ind_name_dept on student (name(8),dept(10))
drop index ind_name_dept on index
创建唯一非主键索引
create unique index index_age on student(age)
创建唯一索引

索引列的创建及其生效条件
1可以加快速度,但占用系统空间,更新数据库时还需维护索引数据,因此索引是一把双刃剑,并不是越多越好,列入数十到几百行的小表上无需建立索引,写频繁读少的业务要少建立索引
2到底哪些列需要建立索引呢
select user ,host from mysdl.user where user=索引一定要创建在条件列,而不是select 出来的数据列,另外我们要尽量在唯一值多的大表上建立索引
1要在表的列上创建索引
2索引会加快查询速度,但会音响跟新速度
3索引不是越多越好,要在频繁查询的where 的条件上创建索引
4小表或唯一值极少的列上不建索引,要在不同大表以及不同的列上创建索引

你可能感兴趣的:(mysql索引)