day04 - MYSQL高级

一、视图

  • 介绍
    视图相当于一张虚拟表,通过一些sql语句存储一张虚拟表,当原表修改后,视图表也会响应的修改
  • 作用
    方便查询
  • 创建视图

create view v_视图名 as select语句
注:视图名没有特定的要求,以v开头,增加可读性

  • 查看视图

select * fron 视图名

  • 删除视图

drop view 视图名

**

注:

视图只是为了方便查询,所以只有查询操作,无法进行删除、查找、修改等操作

二、事务

  • 介绍
    就是一系列操作序列,这些操作序列要么都成功,要么都失败(只要其中某一个操作失败,事务中所有的操作都失败)

  • 四大特性(ACID)
    原子性(Atomicity)
    一致性(Consistency)
    隔离性(Isolation)
    持久性(Durability)
    原子性: 一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性
    一致性:数据库总是从一个一致性的状态转换到另一个一致性的状态
    隔离性:通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的
    持久性
    :一旦事务提交,则其所做的修改会永久保存到数据库。(此时即使系统崩溃,修改的数据也不会丢失。)

  • 事务操作一般流程
    1.开启事务

start transaction; 或者 begin;

  1. 执行一系列sql语句(一系列操作序列)

sql语句

  1. 回滚事务

rollback; # 撤销之前的sql操作

  1. 提交事务

commit;

三、索引

  • 介绍

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针

  • 作用

加快数据库的查询速度

  • 查看索引

show index from 表名

  • 创建索引

create index 索引名称 on 表名(字段名称(长度))

注:①如果指定字段是字符串,需要指定长度,建议长度与定义字段时 的长度一致
②字段类型如果不是字符串,可以不填写长度部分

  • 删除索引

drop index 索引名称 on 表名;

四、账户管理

  • MySQL账户体系
    服务实例级账号:,启动了一个mysqld,即为一个数据库实例;如果,拥有服务实例级分配的权限,那么该账号就可以删除所有的数据库、连同这些库中的表
    数据库级别账号:对特定数据库执行增删改查的所有操作
    数据表级别账号:对特定表执行增删改查等所有操作
    字段级别的权限:对某些表的特定字段进行操作
    存储程序级别的账号:对存储程序进行增删改查的操作
  • 查看用户(以root用户登录为例)

desc user;

select host,user,authentication_string from user;

字段说明:
host表示允许访问的主机
user表示用户名
authentication_string表示密码,为加密后的值

注:所有用户及权限信息存储在mysql数据库的user表中

  • 创建用户

grant 权限列表 on 数据库 to ‘用户名’@‘访问主机’ identified by ‘密码’;

  • 查看用户的权限

show grants for 用户名@localhost;

  • 以指定用户登录mysql

mysql -uroot -p密码

  • 修改权限

grant 权限名称 on 数据库 to 账户@主机 with grant option;

  • 修改密码

update user set authentication_string=password(‘新密码’) where user=‘用户名’;

  • 删除用户

方式一:
drop user ‘用户名’@‘主机’;
方式二:
delete from user where user=‘用户名’; flush
privileges

五、 MySQL主从同步机制

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)

  • 优势

①通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。
②提高数据安全,因为数据已复制到从服务器,所以,可以在从服务器上备份而不破坏主服务器相应数据
③在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能

  • 操作步骤

1.登录主服务器: 备份主服务器的原有数据

mysqldump -u用户名 -p密码 --all-databases --lock-all-tables > 文件名.sql
注: > 重定向输出操作

2.登录从服务器:还原主服务器中的数据

mysql –u用户名 –p密码 < 文件名.sql
注:< 重定向输入操作,文件需和mysql.exe在同一目录,或着写文件的绝对路径

3.配置主服务器

vim /etc/mysql/mysql.conf.d/mysqld.cnf 打开配置文件
server_id = 1
log_bin = /var/log/mysql/mysql_bin.log # 去掉这两行前面的#号

4.创建用于从服务器同步数据使用的帐号并刷新权限

GRANT REPLICATION SLAVE ON . TO ‘从服务器名’@‘容许登录的主机’ identified by ‘从服务器密码’;
FLUSH PRIVILEGES; 刷新权限

5.获取主服务器的二进制日志信息

show master status;

6.重启主服务器

service mysql restart

6.配置从服务器

windows从服务器:修改mysql安装目录下的my.ini文件
linux从服务器:vim /etc/mysql/mysql.conf.d/mysqld.cnf

server_id = 2 #不能与主数据库值相同

7.重启从服务器

windows从服务器:在任务管理器(ctrl+shift+esc)的服务中重启mysql
linux从服务器:service mysql restart

8.设置从服务器连接到master主服务器

change master to master_host=‘主服务器up地址’, master_user=‘从服务器用户名’,
master_password=‘从服务器密码’,master_log_file=‘主服务器的file信息’,
master_log_pos=主服务器的pos信息;

9.开启同步,查看同步状态
登录从服务器

开始同步:start 从服务器名
查看同步状态:show slave status \G;

在这里插入图片描述

发布了30 篇原创文章 · 获赞 0 · 访问量 285

猜你喜欢

转载自blog.csdn.net/qq_36334897/article/details/104899559
今日推荐