MySQL常用高级操作:视图、事务、账户管理

视图 View

一个View视图是一个虚拟的表格,是从各个真实表格中抽取各种数据而成,但是只能查询不能删改。
为什么要用视图?因为一般查询经常会涉及多个表多个字段,非常繁琐。为了简化流程,适合未来业务改变,所以更方便的是抽象出一个视图来查询。

也就是,用View的意义在于:

  • 简化复杂的查询语句
  • 方便维护,在业务变化后不需要修改大量原表内容
  • 可以针对不同的用户显示不同结构的表,但是原表原封不动

定义View视图:

CREATE VIEW 视图名称 AS
    SELECT ... FROM ... WHERE ... ;

定义好后,一个View视图就会成为一个数据库中的“表格”,当我们用show tables;时就会显示出来所有的表和视图。

删除视图:

DROP VIEW 视图名称 ;

事务 Transaction

一个事务Transactin代表一个操作序列,即联动的好几条语句。那么,

当我们将Transaction作为一个整体执行时,操作序列中的语句要么全部执行成功,要么全体执行失败

在很多时候,这种操作序列的绑定是至关重要的。比如A向B进行银行转帐分为这三步:

  • [x] 检查A的账户余额是否充足
  • [x] 从A的账户扣钱
  • [ ] 在B的账户加钱

那么,如果转账系统突然故障,只执行了2步就死机,那么这时候必须视为整体执行失败,否则将会引发大问题。

如果一个Transaction中有一个执行失败的语句,那么数据库会立即进行Rollback回滚操作。

MySQL中执行事务的语句格式:

START TRANSACTION ;

    SELECT ... FROM ... ;
    UPDATE ... SET .... ;
    INSERT INTO ... ;

COMMIT;

(以上的Start Transaction ;也可以用Begin ;来代替。)

如果Commit报错,那么我们可以进行手动回滚:

ROLLBACK ;

事务的四大特性 (ACID)

事务Transaction是保证数据更新100%成功的一种方式。
(注意:事务只是为了增删改而设计的。而单纯的查询,是不需要事务的。)

它具有如下特性:

  • Atomicity 原子性: 一个事务必须视为不可分割的最小单位,要么全成功,要么全失败。
  • Consistency 一致性:总是从一个一致性状态转到另一个一致性状态,没有中间状态。
  • Isolation 隔离性:当事务没有执行完时,是对外不可见的,也就是这时候数据库还没有完成真正的修改,别人也看不到有任何变动。
  • Durability 持久性:一旦事务执行成功,那么就真正完成数据库的修改,电脑关机也不会有变动了。

账户管理 Account Management

根据权限,分为这几类账户:

  • Root账户:拥有一个mysqld服务的全部权限。
  • 数据库级账户:可控制某个数据库。
  • 表级账户:只能控制某个或某些表。
  • 字段级权限:只能修改某个表的某些字段。
  • 存储级别账户:对存储程序进行CRUD操作。

其中Root账户有权利创建、修改账户,并分配相应的权利。

所有账户(用户)相关的信息,都存在MySQL服务器上叫dmysql的数据库中的user表中,包括名称、权限、所在主机,甚至密码等信息。

常用操作:

-- 查看user表结构
DESC user ;

-- 查看所有用户
USE mysql ;
SELECT * FROM user ;

-- 查看某用户有哪些权限,如user1
SHOW GRANTS FOR 'user1'@'主机IP' ;

-- 创建一个用户
GRANT 权限列表 ON 数据库 TO 数据库账户名@主机IP IDENTIFIED BY '密码' ;
-- 如:
GRANT select on mydb1.* to user1@192.168.1.111 IDENTIFIED BY 'password123' ;

-- 修改用户权限
GRANT select, insert on mydb1 to user1@localhost WITH GRANT OPTIONS ;
FLUSH PRIVILEDGES ;    -- 刷新,使更改生效

-- 修改密码
UPDATE user SET authentication_string=password('密码') WHERE user='用户名' ;

-- 删除用户
DROP USER 用户名@主机IP ;
-- 或
-- DELETE FROM user WHERE user='用户名' ;
FLUSH PRIVILEDGES ;    -- 刷新,使用更改生效

以上的权限列表有固定的语法格式:操作名 ON 数据库名.表名, 操作名 ON 数据库名.表名....
如:

  • select on mydb1.products, update on mydb1.employees 具体指定
  • select, insert on mydb1.products 宽泛指定
  • select on mydb1.* 可以查询该数据库所有表

远程登录 :
如果主机IP写'%',则代表允许可以从任何IP访问此数据库。如果指定某IP,那么MySQL则只接收来自此IP的登陆,从其它机器不能登录。
另外,如果要直接远程登录,除了在user表中修改允许的IP外,还需要在MySQL服务器的配置文件/etc/mysql/mysql.con.d/mysql.cnf中的bind_address的允许IP。
但是!
但是,这种方法不推荐,会有很大的被黑危险。正确的做法是,通过SSH登录远程主机进行操作,这样就不需要开发IP限制了。

执行时间查看

在MySQL中,可以开启时间监控的功能。

-- 开启时间监控,0为关,1为开
SET profiles = 1 ;

-- 任意执行一个语句
SELECT ... FROM ... ;

-- 显示之前那句的执行时间
SHOW profiles ;

显示效果如下(包括具体的sql语句和执行时间):


image
image

实际上profiles就是一个简单的表,记录了每一次的sql语句和其执行的时间。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容