SQL的数据类型
只有一条路不能选择——那就是放弃的路;只有一条路不能拒绝——那就是成长的路。
命名规则
字段名必须以字母开头,尽量不要使用拼音
长度不能超过30个字符(不同数据库,不同版本会有不同)
不能使用SQL的保留字,如where,order,group
只能使用如下字符az、AZ、0~9、$ 等
Oracle习惯全大写:USER_NAME,mysql习惯全小写:user_name
多个单词用下划线隔开,而非java语言的驼峰规则
数字
- tinyint,smallint,mediuint,int,bigint-->整型
- tinyint 1字节 -128~127
- smallint 2字节 -32768~32767
- mediuint 3字节 -8388608~8388607
- int 4字节 -2147483648~2147483647
- bigint 8字节 +-9.22*10的18次方
- float,double,decimal-->浮点型
- float(m,d) 4字节 单精度浮点类型,m总个数,d小数位
- double(m,d) 8字节 双精度浮点类型,m总个数,d小数位
- decimal(m,d) decimal是存储为字符串的浮点数
- numberic(5,2) decimal(5,2)—也可以表示小数,表示总共5位,其中可以有两位小数
- decimal和numeric表示精确的整数数字
字符
- char长度固定,不足使用空格填充,最多容纳2000个字符,char(11)存储abc,占11位。查询速度极快但浪费空间
- char 0-255字节 定长字符串
- varchar变长字符串,最多容纳4000个字符,varchar(11)存储abc,只占3位。查询稍慢,但节省空间。Oracle为varchar2
- varchar 0-65535字节 边长字符串
- 大文本: 大量文字(不推荐使用,尽量使用varchar替代)
以utf8编码计算的话,一个汉字在u8下占3个字节
注:不同数据库版本长度限制可能会有不同
日期
- date 包含年月日
- date 4字节 日期,格式:2021-08-09
- time时分秒
- datetime包含年月日和时分秒
- timestamp时间戳,不是日期,而是从1970年1月1日到指定日期的毫秒数
图片
- blob 二进制数据,可以存放图片、声音,容量4g。早期有这样的设计。但其缺点非常明显,数据库庞大,备份缓慢,这些内容去备份多份价值不大。同时数据库迁移时过大,迁移时间过久。所以目前主流都不会直接存储这样的数据,而只存储其访问路径,文件则存放在磁盘上。