• MySQL高级


    一、视图:

        通俗的讲,视图就是一条SELECT语句执行后返回的结果集。 所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。
        视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);
        方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;
        视图的作用:
    1. 提高了重用性,就像一个函数
    2. 对数据库重构,却不影响程序的运行
    3. 提高了安全性能,可以对不同的用户
    4. 让数据更加清晰

      定义视图:

    1 -- 建议以v_开头
    2 create view 视图名称 as select语句;

      查看视图:

    1 -- 查看表会将所有的视图也列出来
    2 show tables;

      使用视图:

    1 -- 视图的用途就是查询
    2 select * from v_stu_score;

      删除视图:

    1 drop view 视图名称;
    2 例:
    3 drop view v_stu_sco;

      视图demo:

    二、事务:

      所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
           事务广泛的运用于订单系统、银行系统等多种场景
    事务四大特性(ACID):
    • 原子性
    • 一致性
    • 隔离性
    • 持久性

    事务命令(表的引擎类型必须是innodb类型才可以使用事务,这是mysql表的默认引擎):

      查看表的引擎:

    1 -- 选择数据库
    2 use jing_dong;
    3 -- 查看goods表
    4 show create table goods;

      开启事务:

    1 begin;
    2 或者
    3 start transaction;

      提交事务:

    1 commit;

      回滚事务:

    1 rollback;

    注意

    1. 修改数据的命令会自动的触发事务,包括insert、update、delete
    2. 而在SQL语句中有手动开启事务的原因是:可以进行多次数据的修改,如果成功一起成功,否则一起会滚到之前的数据

    三、索引:

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

      更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度

    索引相关命令:

      查看索引:

    1 show index from 表名;

      创建索引

      • 如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致
      • 字段类型如果不是字符串,可以不填写长度部分
    1 create index 索引名称 on 表名(字段名称(长度))

      删除索引:

    1 drop index 索引名称 on 表名;

    四、账户管理

    • 在生产环境下操作数据库时,绝对不可以使用root账户连接,而是创建特定的账户,授予这个账户特定的操作权限,然后连接进行操作,主要的操作就是数据的crud
    • MySQL账户体系:根据账户所具有的权限的不同,MySQL的账户可以分为以下几种
      • 服务实例级账号:,启动了一个mysqld,即为一个数据库实例;如果某用户如root,拥有服务实例级分配的权限,那么该账号就可以删除所有的数据库、连同这些库中的表
      • 数据库级别账号:对特定数据库执行增删改查的所有操作
      • 数据表级别账号:对特定表执行增删改查等所有操作
      • 字段级别的权限:对某些表的特定字段进行操作
      • 存储程序级别的账号:对存储程序进行增删改查的操作
    • 账户的操作主要包括创建账户、删除账户、修改密码、授权权限等

    注意:

    1. 进行账户操作时,需要使用root账户登录,这个账户拥有最高的实例级权限
    2. 通常都使用数据库级操作权限

    授予权限:

      查看所有账户:

    1 select host,user,authentication_string from user;

      创建账户、授权:

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

    账户操作:

      修改权限:

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

      修改密码:

    1 update user set authentication_string=password('新密码') where user='用户名';
    2 例:
    3 update user set authentication_string=password('123') where user='laowang';
    4 
    5 -- 注意修改完成后需要刷新权限
    6 -- 刷新权限:flush privileges

    五、主从同步:

    主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

    使用主从同步的好处:

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

    同步步骤:

      1.在主服务器Ubuntu上进行备份,执行命令:

    1 mysqldump -uroot -pmysql --all-databases --lock-all-tables > ~/master_db.sql

      说明

      • -u :用户名
      • -p :示密码
      • --all-databases :导出所有数据库
      • --lock-all-tables :执行操作时锁住所有表,防止操作时有数据修改
      • ~/master_db.sql :导出的备份数据(sql文件)位置,可自己指定

       2.在从服务器ubuntu上进行数据还原

    1 mysql –uroot –pmysql < master_db.sql

      3.配置主服务器master(Ubuntu中的MySQL)

    1 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

       4.重启主服务器mysql

    1 sudo service mysql restart

      5.登入主服务器Ubuntu中的mysql,创建用于从服务器同步数据使用的帐号

    1 mysql –uroot –pmysql
    2 GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave';
    3 FLUSH PRIVILEGES;

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

    1 SHOW MASTER STATUS;
    2 -- 记住File和Position,配置从服务器时会用到

      7.配置从服务器slave

    1 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

      

       8.进入从服务器的mysql,设置连接到master主服务器

    change master to master_host='10.211.55.5', master_user='slave', master_password='slave',master_log_file='mysql-bin.000006', master_log_pos=590;

      注:

      • master_host:主服务器Ubuntu的ip地址
      • master_log_file: 前面查询到的主服务器日志文件名
      • master_log_pos: 前面查询到的主服务器日志文件位置
  • 相关阅读:
    Eclipse 读取config目录下文件
    cakephp 中Console / Shell 有什么优点?
    cakephp中使用 find('count')方法
    [转]using components in Cakephp 2+ Shell
    [转]Git for windows 下vim解决中文乱码的有关问题
    在Foxmail中添加阿里云企业邮箱账号
    Cakephp在Controller中显示sql语句
    java线程的基本概念
    mysql varchar到底能存多少字符。
    mysql 联合索引匹配原则
  • 原文地址:https://www.cnblogs.com/zzmx0/p/12741678.html
Copyright © 2020-2023  润新知