mysql高级

1、视图

视图就是一条SELECT语句执行后返回的结果集,视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变) 

 

1、定义视图
   建议以v开头
create view 视图名称 as select语句;

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

3、使用视图
视图的用途就是查询
select * from v_stu_score;


4、删除视图
drop view 视图名称;
例:
drop view v_stu_sco;

5、视图的作用
  提高了重用性,就像一个函数
  对数据库重构,却不影响程序的运行
  提高了安全性能,可以对不同的用户
  让数据更加清晰

2、事务

事务广泛的运用于订单系统、银行系统等多种场景

例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行。所以,应该把他们看成一个事务。可以用START TRANSACTION语句开始一个事务,然后要么使用COMMIT提交将修改的数据持久保存,要么使用ROLLBACK撤销所有的修改。事务SQL的样本如下:

1、start transaction;
2、select balance from checking where customer_id = 10233276;
3、update checking set balance = balance - 200.00 where customer_id = 10233276;
4、update savings set balance = balance + 200.00 where customer_id = 10233276;
commit;

  (1)事务四大特性(简称ACID)

  • 原子性(atomicity)

一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性

  • 一致性(consistency)

数据库总是从一个一致性的状态转换到另一个一致性的状态。(在前面的例子中,一致性确保了,即使在执行第三、四条语句之间时系统崩溃,支票账户中也不会损失200美元,因为事务最终没有提交,所以事务中所做的修改也不会保存到数据库中。)

  • 隔离性(isolation)

通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。(在前面的例子中,当执行完第三条语句、第四条语句还未开始时,此时有另外的一个账户汇总程序开始运行,则其看到支票帐户的余额并没有被减去200美元。)

  • 持久性(durability)

一旦事务提交,则其所做的修改会永久保存到数据库。(此时即使系统崩溃,修改的数据也不会丢失。)

 

    (2)事务命令 

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

开启事务,命令如下:

  • 开启事务后执行修改命令,变更会维护到本地缓存中,而不维护到物理表中
begin;
或者
start transaction;

提交事务,命令如下

  • 将缓存中的数据变更维护到物理表中
commit;

回滚事务,命令如下:

  • 放弃缓存中变更的数据
rollback;

3、索引 

索引是一种特殊的数据结构,主流的RDBMS都是把平衡树当做数据表默认的索引数据结构的。它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度,但建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。

索引能让数据库查询数据的速度上升, 而使写入数据的速度下降,原因很简单的, 因为平衡树这个结构必须一直维持在一个正确的状态, 增删改数据都会改变平衡树各节点中的索引数据内容,破坏树结构, 因此,在每次数据改变时, DBMS必须去重新梳理树(索引)的结构以确保它的正确,这会带来不小的性能开销,也就是为什么索引会给查询以外的操作带来副作用的原因。

       (1)索引的使用

  • 查看索引
show index from 表名;
  • 创建索引
    • 如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致
    • 字段类型如果不是字符串,可以不填写长度部分
create index 索引名称 on 表名(字段名称(长度))
  • 删除索引:
drop index 索引名称 on 表名;

 4、账户管理

在生产环境下操作数据库时,绝对不可以使用root账户连接,而是创建特定的账户,授予这个账户特定的操作权限,然后连接进行操作,主要的操作就是数据的crud。

在进行账户管理操作时都必须使用root权限登录。

   使用root登录

mysql -uroot -p
回车后写密码,然后回车

创建账户&授权

grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';
例如:
grant select on jing_dong.* to 'laowang'@'localhost' identified by '123456';

 查看用户有哪些权限

show grants for laowang@localhost;

1. 修改权限

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

 

2. 修改密码

使用root登录,修改mysql数据库的user表

  • 使用password()函数进行密码加密

    update user set authentication_string=password('新密码') where user='用户名';
    例:
    update user set authentication_string=password('123') where user='laowang';

 

       注意修改完成后需要刷新权限

刷新权限:flush privileges

5、主从机制

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

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

备份

  • 运行mysqldump命令
mysqldump –uroot –p 数据库名 > python.sql;

# 按提示输入mysql的密码

 

恢复

  • 连接mysql,创建新的数据库
  • 退出连接,执行如下命令
mysql -uroot –p 新数据库名 < python.sql

# 根据提示输入mysql密码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值