mysql 开发基础系列19 触发器】的更多相关文章

触发器是与表有关的数据库对象,触发器只能是针对创建的永久表,而不能是临时表. 1.1 创建触发器 -- 语法: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt trigger_time:是触发器的触发时间,可以是 before或after, before是检查约束前触发,而after是检查约束后触发. trigger_event:是触发器的触发事件,可以是 i…
一. char 与varchar比较 在上图的最后一行的值只适用在"非严格模式",关于严格模式后面讲到.在“开发基础系列4“ 中讲到CHAR 列删除了尾部的空格.由于char是固定长度,所以字的处理速度比varchar快,但也浪费存储空间,随着mysql 的不断升级,varchar数据类型的性能也在不断改进提高,varchar的字节是L+1字节,1字节是用来记录其长度的字节. char长度可选范围在0-255之间,也就是char最大能存储255个字符,varchar的长度范围为0-65…
一. 概述 存储过程和函数是事先经过编译并存储在数据库中的一段sql语句集合,可以简化应用开发人员的很多工作,减少数据在数据库与应用服务器之间的传输,提高数据处理效率是有好处的.存储过程和函数的区别在于函数必须有返回值,存储过程的参数可以使用in,out ,inout类型,而函数参数只能是in类型. 创建需要create routine 权限, 修改删除需要alter routine权限,执行需要execute权限. 1.1 创建存储过程,调用,删除 -- 创建 DELIMITER $$ CRE…
一.概述 与其它数据库不同,mysql 可以运行不同的sql model 下, sql model 定义了mysql应用支持的sql语法,数据校验等,这样更容易在不同的环境中使用mysql. sql model 常用来解决下面几类问题 (1) 通过设置sql mode, 可以完成不同严格程度的数据校验,有效地保障数据准备性. (2) 通过设置sql model 为ansi 模式,来保证大多数sql符合标准的sql语法,这样应用在不同数据库之间进行迁移时,则不需要对业务sql 进行较大的修改. (…
一.概述 在mysql 里不同存储引擎有不同的锁,默认情况下,表锁和行锁都是自动获得的,不需要额外的命令, 有的情况下,用户需要明确地进行锁表或者进行事务的控制,以便确保整个事务的完整性.这样就需要使用事务控制和锁定语句来完成. 特点 myisam innodb memory merge ndb 事务安全 支持 锁机制 表锁 表锁 行锁(默认) 表锁 表锁 行锁 页锁(默认) 1.  lock table 和nolock table lock table是锁定当前线程的表.如果当前表被锁定,其它…
1. 光标的使用(游标) 在存储过程和函数中可以使用光标对结果集进行循环的处理,光标使用包括光标的声明,open ,fetch,close. 下面在存储过程中使用一个光标, 这个举例中光标里的逻辑不重要, 重点在于如何使用光标: SELECT city_id FROM test.city DELIMITER $$ CREATE PROCEDURE proc_demo_cursor() BEGIN -- 定义变量,获取光标中的数据 ; -- 声明光标 DECLARE cur_city CURSOR…
一.概述 所有mysql 列类型都可以被索引,是提高select查询性能的最佳方法. 根据存储引擎可以定义每个表的最大索引数和最大索引长度,每种引擎对每个表至少支持16个索引,总索引长度至少为256字节. myisam和innodb引擎的表默认是btree索引,支持前缀索引,前缀索引长度跟存储引擎相关,对于myisam引擎 ,长度可达1000字节长,对于innodb 长度可达767字节,在使用多字节字符集的列指定前缀长度时要考虑. 支持全文索引(fulltext),只有myisam引擎支持,只限…
字符集是一套文字符号及其编码,比较规则的集合.第一个字符集是ascll(american standard code for information interchange).  1.  选择合适的字符集 对于数据库来说,字符集很重要,因为数据库存储的数据大部分是各种文字,字符集对数据库的存储,处理性能,以及日后系统的移植,推广都有会影响 如何选择呢? UTF-8: 如果应用要处理各种各样的文字,或将发布使用不同语言的国家或地区,就应该选择 Unicode字符集,对于mysql 目前就是UTF-…
一.  BloB和Text 1. 合成索引 合成索引可以提高大文本字段BLOB和Text的查询性能, 合成索引是在表中增加一个字段存放散列值,这种技术只能用于精确匹配的查询,可以使用md5()或sha1,crc23() 来生成散列值, 数值型散列值可以提高存储效率 .下面演示下 -- hash_value字段用来存储散列值 ),context BLOB, hash_value )) -- 插入数据 存放MD5散列值 , REPEAT(),MD5(context)); , REPEAT(),MD5…
一. 概述: InnoDB存储引擎提供了具有提交,回滚,和崩溃恢复能力的事务安全,对比MYISAM 的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引.它的特点有如下: 1. 自动增长列特点 (AUTO_INCREMENT) InnoDB表的自动增长列可以手工插入,但插入的值如果是空或者是0,则实际插入的将是自动增长的值,下面演示下 CREATE TABLE autoincre_demo ( i SMALLINT NOT NULL AUTO_INCREMENT,…