3. 整形列的字节与存储范围

建表:声明列的过程

列:不同的列类型占的空间不一样

选列的原则:够用,又不浪费

列类型

数值型

①整型

Tinyint  /  Smallint  /  Mediumint  /  Int  /  Bigint

②小数型(浮点型,定点型)

Float(D,M),Decimal(D,M)

字符串型

Char(M)  /  Varchar(M)  /  Text 文本类型

日期/时间型

Date 日期  /  Time 时间  /  Datetime 时间时间类型 /  Year 年类型



3. 整形列的字节与存储范围_第1张图片

整型列的可选属性

Tinyint 默认是有符号的,存储-128--127

Tinyint /  Tinyint unsigned /  Tinyint(M) zerofill  

M:宽度(在0填充(zerofill)时才有意义 )

unsigned:无符号类型(非负)影响存储范围

zerofill:0填充(默认无符号) 00001   00005(M=5)

>alter table 表名 add 新列名 tinyint unsigned;  (增加列)

#列可以声明默认值,并且推荐声明默认值#

Not null Default 0(不允许为Null 没有数值的时候显示为0)

>alter table *** add 新列名 tinyint not null default 0;  #一次只能增加一列#

小数型

float(M,D)       decimal(M,D) (更精确)

M:精度(总位数,不包含点)

D:标度(小数位)

float(4,2)   -99.99---99.99

float(4,2) unsigned    0.00---99.99

>create table goods(

>name varchar(10) not null default '',

>price float(6,2) not null default 0.00

>)charset utf8;

字符型

Char:定长    char(M)   M:可容纳的字符 数       速度最快

Varchar:变长   varchar(M)  M:可容纳的字符 数   约2万-6万

Text :文本串   不用加默认值   约2万-6万个字符,搜索速度较慢

区别:

char:M个字符,如果存的小于M个字符,实占M个字符  0<=M<=255

varchar:M个字符,存的小于M个字符,设为N(N

char:如果实际存储内容不足M个,则后面加空格补齐,取出来的时候再把后面的空格去掉(所以如果内容最后又空格,将会被清除)

选择原则:

1.空间利用率

四字成语表:char(4)

个人简介,微博 140字:varchar(140)

2.速度

用户名:char

日期时间型

①年:year  1901-2155【0000表示错误时选择】

如果输入2位,“00-69”  表示2000-2069,“70-99”  表示1970-1999年

>create table y(

>ya year(4)

>);

②年-月-日:date  “1000-01-01”-“9999-12-31”

>create table d(

>title varchar(30),

>dt date

>)charset utf8;


>insert into d values ("开国大典","1949-10-01");

③09:00:00:time  “-838:59:59”-“838:59:59”

>create table t(

>tm time

>);

>insert into t values ('13:50:40');

④年-月-日  hh:mm:ss:datetime  “1000-01-01 00:00:00”-“9999-12-31 23:59:59”

>create table user(

>name varchar(20) not null default '',

>regtime datetime not null default '1000-01-01 00:00:00'

>)charset utf8;

在开发中很少使用日期时间类型来表示一个需要的精确到秒的列

时间戳:1970-01-01 00:00:00到当前的秒数

一般存注册时间,商品发布时间等,并不是用datetime存储,而是用时间戳

因为datetime虽然直观,但计算不便

而用int型 存储时间戳,方便计算,而对于显示来说,也方便格式化

create table teacher(

name varchar(20),

gender tinyint

);



>insert into teacher values ('张',1);

>create table t2(

>gender enum('男','女')

>)charset utf8;

>inserte into t2 values ('男') / ('女');

你可能感兴趣的:(3. 整形列的字节与存储范围)