1、MySQL基础技能与原理基础技能MySQL DBA Team彭立勋( http:/)内容概要 1. MySQL开发流程规范 2. MySQL数据类型与处理函数 3. MySQL高级特性 4. MySQL与 Oracle差异比较 5. MySQL调优基础MySQL开发流程规范 线上文档: B2B-OPS 命名规范:数据库 /表 /字段命名 对象设计规范:数据类型,表设计,约束使用 SQL编写规范:绑定变量与替代变量,数据类型转换,表连接,分页查询等MySQL数据类型与处理函数 数值类型与处理函数 字符类型与处理函数 时间类型与处理函数 类型处理小技巧 官方文档: http:/ http:/ BI
2、T(M):位字段类型。 M表示每个值的位数,范围为从 1到 64。 M默认为 1。 TinyINT(M): 带符号的范围是 -32768到 32767。 无符号的范围是 0到 65535。 1字节 。 SmallINT(M): 带符号的范围是 -32768到 32767。 无符号的范围是 0到 65535。 2字节 。 MediumINT(M): 带符号的范围是 -8388608到 8388607。 无符号的范围是 0到 16777215。 3字节 。 INT(M): 带符号的范围是 -2147483648到 2147483647。 无符号的范围是 0到 4294967295。 4字节 。 B
3、igINT(n): 带符号的范围是 -9223372036854775808到 9223372036854775807。 无符号的范围是 0到 18446744073709551615。 8字节 。 Decimal(m,n): M是总位数, D是小数点 (标度 )后面的位数。实际上是 VARCHAR存储。数值类型与处理函数 算数符运算: SELECT expr; 数学函数: ABS(x), x的绝对值。 CEIL(x),返回不小于 X 的最小整数值。 FLOOR(x),返回不大于 X的最大整数值 CRC32(x),计算循环冗余码校验值。 RAND(),返回 01直接随机浮点数。 SIGN(x)
4、,返回 x的符号 TRUNCATE(X,D),返回 X被舍去至小数点后 D位的数字。字符类型与处理函数 Char(M): 长度固定为创建表时声明的长度 M。长度可以为从 0到 255的任何值。 当保存 CHAR值时,在它的右边填充空格以达到指定的长度。 当检索到 CHAR值时,尾部的空格被删除。 在存储或检索过程中不进行大小写转换。 占用空间 (M*每字符字节长度 ), UTF8为 3字节。 VarChar(M): 列中的值为可变长字符串。长度可以指定为 0到 65,535之间的值。 VARCHAR的最大有效长度由最大行大小和使用的字符集确定。 整体最大长度是 65,532字节。 VARCHA
5、R值保存时不进行填充。 当值保存和检索时尾部的空格仍保留,符合标准 SQL。 占用空间 (M*每字符字节长度 +长度记录位 )。字符类型与处理函数 CHAR_LENGTH(str):返回值为字符串 str的长度,长度的单位为字符。 LENGTH(str):返回值为字符串 str 的长度,单位为字节。 CONCAT(str1,str2,.):返回结果为连接参数产生的字符串。 CONCAT_WS(separator,str1,str2,.):第一个参数是其它参数的分隔符。 分隔符的位置放在要连接的两个字符串之间。 LEFT(str,len):返回从字符串 str开始的 len最左字符。 RIGHT
6、(str,len);从字符串 str 开始,返回最右 len 字符。 SUBSTRING(str,pos,len):从字符串 str返回一个长度同 len字符相同的子字符串, 起始于位置 pos。 LOWER(str):返回字符串 str 变为小写字母的字符。 UPPER(str):返回字符串 str转化为大写字母的字符。日期类型与处理函数 TIMESTAMP:以 YYYY-MM-DD HH:MM:SS格式检索和显示 TIMESTAMP值。 支持的范围为 1970-01-01 00:00:00到 2037年。 占用 4字节 DATETIME:以 YYYY-MM-DD HH:MM:SS格式检索和
7、显示 DATETIME值。 支持的范围为 1000-01-01 00:00:00到 9999-12-31 23:59:59。 占用 8字节 。 DATE:用 YYYY-MM-DD格式检索和显示 DATE值。 支持的范围是 1000-01-01到 9999-12-31。 占用 4字节 。日期类型与处理函数 DATE_SUB/DATE_ADD:对时间进行加减。 CURDATE():将当前日期按照 YYYY-MM-DD 或 YYYYMMDD 格式的值返回。 NOW():返回当前日期和时间值, 其格式为 YYYY-MM-DD HH:MM:SS 或 YYYYMMDDHHMMSS。 组合使用: mysql SELECT DATE_ADD(1998-01-02, INTERVAL 31 DAY); - 1998-02-02