zoukankan      html  css  js  c++  java
  • Mysql:语法:数据类型、文字常量

    数字类型:对于整数允许进行显示宽度的设定,这个设定并不影响其值的实际范围;对于bit数、浮点、定点小数,m是指其有效数字位数,影响值的范围。

    • serial:bigint unsigned not null auto_increment unique
    • serial default value: not null auto_increment unique
    • bit[(m:=1:64)]  m默认为1
    • tinyint[(m)] [unsigned] [zerofill]
    • {bool|boolean}:tinyint[1]  --实际上 true=1 false=0,在存储时,任何非0的值都是true(1)
    • smallint[(m)] [unsigned] [zerofill]
    • mediumint[(m)] [unsigned] [zerofill]
    • {int|integer}[(m)] [unsigned] [zerofill]
    • bigint[(m)] [unsigned] [zerofill]
    • float[(m,d)] [unsigned] [zerofill]:--缺省依赖于硬件
    • float[(p)]:--为了odbc而提工的类型
    • {double [precision]}[(m,d)] [unsigned] [zerofill]:--缺省依赖于硬件
    • {dec|decimal|numeric|fixed}[(m:=10:65,d:0:30)] [unsigned] [zerofill] m默认为10,d默认为0

    日期时间类型

    • date :'1000-01-01':'9999-12-31'  显示: 'YYYY-MM-DD' 输入:{文字常量|数字}
    • datetime :'1000-01-01 00:00:00':'9999-12-31 23:59:59'  显示: 'YYYY-MM-DD HH:MM:SS' 输入:{文字常量|数字}
    • timestamp :'1970-01-01 00:00:01'UTC:'2038-01-09 03:14:07'UTC  显示: 'YYYY-MM-DD HH:MM:SS' 输入:{文字常量|数字}
      • timestamp存储的值是自'1970-01-01 00:00:00'依赖经过的秒数,但它却无法表示'1970-01-01 00:00:00',因为 他的值为0时有其他的含义表示'0000-00-00 00:00:00'
      • timestamp的主要作用就是自动更新现有记录的insert或update的时间:表里第一个timestamp列会自动在这两种操作发生时更新,或者 为他赋值null时。当然你也可以在显示给他符其他值!
      • 通常timestamp列总是作为19位的字符串,你可以通过“+0”让他隐式转换为bigint值
    • time '-838:59:59':'838:59:59' 显示:'HH:MM:SS' 输入:{文字常量|数字}
    • year[(4|2)]:'1901':'2155'   默认为4位长度,2位长度的范围为'1970:2069'

    文本类型

    1. 通常文本类型有以下通用特性
    2. 文本类型的长度是字符长度,不是字节长度
    3. 文本类型具有[character set|charset]字符集属性、[collate]排序规则属性、[binary]属性——该属性会改变文本类型的数据类型
    4. ascii 是 character set latin1的简称
    5. unicode 是 character set ucs2的简称
    6. binary 是指定character set 的二进制排序规则,这将是字符串的排序、比较依据字符集的数字值进行
    • [national] {character|char}[(m:1:255)] [character set cs_name] [collate c_name]  --mysql 允许m=0的char,仅仅是考虑兼容部分应用程序而已,他的值只能是null或‘’。char的尾随空格是否删除是受pad_char_to_full_length控制的
    • nchar 是 national char的简称,使用utf8字符集
    • [national] {character varying|varchar} [(m:1:65535)] [character set cs_name] [collate c_name]  --其最大长度受行大小和其他列、字符集影响的。每个varchar列还额外占用1-2个字节寸草其实际长度
    • nvchar 是 national varchar的简称,使用utf8字符集
    • binary(m)  --和char类似,只是其存储的是二进制的串,单位为字节
    • varbinary(m)  --和char类似,只是其存储的是二进制的串,单位为字节
    • tinyblob  --最大存储2^8-1个bytes,另外1个字节的值存储实际长度
    • tinytext [character set cs_name] [collate c_name]  --最大存储2^8-1个char,另外1个字节的值存储实际长度
    • blob  --最大存储2^16-1个bytes,另外2个字节的值存储实际长度
    • text [character set cs_name] [collate c_name]  --最大存储2^16-1个char,另外2个字节的值存储实际长度
    • mediumblob  --最大存储2^24-1个bytes,另外3个字节的值存储实际长度
    • mediumtext [character set cs_name] [collate c_name]  --最大存储2^24-1个char,另外4个字节的值存储实际长度
    • longblob  --最大存储2^32-1个bytes,另外3个字节的值存储实际长度
    • longtext [character set cs_name] [collate c_name]  --最大存储2^32-1个char,另外4个字节的值存储实际长度
    • enum ('v1','v2',.....)  [character set cs_name] [collate c_name]  --最多65535个不同的值,enum字符串对象只能具有{列表中的|null|''}中的1个值,其内部已整数表示
    • set('v1','v2',.....)  [character set cs_name] [collate c_name]  --最多64个不同的值,enum字符串对象只能具有列表中的的任意个值,其内部已整数表示

    数据类型的默认值

    • 表列可以通过default关键字为列指定默认值
    • 默认值鼻必须是常量,例外的是timestamp列:可以指定current_timestamp
    • 如果列可以为null 可以显示指定 default null
    • 如果列不可以为null,在insert、replace、update等操作里。mysql看是否启用strict sql mode。严格模式下会出现错误;非严格模式下:
    1. 数字为0,当数字类型为auto_increment时,为下一个值
    2. timestamp 为当前的日期时间
    3. 其他日期时间类型为适当的”零“值
    4. enum型为第一个值
    5. 其他字符类型为空串 ''

    字符常量:[_字符集名称]'字符序列....'   [排序规则名称]  --是可以识别"\"转义字符的c风格字符串

    • 双引号字符串表示风格,不推荐。
    • 转义字符是大小写敏感的。不是转义字符将不做转义
    • N'字符序列' = n'字符序列' = _utf8'字符序列'

    数字常量:还用说吗!!

    十六进制文字常量:

    • {X|x}'{[0-9a-fA-F]}*'   --标准sql风格
    • 0x{[0-9a-fA-F]}*  --odbc标准风格
    • 注意:十六进制字符常量在数字环境会转换为bigint型,在文本环境会转换为character字符串

    布尔型:true、false  --不区分大小写的

    二进制文字常量:

    • b'{[01]}*'  --标准sql风格
    • 0b{[01]}*  --odbc风格
    • 注意:二进制文字常量总是作为二进制字符串;要想当作数字使用,必须显式的cast

    NULL:未知或没有数据的意思,不等于0 或空字符串 或 ascii的nul(ascii值为0)

    • 不区分大小写
    • 注意可以使用"\N"来表示

    相关知识:

    • ansi_quotes设置
    • 字符集
    • 排序规则
    • hex()、bin()、oct()、cast()函数
  • 相关阅读:
    使用karma和jasmine进行angularjs单元测试
    NHibernate之(23):探索NHibernate二级缓存(上)
    NHibernate之(22):探索NHibernate一级缓存
    NHibernate之(21):探索对象状态
    NHibernate之(20):再探SchemaExport工具使用
    NHibernate之(19):初探SchemaExport工具使用
    NHibernate之(18):初探代码生成工具使用
    NHibernate之(17):探索NHibernate中使用存储过程(下)
    NHibernate之(16):探索NHibernate中使用存储过程(中)
    NHibernate之(15):探索NHibernate中使用存储过程(上)
  • 原文地址:https://www.cnblogs.com/jinzhenshui/p/1495323.html
Copyright © 2011-2022 走看看