DAY3 MySQL学习笔记
DDL-表操作-数据类型
MySQL中数据类型主要分为三类:数值型、字符串型、日期时间类型
数值类型
分类 | 类型 | 大小 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
---|---|---|---|---|---|
TINTING | 1byte | (-128,127) | (0,255) | 小整数值 | |
SMALLINT | 2bytes | (-32768,32767) | (0,65536) | 大整数值 | |
MEDIUMINT | 3bytes | (-8388608,8388607) | (0,16777215) | 大整数值 | |
INT或INTEGER | 4bytes | (-2147483648,2147483647) | (0,4294967295) | 大整数值 | |
BIGINT | 8bytes | (-263,263-1) | (0,2^64-1) | 极大整数值 | |
FLOAT | 4bytes | (-3.402823466 E+38,3.402823466351 E+38) | 0和(1.175494351 E-38,3.402823466 E+38) | 单精度浮点数值 | |
DOUBLE | 8bytes | (-1.7976931348623157 E+308,1.7976931348623157 E+308) | 0和(2.2250738585072014 E-308,1.7976931348623157 E+308) | 双精度浮点数值 | |
DECIMAL | 依赖于M(精度)和D(标度)的值eg:123.45精度为5标度为2,精度是整个数的位数,标度是小数位数 | 依赖于M(精度)和D(标度)的值 | 小数值(精确定点数) |
age TINTING UNSIGNED描述年龄
score double(4,1) 其中double类型在括号里写的分别是精度和标度,描述的为100.0,精度为4,标度为1
字符串类型
分类 | 类型 | 大小 | 描述 |
---|---|---|---|
CHAR | 0-255 bytes | 定长字符串,char(10)其中10代表当前存储最多为10个字符,一旦超过10 那就会报错,定长的意思是没有使用到10个字节都会按照10个字节算,多余的部分用空格补上,性能好 | |
VARCHAR | 0-65535 bytes | 变长字符串,varchar(10),变长的意思是存储1个字符就用1个字符的空间,存储2个就是2个空间,存储多少就是多少,根据存储内容计算存储占用空间,相对char性能较差,因为它要计算占用的空间 | |
TINYBLOB | 0-255 bytes | 不超过255个字符的二进制数据 | |
TINYTEXT | 0-255 bytes | 短文本字符串 | |
BLOB | 0-65 535 bytes | 二进制形式的长文本数据 | |
TEXT | 0-65 535 bytes | 长文本数据 | |
MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 | |
MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 | |
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 | |
LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
二进制数据:视频、音频、安装包(一般会用专门的文件服务器用于存储)
如何选择char和varchar?
用户名nameuser(一般不能超过50个字):选择varchar更好,用户可能会输入1位,或者多位,那根据不同的输入进行调整会更好
性别gender:char更好,因为输入的不是男就是女,在存储的时候就是占用1个空间,那性能会更好
日期时间类型
分类 | 类型 | 大小 | 范围 | 格式 | 描述 |
---|---|---|---|---|---|
DATE | 3 | 1000-01-01至9999-12-31 | YYYY-MM-DD | 日期值 | |
TIME | 3 | -838:59:59至838:59:59 | HH:MM:SS | 时间值或持续时间 | |
YEAR | 1 | 1901至2155 | YYYY | 年份值 | |
DATETIME | 8 | 1000-01-01 00:00:00至9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 | |
TIMESTAMP | 4 | 1970-01-01 00:00:01至2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |
描述某人生日
birthday用data更准确
birthday data
案例实操
根据需求创建表(设计合理的数据类型、长度)
设计一张员工信息表,要求如下:
1.编号(数字)
2.员工工号(字符串类型,不超过10位)
3.员工姓名(字符串类型,不超过10位)
4.性别(男、女,存储1个汉字)
5.年龄(正常人年龄,不可能存在负数)
6.身份证(二代身份证号均为18位,身份证中有X这样的字符)
7.入职时间(取值年月日即可)
自己写代码
create table staff_infor(
id int comment '编号',
job name char(10) comment '工号',
name varchar(10) comment '姓名',
gender char(1) comment '性别',
age tinying comment '年龄',
identity card longtext comment '身份证',
entry time data comment '入职时间'
) comment '员工信息表';
未执行
正确代码
create table emp(
id int comment '编号',
workno varchar(10) comment '工号',
name varchar(10) comment '姓名',
gender char(1) comment '性别',
age tinying unsigned comment '年龄',
idcard char(18) comment '身份证',
entrydata comment '入职时间'
) comment '员工表';
desc emp; --查看表内容
日记:对于表的数据类型还有些不太会选择使用哪个,还需要实操,在未看到答案下自己编写代码还是会出现很多细节问题。今天文档的标题格式设置是以Day2接着的,可能看起来稍微有点不顺眼,多多包涵。
标签:comment,10,存储,01,bytes,DAY3,笔记,char,MySQL From: https://blog.csdn.net/i0201_/article/details/142891970