MYSQL 字符类型

建表的过程,就是画表头的过程 //声明表头
建表的过程就是一个 声明字段 过程
建列时,—> 能够容纳放置的的内容,但又不浪费
存储同样的数据,不同的列类型,所占的空间和效率是不一样的。 这就是我们建表前 列类型的意义


数值型
 
 整形
Tinyint
占据空间:1字节,存储范围:-128—127,0—255(2的8次方-1)
Smallint
占据空间:2字节,存储范围	:-32768—32767
Mediuint
占据空间:3字节,存储范围	:
Int
占据空间:4字节,存储范围:-21亿—42亿
bigint
占据空间:8字节,存储范围	:

对于int型 占据字节越大—> 范围越大

详解:

一个字节 8个位 0—2^8-1 0-255
-2^7 —> +2^7-1
(-127-128)

N个字节 8N个位 0—2^8N-1
-2^(8N-1) --> +2^(8N-1)-1;


Tinyint

范围: -128—127

Tinyint unsigned (加列类型unsigned表示其为无符号的类型,正数)

范围: 0—255

zerofill zero是零,fill是填充 代表0填充

向表class 里插入 列(sunm)
alter table class add sunm smallint(5) zerofill not null default 0;

insert into class (sname,sunm) values (‘子龙’,1);
设置子龙的学号为1
在这里插入图片描述
虽设置学号为1 但前面使用了 smallint(5) zerofill 自动补全为5位 所以输出结果为00001

zerofill同时是unsigned类型 (正数)

*小数型
float

Float(M,D),decimal(M,D)
M叫"标度" 代表"总位数",
D叫"精度" 代表"小数"(小数点右边的位数)

浮点数占多大空间
float 能存储10^38 . 10^-38
左 小数点 右

M值<=24 时 占四个字节,否则占8字节

Float unsigned (正数输出)

decimal 定点:把 整数 和 小数 部分拆开, 分开存储.
优点:比float 更加精确

float --浮点 //精度有时会损失
decimal --定点 //更加精确


字符串类型:

char

varchar

text

blob

char和varchar 分别为 定长 和 变长 类型

char

char(6)定长字符串
姓名char(6)
1 张三
2 李四四
3 王二王二

查找行记录时,如果都是定长
完全可以通过行数与行的长度计算文件移动偏移量

对于定长N,不够N个长度时用空格在尾部用空格补全N个长度。//浪费了尾部空间
存储时补空格,去除时自动去除空格


varchar

varchar(100) 储存0-100个字符

varchar(100)不定长字符串
姓名varchar(100)
1 张三
2 李四四
3 王二王二

varchar 读取数据的时 首先读取varchar数据的前缀(前缀里记录着这个varchar数据的长度)

对于varchar(N),不通空格补齐.但varchar列内容前,有1-2个字节来标记该列内容的长度

char 和 varchar 代表字符 , 而非字节数

                                        char 和varchar比较图

在这里插入图片描述


text

text:文本类型,可以存比较大的文本段。
一般用来储存文章内容,新闻内容等。

create table test
article test;


blob

Blob: 是二进制类型,储存图像,音频的二进制信息。

直接储存<——>直接输出


日期/类型

date类型 3字节
能储存1000-01-01 9999-12-31

time类型 3字节

例:
alter table test3 add sign time not null default ‘00:00:00’;

插入列时 除了整形和浮点型 都要使用’’

datetime类型 8字节

timestamp类型 4字节 自动提取当前时间!!

year类型 1字节 (1901-2155年)

特殊值:0000年

mysql> create table test6(
-> thing varchar(20) not null defa
-> ya year not null default ‘0000’
-> )engine myisam charset utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into test6
-> values
-> (‘辛亥革命’,‘1911’);
Query OK, 1 row affected (0.02 sec)


注:报错 out of range  超出范围
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值