MySQL开发规范与实用技术交流-精品课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《MySQL开发规范与实用技术交流-精品课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 开发 规范 实用技术 交流 精品 课件
- 资源描述:
-
1、MySQL开发规范与实用技术交流姓名:金官丁 旺旺:Eugene198312内内 容容1.开发实用技术2.MySQL开发规范3.项目支持4.变更管理5.SQLREVIEW6.开发测试服务器说明7.MySQL相关项目建议8.简述InnoDB引擎锁与索引1.开发实用技术1.1自增字段定义1.2CHAR(N)或VARCHAR(N)中的N解释1.3字符串函数1.4日期操作函数1.5类型转换函数1.1 自增字段定义自增字段定义自增字段类型必须是整型,推荐类型为INT或者BIGINT类型。并且自增字段必须是主键或主键的一部分。1.2 CHAR(N)或或VARCHAR(N)中的中的N解释解释MySQL中此两
2、类字符串定义时候填写的长度N,不是字节数的意思,而是字符数的意思。我们MySQL所有数据库的字符集都为UTF8,字符集校对规则为UTF8_general_ci。对于中文汉字,实际存储的时候占三个字节,而数据或字母,则只占一个字节。例如:CREATETABELgl_user(usernameVARCHAR(40);则username最多能存储40个字符。1.3 字符串函数字符串函数MySQL中字符串连接方法,使用CONCAT()或CONCAT_WS()函数,语法如下:CONCAT(string1,string2,.)CONCAT_WS(separator,string1,string2,.)字符
3、串长度统计:LENGTH(string)#返回string所占的字节数CHAR_LENGTH(string)#返回string中的字符个数统计字符个数,就不区分是汉字还是字母或数字,也跟字符集没有关系,若统计的是字节数,则由字符是汉字、字母或数字类型,以及字符集共同决定。请各位牢记:我们所有的MySQL数据库都将会采用UTF8编码,所以一个汉字占3个字节,一个字母或数字占一个字节。1.4 日期操作函数日期操作函数 获取当前时间:NOW(),CURDATE()、CURTIME()其中,NOW()函数精确到秒,格式:YYYY-MM-DDHH:MM:SSCURDATE函数精确到天,格式:YYYY-M
4、M-DDCURTIME函数精确到秒,格式:HH:MM:SS日期数值的加减函数:DATE_ADD(date,INTERVALexprtype)DATE_SUB(date,INTERVALexprtype)常用的几种type类型:YEAR、MONTH、DAY、HOUR、MINUTE,其中expr可以为正数或负数,我们在开过程中,一般使用DATE_ADD()函数,若要作日期减去一个数字的方式,就使用负数。DATEDIFF(expr1,expr2),是返回开始日期expr1与结束日期expr2之间,相差的天数,返回值为正数或负数。返回日期某部分信息的函数:YEAR(expr1)返回日期expr1部分的
5、年份;MONTH(expr1)返回日期expr1部分的月份;DAY(expr1)返回expr1部分的天数;WEEKDAY(expr1)返回expr1对应的星期数字1.5 类型转换函数类型转换函数 字符串转换成日期方式,DATE_FORMAT()或STR_TO_DATE(),两个函数的格式如下:DATE_FORMAT(expr1,format)STR_TO_DATE(expr1,format)常用的日期格式YYYY-MM-DDHH:MM:SS对应的format为%Y-%m-%d%H:%i:%S通用的类型转换函数:CAST(exprAStype)CONVERT(expr,type)CONVERT(
6、exprUSINGtranscoding_name)2.MySQL开发规范2.1字段定义规范2.2绑定变量和替代变量使用规范2.3数据类型转换规范2.4SELECT*的使用规范2.5字段上添加函数使用规范2.6表连接规范2.7分页查询规范2.8特殊操作符使用规范2.9特殊函数使用规范2.1 字段定义规范字段定义规范 MySQL中用到的相关列数据类型存储需求与范围描述信息如下表:列类型表达的范围存储需求TINYINT(M)UNSIGNED ZEROFILL-128到127 或 0到2551个字节SMALLINT(M)UNSIGNED ZEROFILL-32768到32767 或 0到655352
7、个字节INT(M)UNSIGNED ZEROFILL-2147483648到2147483647 或 0到42949672954个字节BIGINT(M)UNSIGNED ZEROFILL-9223372036854775808到9223372036854775807 或 0到18446744073709551615 8个字节DECIMAL(M,D)UNSIGNED ZEROFILL整数最大位数(M)为65,小数位数最大(D)为30变长DATEYYYY-MM-DD3个字节DATETIMEYYYY-MM-DD HH:MM:SS(1001年到9999年的范围)8个字节TIMESTAMPYYYY-MM
8、-DD HH:MM:SS(1970年到2037年的范围)4个字节CHAR(M)0M=255(建议CHAR(1)外,超过此长度的用VARCHAR)M个字符(所占空间跟字符集等有关系)VARCHAR(M)0M65532/NM个字符(N大小由字符集,以及是否为中文还是字母数字等有关系)TEXT64K个字符所占空间跟字符集等有关系详细说明:详细说明:所有动态长度字符串全部使用VARCHAR类型,类似于状态,有限类别的字段,也使用可以比较明显表示出实际意义的字符串,而不应该使用INT之类的数字来代替;2.固定长度的字符串使用CHAR类型,所有单个字符的全部使用CHAR类型,而不应该使用VARCHAR类型
9、;3.仅仅当字符数量可能超过20000个的时候,可以使用TEXT类型来存放字符类数据。所有使用TEXT类型的字段必须和原表进行分拆,与原表主键单独组成另外一个表进行存放;4.需要精确到时间(年月日时分秒)的字段可以使用DATETIME或TIMESTAMP,但请注意各自能表达的范围,以及是否需要用到TIMESTAMP的特性;5.所有只需要精确到天的字段全部使用DATE类型,而不应该使用TIMESTAMP或者DATETIME类型;6.自增序列类型的字段只能使用INT或者BIGINT,且明确标识出为无符号型(UNSIGNED),除非确实会出现负数,仅当该字段数字取值会超过42亿,才使用BIGINT类
10、型;2.2 绑定变量和替代变量使用规范绑定变量和替代变量使用规范基本原则:所有Query的Where条件中的变量,都需要使用绑定变量来实现,此要求并不完全是基于性能的考虑,更多是基于安全方面的考虑,如若有任何不使用绑定变量的需求,都必须通过安全部门的审核并征得同意。详细说明:.在iBatis的SqlMap文件中绑定变量使用“#var_name#”表示,替代变量使用$var_name$”;所有需要动态OrderBy条件的Query,在使用替代变量过程中,需要将可能传入的内容以枚举类写死在代码中,禁止接受任何外部传入内容;.对于不变的常量条件,请使用常量而不是变量;.IN子句,使用Iterate+
11、数组类型变量的方式实现绑定变量而不是通过代码拼接Query语句,例如:#userIds#iBatis会生成t.user_idin(1,2,3,4,5.)的语句2.3 数据类型转换规范数据类型转换规范基本原则:基本原则:在所有Query的Where条件中必须使用和过滤字段完全一致的数据类型,杜绝任何隐式类型转换,避免造成因为数据类型不匹配而导致Query执行计划的出错,造成性能问题.详细说明:详细说明:1所有Where条件的字段上不允许使用函数做类型转换,如有需要转换类型,只能转换过滤值,而不是转换字段.2最为常见的隐式类型转换常见于时间类型与字符串类型之间,建议所有时间类型字段在iBatis中
展开阅读全文