MySQL中的sql语法及部分内在实现
2014-10-26 22:15
281 查看
1、DECLARE仅被用在BEGIN ... END复合语句里,并且必须在复合语句的开头,在任何其它语句之前,所以在写存储过程时,变量定义必须写在start transaction之前;
2、用户变量名在MySQL 5.1中是对大小写不敏感的;
3、有些语句不能被回滚。通常,这些语句包括数据定义语言(DDL)语句,比如创建或取消数据库的语句,和创建、取消或更改表或存储的子程序的语句。您在设计事务时,不应包含这类语句。如果您在事务的前部中发布了一个不能被回滚的语句,则后部的其它语句会发生错误,在这些情况下,通过发布ROLLBACK语句不能 回滚事务的全部效果;
4、AUTO_INCREMENT列在InnoDB里如何工作:如果你为一个表指定AUTO_INCREMENT列,在数据词典里的InnoDB表句柄包含一个名为自动增长计数器的计数器,它被用在为该列赋新值。自动增长计数器仅被存储在主内存中,而不是存在磁盘上。
自动增长计数器被初始化之后,如果用户插入一个明确指定该列值的行,而且该值大于当前计数器值,则计数器被设置为指定列值。如果没有明确指定一个值,InnoDB给计数器增加一,并且赋新值给该列。
当访问自动增长计数器之时,InnoDB使用专用的表级的AUTO-INC锁定,该锁持续到当前SQL语句的结束而不是到业务的结束。引入了专用锁释放策略,来为对一个含AUTO_INCREMENT列的表的插入改善部署。两个事务不能同时对同一表有AUTO-INC锁定。
注意,如果你回滚从计数器获得数的事务,你可能会在赋给AUTO_INCREMENT列的值的序列中发现间隙。
在CREATE TABLE和ALTER TABLE语句中,InnoDB支持AUTO_INCREMENT = n 表选项来设置计数器初始值或变更当前计数器值。因在本节早先讨论的原因,这个选项的影响在服务器重启后就无效了。
因为AUTO_INCREMENT值在其它值赋值之后被生成,所以任何在赋值时对AUTO_INCREMENT列的引用都会返回0。
2、用户变量名在MySQL 5.1中是对大小写不敏感的;
3、有些语句不能被回滚。通常,这些语句包括数据定义语言(DDL)语句,比如创建或取消数据库的语句,和创建、取消或更改表或存储的子程序的语句。您在设计事务时,不应包含这类语句。如果您在事务的前部中发布了一个不能被回滚的语句,则后部的其它语句会发生错误,在这些情况下,通过发布ROLLBACK语句不能 回滚事务的全部效果;
4、AUTO_INCREMENT列在InnoDB里如何工作:如果你为一个表指定AUTO_INCREMENT列,在数据词典里的InnoDB表句柄包含一个名为自动增长计数器的计数器,它被用在为该列赋新值。自动增长计数器仅被存储在主内存中,而不是存在磁盘上。
自动增长计数器被初始化之后,如果用户插入一个明确指定该列值的行,而且该值大于当前计数器值,则计数器被设置为指定列值。如果没有明确指定一个值,InnoDB给计数器增加一,并且赋新值给该列。
当访问自动增长计数器之时,InnoDB使用专用的表级的AUTO-INC锁定,该锁持续到当前SQL语句的结束而不是到业务的结束。引入了专用锁释放策略,来为对一个含AUTO_INCREMENT列的表的插入改善部署。两个事务不能同时对同一表有AUTO-INC锁定。
注意,如果你回滚从计数器获得数的事务,你可能会在赋给AUTO_INCREMENT列的值的序列中发现间隙。
在CREATE TABLE和ALTER TABLE语句中,InnoDB支持AUTO_INCREMENT = n 表选项来设置计数器初始值或变更当前计数器值。因在本节早先讨论的原因,这个选项的影响在服务器重启后就无效了。
因为AUTO_INCREMENT值在其它值赋值之后被生成,所以任何在赋值时对AUTO_INCREMENT列的引用都会返回0。
相关文章推荐
- 用SQL实现学籍管理系统相关的表操作(转载来的部分已修改)用mysql5.5做的
- 【原创】6. 在MYSQL++中实现SQL语法中的NULL
- MySQL中文参考手册--MySQL教程(1)--SQL 语法参考
- MySQL基础入门-05MySQL的SQL语法
- php+sqlrelay+mysql实现连接池及读写负载均衡
- 其他数据库模拟实现mysql的limit语法
- java调用mysql的工具类实现数据库远程备份,还原,生成创建表的sql脚本
- MySQL的distinct group by SQL语法用法说明
- mysql sql语法问题(2)
- 利用反射+特性实现简单的实体映射数据库操作类(还未做自动生成SQL语句部分)
- 3大数据库(Sql-Server,MySql和Oracle)的分页SQL语句实现
- 最新sql基本语法大全(mysql)
- 精讲MySQL 数据库的 SQL 语法参考
- 主流数据库之间对SQL:2003标准的不同实现方法比较(第二部分 结果集排序)
- 主流数据库之间对SQL:2003标准的不同实现方法比较(第二部分 结果集排序)
- 3大数据库(Sql-Server,MySql和Oracle)的分页SQL语句实现
- mysql的sql语法
- MySQL - SQL语句语法(数据定义语句)
- 主流数据库之间对SQL:2003标准的不同实现方法比较(第四部分 查询结果集中间n行数据)
- MySQL中的两个SQL问题的实现方案