数据库第四天

本文主要介绍数据库相关知识,包括存储引擎如Innodb、MyIsam、memory的特点;索引的作用、分类、创建、删除、使用场景及缺点,还提及explain工具和SQL语句规则;慢日志查询和普通日志记录的开启步骤;以及权限管理,如用户的创建、删除、修改、密码修改和授权等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

存储引擎:

create table t1(
id int auto_increment primary key,
name varchar(32) not null default ''
)engine=Innodb charset=utf8;

分类: (****************)
Innodb
1.(默认版本包含5.5)
2.支持事务
3.不支持全文索引
4.索引和数据都是在同一个文件中, .ibd
表的结构实在.frm文件中

MyIsam
1.(默认版本5.5以下 5.3)
2.不支持事务
3.支持全文索引
4..frm: 表结构
.MYD: 表数据
.MYI: 表索引


memory

全文索引:
sphinx

索引:

作用: 加快查询的速度

类比: 新华字典的目录, 可以将索引理解成一个特殊的文件, 然后如果没有这个文件的话, 查询是从前到后查找数据的,
如果有这个文件的话, 会按照一种特殊的数据结构(二叉树)查找数据

分类:
主键索引: 加快查询 + 不能重复 + 不能为空 primary key
唯一索引: 加快查询 + 不能重复 unique(列名)
联合唯一索引: 加快查询 + 不能重复 unique(列名1,列名2)
普通索引: 加快查询 index('列名')


创建:

主键索引:
第一种:
create table t1(
id int auto_increment primary key,
name varchar(32) not null default ''
)engine=Innodb charset=utf8;
第二种:
alter table t1 change id id int auto_increment primary key;

唯一索引:

第一种:
create table t1(
id int auto_increment primary key,
name varchar(32) not null default '',
unique ix_name ('name')
)engine=Innodb charset=utf8;

第二种:
create unique index 索引名称(ix_name) on 表名(t1)(name);
create unique index 索引名称(ix_name_age) on 表名(t1)(name,age);

普通索引:

第一种:
create table t1(
id int auto_increment primary key,
name varchar(32) not null default '',
index ix_name ('name')
)engine=Innodb charset=utf8;

第二种:
create index 索引名称(ix_name) on 表名(t1)(name);

删除:
drop 索引名称(ix_name) on 表名(t1);

场景:
使用频繁的列上加一个索引

索引的缺点:

版本5.3以下:
删除和修改的速度就变慢了

版本5.5以上:
删除和修改的速度不是特别的慢

create table t12(
id int auto_increment primary key,
name varchar(32) not null default '',
email varchar(32) not null default ''
)engine=Innodb charset=utf8;


索引的使用:

explain 工具

查看sql语句是否用的上索引, 或者查看sql执行效率的工具

给执行的SQL语句出一个报告, 通过此报告来判断sql语句的执行效率和效果

ES (elasticsearch )
SQL语句的规则:

- 不建议使用 like 进行搜索
- 组合索引最左前缀
如果组合索引为:(name,email)
where name and email -- 使用索引
where name -- 使用索引
where email -- 不使用索引

慢日志查询(slow log):

日志文件: 记录了执行速度特别慢的SQL语句

开启的步骤:
1. show variables like '%query%';

2. set global long_query_time = 1; 设置慢查询的时间
3. slow_query_log = ON
4. slow_query_log_file = E:\program\mysql-5.6.44-winx64\data\oldboy-slow.log

普通日志记录(general log):

SQL审计 (记录sql的操作语句)

show variables like '%general%';
+------------------+------------------------------------------------+
| Variable_name | Value |
+------------------+------------------------------------------------+
| general_log | ON |
| general_log_file | E:\program\mysql-5.6.44-winx64\data\oldboy.log |
+------------------+------------------------------------------------+
set global general_log = ON;


权限管理:

创建用户
create user '用户名'@'IP地址' identified by '密码';
creaee user 'zekai'@'192.168.1.123' identified by '123qwe';
creaee user 'zekai'@'192.168.1.%' identified by '123qwe';
create user 'zekai'@'%' identified by '123qwe';

删除用户
drop user '用户名'@'IP地址';
修改用户
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';

修改密码
set password for '用户名'@'IP地址' = Password('新密码')

授权:
grant 权限 on 数据库.表 to '用户'@'IP地址' -- 授权

grant select on db1.* to 'zekai'@'%';
grant select on *.* to 'zekai'@'%';
grant select, insert, delete on db1.* to 'zekai'@'%';

记住:
flush privileges;

转载于:https://www.cnblogs.com/huanghongzheng/p/11041589.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值