Mysql数据库高级用法之视图、事务、索引、自连接、用户管理实例分析

 更新时间:2019年11月27日 11:52:55   作者:HMMHMH  
这篇文章主要介绍了Mysql数据库高级用法之视图、事务、索引、自连接、用户管理,结合实例形式分析了MySQL数据库视图、事务、索引、自连接、用户管理常见用法及操作注意事项,需要的朋友可以参考下

本文实例讲述了Mysql数据库高级用法之视图、事务、索引、自连接、用户管理。分享给大家供大家参考,具体如下:

视图

视图是对若干张基本表的引用,一张虚表,只查询语句执行结果的字段类型和约束,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变),方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性。

1.————创建视图:

create view 视图名称(一般以v_开头) as 查询语句;

2.————查看视图:

select * from 视图名称;

3.————删除视图:

drop view 视图名称;

事务

1.特性:四大特性ACID

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

(2)一致性(Consistency):数据库总是从一个一致性的状态转换到另一个一致性的状态。

(3)隔离性(Isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的。

(4)持久性(Durability):一旦事务提交,则其所做的修改会永久保存到数据库。

2.使用:

(1)开启事务:开启事务后执行修改命令,变更会为护到本地缓存,而不是物理表中。
begin;或者start transaction;

(2)回滚事务:放弃缓存中变更的数据,表示事务执行失败,回到开始事务的状态。
rollback;

(3)提交事务:将缓存中的数据变更维护到物理表中。
commit;

索引

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的位置信息,更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。

1.使用:

(1)————查看索引:

show index from 表名;

(2)————创建索引:

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

(3)————删除索引:

drop index 索引名称 on 表名;

2.验证性能:

(1)开启运行时间检测:

set profiling=1;

(2)查找第十万条数据:

select * from test_index where title='ha-99999';

(3)为表建立索引:

create index title_index on test_index(title(10));

(4)查找第十万条数据:

select * from test_index where title='ha-99999';

(5)查看执行时间:

show profiles; 

总结:索引可以极大提升查询速度,但是创建索引的时间比查询的速度要慢很多,所以 数据表经常更新时,不适合使用索引,当数据表数据很大时,并且长时间不更新时,建 议使用索引,其他情况不建议使用。

用户管理

1.————查看用户: 

select host,user,authentication_string from user;

 ————查看用户权限:

show grants for 用户名@主机;

2.————创建用户并赋予权限:'

grant 权限名称 on 数据库名.* to ‘用户名'@'主机' identified by ‘密码';

3.————修改权限: 

grant 权限名称 on 数据库名.* to ‘用户名'@'主机' where grant option;

 刷新权限:

flush privileges;

4.————修改密码:

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

5.————删除用户:
卸载:

drop drop user ‘用户名'@'主机';

 手动删除:

delete from user where user='用户名';

 刷新权限:

flush privileges;

自连接

将多张相似表的数据汇总到一个表中,将自己与自己相连接进行查询。

1.————用法:

select * from 表名 as 别名1 inner join 表名 as 别名2 on 条件;

2.————案例:


aid为编号,pid为所属编号
查询山西省的所有城市:

select city.* from areas as cityinner join areas as province 
on city.pid=province.aidwhere province.atitle='山西省'; 

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总

希望本文所述对大家MySQL数据库计有所帮助。

相关文章

  • mysqldump你可能不知道的参数

    mysqldump你可能不知道的参数

    这篇文章主要介绍了mysqldump你可能不知道的参数,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下
    2020-11-11
  • mysqldump命令导入导出数据库方法与实例汇总

    mysqldump命令导入导出数据库方法与实例汇总

    这篇文章主要介绍了mysqldump命令导入导出数据库方法与实例汇总的相关资料,需要的朋友可以参考下
    2015-10-10
  • 浅谈MySQL中优化sql语句查询常用的30种方法

    浅谈MySQL中优化sql语句查询常用的30种方法

    本篇文章是对MySQL中优化sql语句查询常用的30种方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 将MySQL数据库移植为PostgreSQL

    将MySQL数据库移植为PostgreSQL

    PostgreSQL 作为功能最强劲的开源 OO 数据库,仿佛一直不为国内用户所熟识。而我个人也仅是因为工作的缘故接触到这款超经典的数据库,并深为之折服。
    2009-07-07
  • 什么是分表和分区 MySql数据库分区和分表方法

    什么是分表和分区 MySql数据库分区和分表方法

    这篇文章主要为大家详细介绍了MySql数据库分区和分表方法,告诉大家什么是分表和分区,mysql分表和分区有什么联系,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • MySQL中int(n)后面的n到底代表的是什么意思

    MySQL中int(n)后面的n到底代表的是什么意思

    这篇文章主要介绍了MySQL中int(n)后面的n到底代表的是什么意思 ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 分享很少见很有用的SQL功能CORRESPONDING

    分享很少见很有用的SQL功能CORRESPONDING

    这篇文章主要介绍了分享很少见很有用的SQL功能CORRESPONDING,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • MySQL redo死锁问题排查及解决过程分析

    MySQL redo死锁问题排查及解决过程分析

    被告知在多实例场景下 MySQL Server hang 住,无法测试下去,原生版本不存在这个问题,而新版本上出现了这个问题,不禁心头一颤,心中不禁感到奇怪,还好现场环境还在,为排查问题提供了一个好的环境,随即便投入到紧张的问题排查过程当中
    2016-10-10
  • MySQL 删除大表的性能问题解决方案

    MySQL 删除大表的性能问题解决方案

    MySQL在删除大表engine=innodb(30G+)时,如何减少MySQL hang的时间,本为将提供详细的解决方案,需要了解的朋友可以参考下
    2012-11-11
  • 学习mysql 如何行转列与列传行

    学习mysql 如何行转列与列传行

    这篇文章主要介绍了mysql行转列与列传行的使用方法,帮助大家更好的理解和学习MySQL的使用,语句不难,但有一定的知识参考价值,需要的朋友可以参考一下,希望给你的学习带来帮助
    2022-02-02

最新评论