mysql 开发基础系列16 视图】的更多相关文章

一. 什么是视图视图是一种虚拟存在的表,行和列数据来自,定义视图的查询中使用的表,并且是在使用视图时动态生成的.优势有: 简单: 使用视图的用户完全不需要关心后面对应的表的结构,关联条件,筛选条件. 安全:使用视图的用户只能访问他们被允许查询的结果集. 数据独立: 源表增加列对视图没有影响,源表修改列名,则通过修改视图 对应好源表的列名来解决,不会造成对访问者的影响. 1.1 创建视图的操作 -- 创建视图 CREATE OR REPLACE VIEW view_city AS SELECT *…
一. char 与varchar比较 在上图的最后一行的值只适用在"非严格模式",关于严格模式后面讲到.在“开发基础系列4“ 中讲到CHAR 列删除了尾部的空格.由于char是固定长度,所以字的处理速度比varchar快,但也浪费存储空间,随着mysql 的不断升级,varchar数据类型的性能也在不断改进提高,varchar的字节是L+1字节,1字节是用来记录其长度的字节. char长度可选范围在0-255之间,也就是char最大能存储255个字符,varchar的长度范围为0-65…
一.概述 在mysql 里不同存储引擎有不同的锁,默认情况下,表锁和行锁都是自动获得的,不需要额外的命令, 有的情况下,用户需要明确地进行锁表或者进行事务的控制,以便确保整个事务的完整性.这样就需要使用事务控制和锁定语句来完成. 特点 myisam innodb memory merge ndb 事务安全 支持 锁机制 表锁 表锁 行锁(默认) 表锁 表锁 行锁 页锁(默认) 1.  lock table 和nolock table lock table是锁定当前线程的表.如果当前表被锁定,其它…
一. 概述 存储过程和函数是事先经过编译并存储在数据库中的一段sql语句集合,可以简化应用开发人员的很多工作,减少数据在数据库与应用服务器之间的传输,提高数据处理效率是有好处的.存储过程和函数的区别在于函数必须有返回值,存储过程的参数可以使用in,out ,inout类型,而函数参数只能是in类型. 创建需要create routine 权限, 修改删除需要alter routine权限,执行需要execute权限. 1.1 创建存储过程,调用,删除 -- 创建 DELIMITER $$ CRE…
一.概述 所有mysql 列类型都可以被索引,是提高select查询性能的最佳方法. 根据存储引擎可以定义每个表的最大索引数和最大索引长度,每种引擎对每个表至少支持16个索引,总索引长度至少为256字节. myisam和innodb引擎的表默认是btree索引,支持前缀索引,前缀索引长度跟存储引擎相关,对于myisam引擎 ,长度可达1000字节长,对于innodb 长度可达767字节,在使用多字节字符集的列指定前缀长度时要考虑. 支持全文索引(fulltext),只有myisam引擎支持,只限…
MyISAM是mysql 默认存储引擎,它不支持事务,外键.但访问速度快,对事务完整性没有要求或者以select,insert 为主的应用基本上都可以使用这个引擎.每个MyISAM在磁盘上存储成3个文件,文件名都和表名相同,扩展分别是:.frm(存储表定义).MYD(MYdata 存储数据).MYI( MYIndex 存储索引)数据文件和索引文件可以放置在不同的目录,平均分布IO,获取更快速度. 1.  指定索引文件和数据文件的路径 在创建表的时候通过data directory和 index…
一.概述 与其它数据库不同,mysql 可以运行不同的sql model 下, sql model 定义了mysql应用支持的sql语法,数据校验等,这样更容易在不同的环境中使用mysql. sql model 常用来解决下面几类问题 (1) 通过设置sql mode, 可以完成不同严格程度的数据校验,有效地保障数据准备性. (2) 通过设置sql model 为ansi 模式,来保证大多数sql符合标准的sql语法,这样应用在不同数据库之间进行迁移时,则不需要对业务sql 进行较大的修改. (…
1. 光标的使用(游标) 在存储过程和函数中可以使用光标对结果集进行循环的处理,光标使用包括光标的声明,open ,fetch,close. 下面在存储过程中使用一个光标, 这个举例中光标里的逻辑不重要, 重点在于如何使用光标: SELECT city_id FROM test.city DELIMITER $$ CREATE PROCEDURE proc_demo_cursor() BEGIN -- 定义变量,获取光标中的数据 ; -- 声明光标 DECLARE cur_city CURSOR…
字符集是一套文字符号及其编码,比较规则的集合.第一个字符集是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…