Mysql数据库高级用法之视图、事务、索引、自连接、用户管理实例分析
作者:HMMHMH 发布时间:2024-01-15 20:17:00
本文实例讲述了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数据库计有所帮助。
来源:https://blog.csdn.net/zsh142537/article/details/82659409


猜你喜欢
- 首先,运行 Python 解释器,导入 re 模块并编译一个 RE:#!python Python 2.2.2 (#1, Feb 10 20
- Python反转二维数组的行和列代码如下:import numpy as nparr=np.arange(12).reshape(4,3)p
- 前两天看见有人问静态网页加密问题,就写了这个代码稍微有些长,解释一下思路:加密时:先把用户的密钥A用md5加密为B,然后用B异或源文件S0得
- 前言对于PHP大家一定不陌生,但你知道PHP在CTF中是如何考察的吗,本文给大家带来的是通过PHP特性来进行CTF比赛中解题出题的知识,会介
- 前言 基于mybatis的AbstractRoutingDataSource和I
- 当前的实践中问题在项目之间依赖的时候我们往往可以通过mock一个接口的实现,以一种比较简洁、独立的方式,来进行测试。但是在mock使用的过程
- 一、前端代码<el-upload class="step_content" drag
- 本文实例为大家分享了python实现画圆功能的具体代码,供大家参考,具体内容如下import numpy as np import matp
- 这篇文章主要介绍了python enumerate内置函数用法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 一、安装包MYSQL服务下载地址:MySQL官网下载,这里会显示当前最新的版本,MYSQL刚从5.7版本升到8.0正式版,据说速度提升了2倍
- 本文实例讲述了Python enumerate函数功能与用法。分享给大家供大家参考,具体如下:eunmerate在英文中是列举、枚举的意思,
- 一、前言一个Sql Server 开发智能提示插件,方便查询表结果,避免了开发人员一个个敲查询语句、执行语句等,一起来看看吧。SQL Pro
- 一、色彩空间的转换代码如下:#色彩空间转换import cv2 as cvdef color_space_demo(img):
- 本文实例讲述了python中__slots__的用法。分享给大家供大家参考。具体分析如下:定义__slots__ 后,可以再实例上分配的属性
- WinForm 中添加 openFileDialog Button, WinForm .cs 中添加本地.mdf,如下:using Syst
- 本文实例讲述了Python实现的栈、队列、文件目录遍历操作。分享给大家供大家参考,具体如下:一、 栈与队列1、 栈 stack特点:先进先出
- LRU缓存算法,指的是近期最少使用算法,大体逻辑就是淘汰最长时间没有用的那个缓存,这里我们使用有序字典,来实现自己的LRU缓存算法,并将其包
- 没有使用队列,也没有线程池还在学习只是多线程 #coding:utf8 import urllib2,sys,re import threa
- 本文实例分析了Python作用域用法。分享给大家供大家参考,具体如下:每一个编程语言都有变量的作用域的概念,Python也不例外,以下是Py
- 引言最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏、后台等方面,python也大放异彩,本篇博文将按照正规的