mysql数据库用户管理与索引

一. 数据库用户管理

主键:都是在创建表的时候一起创建好的,表结构在工作是严禁随意修改的。

1.1 创建用户

mysql> create user 'xy104'@'192.168.246.7'identified by '123456';
xy104:是用户名
localhost:这个是权限最高的root用户

#登录用户
mysql> mysql -h 192.168.246.6 -u xy104 -p123456

#查看当前登录用户
mysql> select user();

#创建后的用户保存在 mysql 数据库的 user 表里
mysql> select host,user,authentication_string,plugin from user;

1.2 赋权和解除权限

增删改查所有命令

select
update
alter
create
drop
delete

查看权限

show grants for 'xy104'@'192.168.233.22';

在这里插入图片描述

#查看库
show databases;

在这里插入图片描述

赋权

grant select,insert on jx1.* to 'jx404'@'192.168.246.7';
jx1.*:左边是库名,右边是表名

flush privileges;

解除权限

nevoke delete on jx1.* to 'jx404'@'192.168.246.7';

flush privileges;

1.3 删除用户

drop user 'jx404'@'192.168.246.7';

1.4 免密登录

vim /etc/my.cnfsy
#在配置文件中添加
skip-grant-tables

stemctl restart mysqld
#使用 update 修改 root 密码,刷新数据库
update user set authentication_string = '密码' where user = 'root';

FLUSH PRIVILEGES;

1.5 删除表内的数据,但是保留表名和表的结构

#创建自动递增的表
create table if not exists jx404 (
id int(4) zerofill primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50)
);

zerofill:不满足4位的前面会用0来自动填充
  • 方法1
    delete from 表名;
    如果该表有自增长的字段,delete删除之后,会保留之前的自增长记录
  • 方法2
    truncate table 表名;
    全部清空,自增长记录也会从1开始

二. mysql的索引

索引在所有的关系型数据库当中的都有,索引是一个排序的列表,在这个列表当中存储了索引的值和这个值对应数据所在的物理地址。
使用了索引之后,查询数据表时,可以不用全表扫描来定义数据所在行。
可以通过所以直接找到该行数据对应的物理地址,访问数据,提高查询的速度。
合理的设置索引可以提高数据库查询速度,也是必备的一项操作。

2.1 索引的作用

  1. 索引就相当于书本的目录,当表很大(数据量多)或者查询涉及到多个表时(不超过3个)使用索引可以上千上万倍的提高查询速度。
  2. 可以降低数据库的I/O成本,索引也会降低数据库的排序成本
  3. 也可以创建唯一性索引。
  4. 可以加快表于表之间的连接速度
  5. 使用索引可以减少分组和排序的时间
  6. 通过索引可以提高数据库的恢复速度

2.2 索引的副作用

1、索引也需要占用磁盘的空间
2、更新一个有索引的表比更新没有索引的表时间更长,因为索引也需要更新。

2.3 索引的创建原则

  • 虽然索引可以提高访问速度,但是也不是任何情况下都需要索引。
  • 在有索引的情况下,数据库会先查索引然后再定位到数据行,索引的设置如果不合理,反而会增加数据库的负担。
  1. 表的主键和外键必须有索引,但是主键和外键默认就是索引
  2. 查过300行的表数据,就需要添加索引了。
  3. 和其他表连接的字段,要建立索引。
  4. 唯一性差的字段不适合设置索引。
  5. 字段更新频繁,不适合索引
  6. 经常出现在where条件的字段当中,尤其是大表,应该建立索引
  7. 在经常进行 group by 和 order by,要创建索引

2.4 索引的类型

  • mysgl的索引默认就是B-TREE索引
    叶子节点上包含的条目直接指向到数据行,叶子节点之间也互相连接,形成了一个向下延伸的指针,根据索引值一步一步定位到数据行。

  • 哈希索引:他是把索引值转换成值,通过对应索引的hash值定位数据所在的行

2.5 索引的分类和创建

主键索引

#建表时创建索引
create table member (id int(10)PRIMARY KEY,
name varchar(10),
cardid int(18),
phone int(11),
address varchar(50),
remark text,
);
#主键索引
explain select * from member where id= 1;

一般索引(普通索引)

create index name_index on member (name(5));
name(5):例名当中匹配的长度,在不损失精确性的情况下,长度越小越好。减少索引文件的大小。

#建表时创建索引
create table member1 (id int(10)PRIMARY KEY,
name varchar(10),
cardid int(18),
phone int(11),
address varchar(50),
remark text,
index name index(name)
);
#建表后创建
create index 索引名 on 表名 (字段); 
#索引名建议以“_index”结尾

唯一索引

该字段的值必须是唯一的,但是可以为空。添加唯一约束,自动就是唯一索引。

#建表时创建索引
create table member2 (id int(10)PRIMARY KEY,
name varchar(10) unique key,
cardid int(18),
phone int(11),
address varchar(50),
remark text
);

explain select * from member2 where id= 1;
#建表后创建
create unique index cardid_index on member2(cardid);

组合索引

可以是单字段的索引,也可以是多字段的组合

create table member5 (id int(10)PRIMARY KEY,
name varchar(10) unique key,
cardid int(18),
phone int(11),
address varchar(50),
remark text,
unique index cardid_phone_address (cardid,phone,address)
);
 
explain select * from member5 where iphone="" and cardid=" ";
#建表后创建
alter table member5 add constraint uc_cardid_phone_address uniqhe (cardid,phone,address)

全文索引

适合模糊查询进行匹配时使用,用来检索文章当中的信息。

#建表后创建
create fulltext index remark_index on member6(remark);

explain select * from member6 where match(remark) against(' ');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值