建表:声明列的过程
列:不同的列类型占的空间不一样
选列的原则:够用,又不浪费
列类型
数值型
①整型
Tinyint / Smallint / Mediumint / Int / Bigint
②小数型(浮点型,定点型)
Float(D,M),Decimal(D,M)
字符串型
Char(M) / Varchar(M) / Text 文本类型
日期/时间型
Date 日期 / Time 时间 / Datetime 时间时间类型 / Year 年类型
整型列的可选属性
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 如果输入2位,“00-69” 表示2000-2069,“70-99” 表示1970-1999年 >create table y( >ya year(4) >); >create table d( >title varchar(30), >dt date >)charset utf8; >insert into d values ("开国大典","1949-10-01"); >create table t( >tm time >); >insert into t values ('13:50:40'); >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 ); >create table t2( >gender enum('男','女') >)charset utf8; >inserte into t2 values ('男') / ('女');日期时间型
①年:year 1901-2155【0000表示错误时选择】
②年-月-日:date “1000-01-01”-“9999-12-31”
③09:00:00:time “-838:59:59”-“838:59:59”
④年-月-日 hh:mm:ss:datetime “1000-01-01 00:00:00”-“9999-12-31 23:59:59”
>insert into teacher values ('张',1);