MySQL基础之数据类型和运算符

时间:2021-11-03 13:05:55

早些年学习MySQL的笔记,发在博客园上,以便后续回顾学习:

1. 数据类型为int(11),注意到后面的数字11,这表示的是该数据类型指定的显示宽度,指定能够显示的数值中数字的个数。其他数据类型也可以在定义表结构的时候指定所需要的显示宽度,如果不指定,则系统为每一种类型指定默认的宽度。
2. MySQL使用浮点数和定点数表示小数。单精度浮点类型有两种:单精度浮点型(float)和双精度浮点型(double)。定点类型只有一种:decimal。浮点类型和定点类型都可以用(M,N)来表示,其中M称为进度,表示总共的位数;N称为标度,表示的是小数的位数。
3. 不论是定点还是浮点类型,如果用户指定的进度超出了进度范围,这回四舍五入进行处理。
4. 浮点数相对于定点数的有点是在长度一定的情况下,浮点数能够表示更大的数据范围,它的缺点是会引起进度问题。
5. MySQL中,定点数以字符串的形式存储,在对进度要求比较高的时候(比如货币和科学计算)使用decimal的类型比较好,另外两个浮点数进行减法和比较运算时也容易出现问题,所以在使用浮点型时需要注意,尽避免做浮点数比较。
6. 保存为YEAR类型时,既可以传入整型,也可以传入字符型。若是插入超过了YEAR类型的取值范围,值将被转换为2000。
7. 保存为TIME类型时,如果不合法,存储时将变为00:00:00。
8. 可以使用字符串类型或者数字类型的数据插入DATE类型数据,只要符合DATE的日期格式即可。
9. MySQL允许“不严格”的语法:任何标点符号都可以用作日期部分之间的间隔符。例如“98-10-19”、“98.10.18”、“98/10/19”和“98@10@19@”都是等价的,这些字也是可以正确的插入到数据库的。
10. 插入DATETIME类型数据时,可以使用字符串类型和数字类型的数据插入,只要符合DATETIME的日期格式即可。例如:“YYYY-MM-DD HH:MM:SS”、“YYYYMMDDHHMMSS”、或者用数字YYYYMMDDHHMMSS、YYMMDDHHMMSS表示均可。
11. MySQL允许“不严格”语法:任何标点符号都可以用作日期部分或者时间部分之间的间隔,例如:“98-10-19 12:12:12”、“98.10.19 12+12+12”、“98@10@9 12*12*12”、“98#10#19 12:12:12”都是等效且被允许的。
12. 字符串类型用来存储字符串数据,除了可以存储字符串数据外,还可以存储其他数据,比如图片、声音的二进制数据。
13. MySQL至此两类字符型数据:文本字符串和二进制字符串。
14. VARCHAR、TEXT、BLOB都是变长类型,对于其存储需求取决于列值得实际长度,而不是取决于类型的最大可能长度。例如,一个VARCHAR(10)能保存最大长度为10个字符的一个字符串,实际的存储需要字符串实际长度L加上一个字节(用于记录字符串的长度)。对于字符串“abcd”,L是4,而存储需要5个字节。
15. CHAR(M)为固定长度的字符串,在定义时指定字符串长度。当保存时在右侧填充空格到指定的长度。M表示列长度,M的范围是0~255个字符。当检索到CHAR值时,尾部的空格将被删除。
16. VARCHAR(M)是可变长的字符串,M表示最大列长度。M的范围是0~65535.VARCHAR在只保存和检索时尾部的空格人保留。
17. 等于运算符(=)不能用于null的判断,但是安全等于运算符(<=>)可以。
18. 用LIKE匹配字符时:
  “%”匹配任何数目的字符,甚至包括零字符
  “_”只能匹配一个字符。
19. 如果想删除表中所有记录,除了使用DELETE FROM 表名 表名 的方式之外,还可以使用TRUNCATETABLE语句,TRUNCATE将直接删除原来的表,并重新创建一个新的表。TRUNCATE直接说删除表而不是删除记录,因此执行速度比DELETE快。