【澳门金莎娱乐手机版】事务处理,事务处理的

日期:2019-11-02编辑作者:数据大全

一、联结表

  数据仍使用前文中的数据。

第七十天问 使用视图

  • 视图是一张虚构表
  • 怎么使用视图
    • 重用SQL语句
    • 简化复杂的SQL操作
    • 使用表的组成都部队分并不是整张表
    • 爱护数量,只同意访问表的风流洒脱对并非整张表
    • 转移数据格式和表示,视图能够回来与底层表格式差异的多寡
  • 视图的施用准则

    • 独一命名
    • 视图数目未有限制
    • 始建视图供给权限
    • 视图能够嵌套,能够行使其余视图来布局视图
    • 视图能够使用 OCRUISERDE奇骏 BY,可是 SELECT 中的 O汉兰达DE奥迪Q5 BY 会覆盖视图中的 OTiguanDE福睿斯 BY
    • 视图无法引得,也不能够有涉嫌的触发器或默许值
    • 视图能够和表一齐利用,能够联结表和视图
  • 应用视图

    • CREATE VIEW 创立视图
    • SHOW CREATE VIEW viewname; 查看所创制的视图
    • DROP 删除视图
    • 履新视图,能够先删除再创立,也能够采用 CREATE O昂科拉 PEPLACE VIEW
  • 采纳视图简化复杂的合併:创设一时表,扩大灵活性

  • 用视图重新格式化检索出的多少:视图能够依据要求创制列名

  • 采用视图过滤不想要的数目:通过视图过滤数据后代替表使用

  • 利用视图简化计算字段

  • 视图常常用于检索,不用于立异

MYSQL入门上学之十七:事务处理的基本操作

MYSQL:基础——事务管理

  1、子查询

  作为子查询的SELECT语句只好查询单个列。图谋检索四个列将赶回错误。

-- 作为查询条件使用
-- 查看TNT2订单对应的客户ip(order表)
SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id='TNT2');
-- 根据TNT2订单的客户ip查看客户信息(cust表)
SELECT cust_name, cust_contact FROM customers WHERE cust_id IN (SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id='TNT2'));
-- 作为计算字段使用
-- 计算每个客户的订单数据
SELECT cust_name, cust_state, (SELECT COUNT(*) FROM orders WHERE orders.cust_id = customers.cust_id) AS orders FROM customers ORDER BY cust_name;

第三十一章 使用存款和储蓄进程

  • 存款和储蓄进度是一条大概多条SQL语句的聚众,雷同于批文件

  • 选取存款和储蓄进程的说辞(简单、安全、高品质)

    • 简化复杂操作
    • 防范错误
    • 简化对改换的田间管理
    • 拉长品质
  • 成立和利用存款和储蓄进度都急需权限

  • 创办存款和储蓄进度

    //创建一个名为productpricing的存储过程
    CREATE PROCECURE productpricing()
    BEGIN
        SELECT Avg(prod_price) AS priceaverage
        FROM products;
    END
    
  • 实行存款和储蓄进程

    CALL productpricing (
        @pricelow,
        @pricehigh,
        @priceaverage
    );
    
  • 利用存款和储蓄进程

    CALL productpricing();  
    
  • 删除存款和储蓄进程

    DROP PROCEDURE productpricing IF EXISTS;
    

 

东西管理

  2、创立链接

 图片示例  链接方式 关键字 语句示例
  内连接 INNER JOIN ... ON SELECT <select_list> FROM A INNER JOIN B ON A.key = B.key
左外连接 LEFT JOIN ... ON SELECT <select_list> FROM A LEFT JOIN B ON A.key = B.key
左外连接 LEFT JOIN ... ON ... WHERE B.key IS NULL SELECT <select_list> FROM A LEFT JOIN B ON A.key = B.key WHERE B.key IS NULL
右外连接 RIGHT JOIN ... ON SELECT <select_list> FROM A RIGHT JOIN B ON A.key = B.key
右外连接 RIGHT JOIN ... ON ... WHERE A.key IS NULL SELECT <select_list> FROM A RIGHT JOIN B ON A.key = B.key WHERE A.key IS NULL
全外连接 UNION

SELECT <select_list> FROM A LEFT JOIN B ON A.key = B.key

UNION

SELECT <select_list> FROM A RIGHT JOIN B ON A.key = B.key

全外连接 (WHER IS NULL) UNION ... (WHER IS NULL)

SELECT <select_list> FROM A LEFT JOIN B ON A.key = B.key WHERE B.key IS NULL

UNION

SELECT <select_list> FROM A RIGHT JOIN B ON A.key = B.key WHERE A.key IS NULL

   用例:

-- 笛卡尔积:n * m
-- SELECT * FROM vendors, products;
SELECT orders.cust_id, cust_name FROM orders CROSS JOIN customers;-- 没有WHERE子句
-- 内连接
-- SELECT * FROM vendors, products WHERE vendors.vend_id = products.vend_id;
SELECT * FROM vendors INNER JOIN products on vendors.vend_id = products.vend_id;
-- 左外连接(a),根据A表相应字段取列
SELECT orders.cust_id, cust_name FROM orders LEFT JOIN customers on customers.cust_id = orders.cust_id;
-- 左外连接b,只取A表中无B表相应字段的列
SELECT vendors.vend_id, vend_name, vend_country  FROM vendors LEFT JOIN products on vendors.vend_id = products.vend_id where products.vend_id IS NULL ORDER BY vend_id;
-- 右外连接(a),同左外连接(a)
SELECT orders.cust_id, cust_name FROM orders RIGHT JOIN customers on customers.cust_id = orders.cust_id;
-- 右外连接(b),同左外连接(b)
SELECT customers.cust_id, cust_name FROM orders RIGHT JOIN customers on customers.cust_id = orders.cust_id WHERE orders.cust_id IS NULL;

-- 全外连接,两者id相等的行和不相等的行都保留
SELECT customers.cust_id, orders.order_num FROM orders LEFT JOIN customers on customers.cust_id = orders.cust_id
UNION
SELECT customers.cust_id, orders.order_num FROM orders RIGHT JOIN customers on customers.cust_id = orders.cust_id;
-- 全外连接,只保留两者id不相等的行,这里两个WHERE子句一样是因为customers的id字段完全包含orders中的字段
SELECT customers.cust_id, orders.order_num FROM orders LEFT JOIN customers on customers.cust_id = orders.cust_id WHERE orders.cust_id IS NULL
UNION
SELECT customers.cust_id, orders.order_num FROM orders RIGHT JOIN customers on customers.cust_id = orders.cust_id WHERE orders.cust_id IS NULL

第七十一章 使用游标

  • 游标(cursor)是一个囤积在MySQL服务器上面包车型地铁数据库查询,能够在搜索的结果集中滚动到某意气风发行开展操作

  • 应用游标

    • 声称游标
    • 开垦游标
    • 动用游标抽出需求的行并管理
    • 关门游标

有关链接:

1.怎么着是事物管理

  事务管理(transaction processing)能够用来有限支撑数据库的完整性,它保险成批的MySQL操作依然完全施行,要么完全不实践。
此处就须求接受事务管理了。事务管理是生龙活虎种机制,用来管理必需成批施行的MySQL操作,以确定保证数据库不含有缺损的操作结果。利用事务管理,能够有限协理意气风发组操作不会中途结束,它们恐怕作为完整实践,恐怕完全不实行(除非鲜明提醒)。若无错误爆发,整组语句提交给(写到)数据库表。借使发生错误,则开展回降(废除)以平复数据库到某些已知且安全的意况。

  3、视图

  视图是假造的表。它只包蕴使用时动态检索数据的询问,换言之,视图存储查询语句。保存查询语句能够选取视图。视图的部分规规矩矩:

  - 与表名相近,视图必需独一命名。

  - 视图数目未有界定。

  - 为了创立视图,必得具有丰盛的探望权限。

  - 视图能够嵌套。

澳门金莎娱乐手机版,  - 视图查询中不要选拔GROUP BY。

  - 视图无法引得,也不可能有提到的触发器或暗中认可值。

-- 创建视图
-- CREATE VIEW viewname AS SELECT *
CREATE VIEW productcustomers AS SELECT cust_name, cust_contact, prod_id FROM customers, orders, orderitems WHERE customers.cust_id = orders.cust_id AND orderitems.order_num = orders.order_num;

CREATE VIEW orderitemsexpanded AS SELECT order_num, prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM orderitems;

-- 执行视图查询时会首先执行视图
SELECT cust_name, cust_contact FROM productcustomers WHERE prod_id ='FB';
SELECT * FROM orderitemsexpanded WHERE order_num = 20009;
-- 删除视图
-- DROP VIEW viewname;
DROP VIEW productcustomers;

第四十天问 使用触发器

  • 触发器是在事变发生时自动奉行的一条MySQL语句

    • DELETE
    • INSERT
    • UPDATE
  • 创制触发器

    • 唯生龙活虎的触发器名
    • 关联的表
    • 八方呼应的位移(DELETE、INSERT或UPDATE)
    • 哪天推行(管理在此之前依然之后)
    • 除非表才扶植触发器
    • 触发器按每一种表各种事件每一趟地定义
    • 每一个表各类事件每回只允许贰个触发器
    • 各种表最多扶助6个触发器(INSERT UPDATE 和 DELETE 的前头和事后)
// 创建一个名为 newproduct 的触发器,在 products 表每次 INSERT 之后输出 'Product added'
CREATE TRIGGER newproduct AFTER INSERT ON products 
FOR EACH ROW SELECT 'Product added';
  • 剔除触发器
    • DELETE TRIGGER newproduct;
  • 使用触发器
    • INSERT 触发器
      • 可以引用二个名称为 NEW 的虚构表,访谈被插入的行
      • 日常说来 BEFORE 触发器用于数据印证,AFTE中华V 触发器用于查询数据
    • DELETE 触发器
      • 能够援引三个名称为 OLD 的虚构表,访问被去除的行
    • UPDATE 触发器
      • 能够援引多个名称叫 OLD 的设想表,访问被更新以前的值
      • 能够援引三个名叫 NEW 的虚拟表,访谈被更新之后的值

MYSQL入门上学之生龙活虎:基本操作

2.事物管理的要紧术语:

• 事务(transaction)指一组SQL语句;
• 回降(rollback)指打消钦定SQL语句的长河;
• 提交(commit)指将未存款和储蓄的SQL语句结果写入数据库表;
• 保留点(savepoint)指事务管理中设置的有时占位符(placeholder),你能够对它发布回落(与回落整个事务管理分歧)。

二、存款和储蓄进度

第八十楚辞 处总管务管理

  • 事务管理用来保险数据库的完整性,它保险成批的MySQL操作依旧完全实施,要么完全不推行

  • 不是独具的数据库引擎都协助事务管理

    • MyISAM 不支持
    • InnoDB 支持
  • 多少个术语

    • 事务 一组SQL语句
    • 回落 废除内定SQL语句
    • 付出 将未存储的SQL语句结果写入数据库表
    • 保留点 指事务管理中安装的不经常占位符
  • 支配事务管理

    • 关键在于将SQL语句组分解为逻辑块,并显著规定数据何时应该回落,曾几何时不应当回落
  • 业务开首 START TRANSACTION

  • 回退 ROLLBACK

    • ROLLBACK 只好在三个事务管理Nelly用,在进行一条 START TRANSACTION 命令之后
    • INSERT UPDATE DELETE 可以回降
    • SELECT CREATE DROP 不能够回落
  • 提交 COMMIT

    • 为了保障 SQL 操作不是被一些管理,能够献身工作块中管理
    • 在事务管理块中,提交不会富含的提交,须求利用 COMMIT 显著的交付
    • 除非事务块中全身体语言句都不容争辩试行,才会实施 COMMIT
  • 当 ROLLBACK 和 COMMIT 试行后,事务会自动关闭

  • 选取保留点

    • 简易的 ROLLBACK 和 COMMIT 能够写入大概吊销所有事务管理,更眼花缭乱的或许要有个别付出或然回降
    • 增多占位符,假设急需回降,能够回减低到有些占位符(保留点)
    • 创立保留点 SAVEPOINT delete;
    • 回减低到保留点 ROLLBACK TO delete;

调控事物处理

  1、存款和储蓄进度

第三十九歌 全球化和本地化

  • 字符集 字母和标志的联谊
  • 编码 字符集的内部表示
  • 核查 为规定的字符如何相比较的授命
  • 可以给一定的表只怕列定义字符集和核对,不钦定的话就动用数据库私下认可

MYSQL入门上学之二:使用正则表明式寻找

1.使用ROLLBACK

说明:ROLLBACK命令用来回降MYSQL语句
实例:
  澳门金莎娱乐手机版 1

结果:最终一条SELECT语句显示该表不为空。
结论:
  1.ROLLBACK不能不在二个东西管理Nelly用,即在施行一条START TRANSACTION命令之后。
  2.事务管理用来管理INSERT、 UPDATE和DELETE语句。你不可能回落SELECT语句。

  1.简介

  存款和储蓄进程是积累在数据库目录中的大器晚成段证明性SQL语句。它疑似编制程序语言中的函数可能可实行代码块。通过声贝因美段可实践的SQL语句,既可防止止生机勃勃行行的输入SQL语句,又有何不可将这段SQL语木正复使用。

  存款和储蓄进度的帮助和益处:

  - 平时存款和储蓄进度有扶植抓牢应用程序的天性。

  - 存款和储蓄进度有辅助减少应用程序和数据库服务器之间的流量,因为应用程序不必发送八个冗长的SQL语句,而不能不发送存款和储蓄进度的名称和参数。

  - 存款和储蓄的顺序对其余应用程序都以可选择的和透亮的。

  - 存储的次第是平安的。

  存款和储蓄进程的欠缺:

  - 假诺使用多量积攒进度,那么使用那么些囤积进度的每一种连接的内存使用量将会大大增添。

  - 存款和储蓄进度的构造使得开荒具备复杂工作逻辑的积攒进程变得愈加辛苦。

  - 很难调节和测验存储过程。

  - 开拓和珍视存款和储蓄进度并不轻巧。

第三十天问 安全保管

  • 访谈调节
    • 客户对急需的数量有所确切的访谈权
    • root是最棒管理员,应该成立风流洒脱类别的账号,开放分裂的权杖,给相关的人手使用
  • 客户处理
    • MySQL的顾客账号和音信存款和储蓄在mysql表中
    • 创设客商
      • CREATE USER ben IDENTIFIED BY 'p@$$wOrd';
      • REMANE USER ben TO mark;
    • 去除客户
      • DROP USER mark;
    • 安装访问权限
      • 查阅客户权限 SHOW GRANTS FOSportage mark;
      • 利用 GRANT 设置权限
        • 要给予的权杖
        • 被予以权限的数据库只怕表
        • 用户名
      • 应用 REVOKE 撤废权限
      • GRANT 和 REVOKE 能够在多少个档次上决定访问权限
        • 万事服务器
        • 漫天数据库
        • 一定的表
        • 一定的列
        • 一定的囤积进程
      • 改革密码 SET PASSWORAV4D FOEscort mark = PASSWOCRUISERD('123456');
        • 不点名顾客名时,修改的是当前登陆客户的密码

2.COMMIT

说明:在事务管理块中,提交不会隐含地进行。为开展明显的交给,使用COMMIT语句
实例:
  澳门金莎娱乐手机版 2

含有事物关闭:当COMMIT或ROLLBACK语句试行后,事务会自动关闭(今后的校勘会隐含提交)。

  2.使用

-- 创建存储过程
DELIMITER // -- DELIMITER // 和DELIMITER;用于划分一块范围来声明存储过程
CREATE PROCEDURE GetAllProducts()-- CRAET PROCEDURE 创建一个存储过程
   BEGIN-- 存储过程的主体的开始
   DECLARE id INT(20) DEFAULT 1003;-- DECLARE variable datatype(size) DEFAULT value,声明局部变量;它只能在BEGIN和END之间生效
    SET id = 1001;-- 变量赋值
   SELECT * FROM products WHERE vend_id = id;-- SQL语句
   END //-- 存储过程的主体的结束,结尾用//
DELIMITER ;

-- 调用存储过程
CALL GetAllProducts();
-- 删除存储过程
DROP PROCEDURE IF EXISTS `GetAllProducts`;

-- 设置参数
DELIMITER //
CREATE PROCEDURE GetProductsByVendId(IN id INT(20), OUT outcome VARCHAR(20))-- 参数默认前缀是IN,即只允许调用函数时给参数传递值;OUT则表示将存储过程的运行结果传递出去,它是个单值参数;
    BEGIN
    SELECT count(*) INTO outcome FROM products WHERE vend_id = id;
    END //
DELIMITER ;
CALL GetProductsByVendId(1003, @outcome);-- 不直接打印结果,而是把结果传递给了全局变量@outcome
SELECT @outcome;-- 设置全局变量可以用SET variable = value;

-- 条件语句
/* IF condition THEN 
    sql
ELSEIF condition THEN
    sql
...
ELSE 
    sql
END IF */

DELIMITER //
CREATE PROCEDURE GetPriceLevel(IN prod_id CHAR(10), OUT price_level VARCHAR(20))
    BEGIN
    DECLARE price DECIMAL(8,2);
    SELECT prod_price INTO price FROM products WHERE products.prod_id = prod_id;

    IF price <= 5 THEN
        SET price_level = 'cheap';
    ELSEIF (price > 5 AND price <= 10) THEN
        SET price_level = 'ordinary';
    ELSE
        SET price_level = 'expensive';
    END IF;
    END //
DELIMITER ;
CALL GetPriceLevel('ANV01', @price_list);
SELECT @price_list;

-- 循环语句
/* WHILE condition DO
   statements
END WHILE */
-- 函数 略
-- 游标 https://www.yiibai.com/mysql/cursor.htm

第七十三章 数据库维护

  • 备份数据
    • mysqldump
    • mysqlhotcopy
    • BACKUO TABLE 或者 SELECT INTO OUTFILE
  • 数据库维护
    • ANALYZE TABLE 检查表键是或不是健康
    • CHECK TABLE
    • OPTIMIZE TABLE
  • 确诊运维难题
    • --help 展现扶持
    • --safe-mode 装载减去一些最佳配置的服务器
    • --verbose 呈现全文信息
    • --version 呈现版本信息后脱离
  • 翻开日志文件
    • 错误日志 hostname.err
    • 查询日志 hostname.log
    • 二进制日志 hostname-bin
    • 舒缓查询日志 hostname-show.log 记录推行缓慢的其余查询,优化数据库时很有用

MYSQL入门上学之三:全文本寻找

3.应用保留点

说明:简易的ROLLBACK和COMMIT语句就能够写入或吊销所有的事务管理。然而,只是对简易的事务管理本领那样做,更复杂的事务管理也许须要一些交给或回降。
开创保留点:

   澳门金莎娱乐手机版 3

  2、事务管理

第四十章 改进品质

  • 硬件
  • 内存分配、缓冲区大小
  • 关怀实行缓慢的经过
  • 试验搜索一流的SQL语句
  • 存储进程相像比一条条举办sql要快
  • 连天利用准确的数据类型
  • 无须检Sobi供给还多的数据
  • 理当如此接收索引
  • 应用SELECT + UNION 取代风度翩翩雨后玉兰片复杂的 O福特Explorer 条件
  • 每条准绳在一些准绳下都会被打破

4.改进默许的付骑行为

  私下认可的MySQL行为是自动提交全体更动。换句话说,任几时候你施行一条MySQL语句,该语句实在都以针对表试行的,何况所做的转移立刻生效。为提示MySQL不自动提交校订,要求接纳以下语句:
  澳门金莎娱乐手机版 4

  1.概念

  事务管理(transaction processing)用于保证SQL操作的完整性。它提供后生可畏种管理体制来应对SQL或许其余情状因素恐怕引致的要命结果。事务管理中的多少个术语:

  - 事务(transaction),指一组SQL语句。

  - 回降(rollback),指撤除钦赐SQL语句的长河。

  - 提交(commit),指将未存款和储蓄的SQL语句结果些人多少库表。

  - 保留点(savepoint),指事务管理中设置的权且占位符(placeholder),它能够回降。

  事务管理用来管理(能够回降)INSERT、UPDATE和DELETE语句,无法回落SELECT语句,也不能够回落CREATE大概DROP操作。

  在MySQL中,事务先河运用COMMIT或ROLLBACK语句先河专门的学业和得了。发轫和得了语句的SQL命令之间产生了大批量的业务。

MYSQL入门上学之四:MYSQL的数据类型

  2.ACID特性

  事务有以下八个正规属性的缩写ACID,经常被叫作:

  - 原子性: 指事务是四个不足再分叉的做事单元,事务中的操作照旧都发出,要么都不发出。

  - 后生可畏致性: 在作业发轫在此之前和事情截至之后,数据库的完整性限定没有被弄坏。那是说数据库事务无法破坏关周密据的完整性以至职业逻辑上的生龙活虎致性。

  - 隔开性: 多少个事情并发访谈时,事务之间是割裂的,多少个事务不该影响别的业务运营效果。

  - 长久性: 在业务完毕之后,该事务厅对数据库所作的修正便长久的保存在数据库之中,并不会被回滚。

  3.大概用例

-- MySQL默认出错自动回滚,没出错自动提交
BEGIN;
SAVEPOINT place;
INSERT INTO orders VALUES(20010, '2005-09-08 00:00:00', 10001);
ROLLBACK;-- ROLLBACK place
COMMIT

  在COMMIT提交在此以前,ROLLBACK语句来废除事务中所做的每风姿浪漫项职业,即使职业是成功的也能够裁撤,它能够平素撤废往业务的起来。在COMMIT提交之后,只可以接纳DELETE,INSERT或许UPDATE语句,ROLLBACK是充裕的。

MYSQL入门上学之五:MYSQL的字符集

三、访问调节和顾客权限管理

  内容摘自MySQL教程()

  1、访谈调控

  当客户端连接到服务器时,MySQL访谈调整有三个阶段:

  - 接连验证:连接到MySQL数据库服务器的客商端必要有一个卓有功能的顾客名和密码。别的,客商端连接的主机必得与MySQL授权表中的主机相相配。

  - 伸手验证:当连接成功创设后,对于客商端发出的每一个语句,MySQL会检讨客户端是或不是有所丰富的权位来实行该特定语句。 MySQL能够检查数据库,表和字段等第的权限。

  MySQL安装程序自动成立二个名叫mysql的数据库。 mysql数据库包含三个入眼的授权表(user、db、host、tables_priv和columns_priv),它们存款和储蓄了差异等第上对顾客权限的装置。并可由此GRANT和REVOKE等语句直接操作这个表。

表名 权限
mysql.user  包含用户帐户和全局权限列。MySQL使用user表来接受或拒绝来自主机的连接。 在user表中授予的权限对MySQL服务器上的所有数据库都有效
mysql.db  包含数据库级权限。MySQL使用数据库表来确定用户可以访问哪个数据库以及哪个主机。在db表中的数据库级授予的特权适用于数据库,所有对象属于该数据库,例如表,触发器,视图,存储过程等
mysql.table_priv  包含表级别权限,权限适用于表中所有列
mysql.columns_priv  授予的权限只适用于字段
mysql.procs_priv  包含存储函数和存储过程的权限

MYSQL入门上学之六:MYSQL的运算符

  2、客商权限管理

  MySQL8之上提供了role对象举办多客商权限管理。

/* GRANT
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    TO user_specification [, user_specification] ...
    [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
    [WITH with_option ...]
*/

-- 创建单个用户账户
-- CREATE USER username@localhost IDENTIFIED BY passwd
CREATE USER dbadmin@localhost IDENTIFIED BY 'pwd123';
-- 查看该用户权限
SHOW GRANTS FOR dbadmin@localhost;
-- 赋予该用户操作权限
GRANT ALL PRIVILEGES ON test.customer TO dbadmin@localhost;-- 可以到mysql.table_priv授权表中查看设置
-- 更新
FLUSH PRIVILEGES;
SHOW GRANTS FOR dbadmin@localhost;
SELECT * FROM mysql.user;
-- 删除权限
REVOKE ALL PRIVILEGES ON test.customer FROM dbadmin@localhost;

  dbadmin@localhost用来钦定账户名和主机地址。

  GRANT子句设置客商权限,包括对数码库级、表级、字段、查询语句等的安装。

权限 含义 全局 数据库 过程 代理
ALL [PRIVILEGES] 授予除了GRANT OPTION之外的指定访问级别的所有权限            
ALTER 允许用户使用ALTER TABLE语句 x x x      
ALTER ROUTINE 允许用户更改或删除存储程序 x x     x  
CREATE 允许用户创建数据库和表 x x x      
CREATE ROUTINE x x          
CREATE TABLESPACE 允许用户创建,更改或删除表空间和日志文件组 x          
CREATE TEMPORARY TABLES 允许用户使用CREATE TEMPORARY TABLE创建临时表 x x        
CREATE USER 允许用户使用CREATE USERDROP USERRENAME USERREVOKE ALL PRIVILEGES语句。 x          
CREATE VIEW 允许用户创建或修改视图 x x x      
DELETE 允许用户使用DELETE x x x      
DROP 允许用户删除数据库,表和视图 x x x      
EVENT 能够使用事件计划的事件 x x        
EXECUTE 允许用户执行存储过程/存储函数 x x        
FILE 允许用户读取数据库目录中的任何文件 x          
GRANT OPTION 允许用户有权授予或撤销其他帐户的权限 x x x   x x
INDEX 允许用户创建或删除索引 x x x      
INSERT 允许用户使用INSERT语句 x x x x    
LOCK TABLES 允许用户在具有SELECT权限的表上使用LOCK TABLES x x        
PROCESS 允许用户使用SHOW PROCESSLIST语句查看所有进程 x          
PROXY 启用用户代理            
REFERENCES 允许用户创建外键 x x x x    
RELOAD 允许用户使用FLUSH操作 x          
REPLICATION CLIENT 允许用户查询主服务器或从服务器的位置 x          
REPLICATION SLAVE 允许用户使用复制从站从主机读取二进制日志事件 x          
SELECT 允许用户使用SELECT语句 x x x x    
SHOW DATABASES 允许用户显示所有数据库 x          
SHOW VIEW 允许用户使用SHOW CREATE VIEW语句 x x x      
SHUTDOWN 允许用户使用mysqladmin shutdown命令 x          
SUPER 允许用户使用其他管理操作,如CHANGE MASTER TOKILLPURGE BINARY LOGSSET GLOBALmysqladmin命令 x          
TRIGGER 允许用户使用TRIGGER操作 x x x      
UPDATE 允许用户使用UPDATE语句 x x x x    
USAGE 相当于“无权限”          

MYSQL入门上学之七:MYSQL常用函数

MYSQL入门上学之八:数据库及表的基本操作

MYSQL入门上学之九:索引的简便操作

MYSQL入门上学之十:视图的基本操作

MYSQL入门上学之十生机勃勃:触发器的基本操作

MYSQL入门上学之十八:存款和储蓄进程的基本操作

MYSQL入门上学之十六:自定义函数的基本操作

MYSQL入门上学之十二:游标的基本操作

 

  事务管理(transaction processing)能够用来维护数据库的完整性,它保证成批的MySQL操作照旧完全实行,要么完全不实践。  www.2cto.com  

        但是不用全数的数据库引擎都扶植事务管理。MyISAM和InnoDB是三种最常使用的斯特林发动机。后面一个不帮助分明的事务管理管理,而前面一个援救。

生龙活虎、多少个事务管理相关的术语

        事务(transaction)指一组SQL语句;

        回降(rollback)指废除钦命SQL语句的进程;

        提交(commit)指将未存款和储蓄的SQL语句结果写入数据库表;

        保留点(savepoint)指事务管理中装置的不经常占位符(placeholder),可以对它发表回落(与回落整个事务管理不相同)。

 

二、调整事务管理

        处管事人务管理的关键在于将SQL语句组分解为逻辑块,并鲜明规定数据曾几何时应该回落,哪一天不该回落。

1、开头事务

        START TRANSACTION;

        使用如上语句标志事务的发端;

2、使用ROLLBACK

        ROLLBACK命令用来回落(撤除)MySQL语句:

        下边包车型客车示范操作,首先起初多个事情,然后删除了表test_inn中的全数内容,并查阅表中的内容,彰显表已被清空。但实践ROLLBACK回落事务后,重新查询表中的数据。表中的多少照旧还在:

[sql] 

mysql> start transaction;  

mysql> delete from test_inn;  

mysql> select * from test_inn;  

Empty set (0.00 sec)  

mysql> rollback;  

mysql> select * from test_inn;  

+------+------------+  

| id   | birthday   |  

+------+------------+  

|    1 | 2012-12-12 |  

|    1 | 0000-00-00 |  

|    1 | 2012-12-00 |  

|    1 | 0000-00-00 |  

+------+------------+  

mysql> show create table test_inn;  

+----------+----------------------------  

| Table    | Create Table  

+----------+----------------------------  

| test_inn | CREATE TABLE `test_inn` (  

  `id` int(11) DEFAULT NULL,  

  `birthday` date DEFAULT NULL  

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |  

+----------+----------------------------  

        注意:上例中表test_inn使用的是InnoDB引擎,若一个运用MyISAM引擎的表实行如上操作,则正是ROLLBACK后,能够窥见,数据依然被实实在在的清空。

3、使用COMMIT

        平常的MySQL语句皆以包括提交(implicit commit)的,即提交(写或保存)操作是活动进行的。

        可是,在事务管理块中,提交不会蕴藏进行。为进行通晓的交由,需求利用COMMIT语句。

        示例:

[sql] 

mysql> start transaction;  

mysql> delete from test_inn;  

mysql> commit;  

        当COMMIT或ROLLBACK语句试行后,运营的事务会自动关闭。  

4、使用保留点

        为了帮助回降部分事务管理,必需在事务管理块中适逢其会的职位放置保留点。

        成立保留点:SAVEPOINT sap_name;

        回落至保留点:ROLLBACK TO sap_name;

        释放保留点:RELEASE sp_name;

        保留点也能够在事务管理完毕(试行一条ROLLBACK或COMMIT)后活动释放。

5、改善默许的交由行为

        SET autocommit=0;

        autocommit标识是本着各种连接并不是服务器的。

参照:《MySQL必知必会》  

相关链接: MYSQL入门上学之黄金时代:基本操作 MYSQL入门上学之二...

本文由澳门金莎娱乐网站发布于数据大全,转载请注明出处:【澳门金莎娱乐手机版】事务处理,事务处理的

关键词:

查询各分类中最大自增ID,百度音乐接口的使用

假如现在有表结构: 百度公开有一个音乐接口,里面分好了频道类别。下面是3个接口的一个url地址。 查找事物处理来...

详细>>

使用游标过程中出现的错误,Oracle存储过程使用

上边包车型地铁意见是在选用游标的进度中做的日志。作者也是首先次利用,假如有怎样窘迫的地点请斟酌指正,我...

详细>>

交叉连接,mysql数据库操作

1.连接 有时候需要将连个表的数据合并成一个结果集来显示。为了解决这个问题,就需要用到JOIN连接。   mysql数据库操...

详细>>

Yum编译安装MySQL,MySQL数据库基于Centos7【澳门金莎

一、MySQL数据库的官方网址: https://www.oracle.com/ http://dev.mysql.com/doc/refman/5.7/en/linux-installation.html       //不同版本的...

详细>>