MySQL数据库总结(6)列类型及列的增删改
2016-03-13 13:15
435 查看
Mysql三大列类型
1整形系统的可选参数XXintM unsigned zerofill
2小数型floatMDdecimalMD 代表可存储一共M位不含小数点小数点后D位
3字符串类型
4日期时间型
列的增删改
增加列
修改列
删除列
整形:
tinyint smallint mediumint int bigint
小数型:
Float(D,M),decimal(D,M)
字符串型
Char(M)
Varchar(M)
Text 文本类型
日期/时间型
Date 日期
Time 时间
Datetime 日期时间型
Year 年类型
Unsigned:代表此列为无符号类型(范围从0开始)
(不加unsigned,则代表该列默认是有符号类型,范围从负数开始)
列可以声明默认值
Not null default 0;
Zerofill:代表0填充,即:如果该数字不足参数M位,则自动补0,补够M位。
如果没有zerofill属性,单独的参数M,没有任何意义
如果设置某列为zerofill,则该列已经默认为unsigned,无符号类型
例:char(10),则能输入10个字符.
Varchar(M) 变长类型 :0<=M<=65535
Char(M)如何占据M个字符宽度?
答:如果实际存储内容不足M个,则后面加空格补齐
取出来的时候,再把后表面的空格去掉.(所以如果内容最后有空格,将会被清除)
速度上:定长速度快些
Text:文本类型,可以存较大的文本段,搜索速度稍慢
因此,如果不是特别打的内容,建议用char,varchar来代替
Text不用加默认值(加了也没用)
Char与varchar型的选择原则:
1空间利用效率,四字成语表,char(4)
个人简介,微博140字,varchar(140)
2速度 用户名:char
如果输入2位,‘00-69’表示2000-2069年
‘70-99’表示1970-1999年
如果记的麻烦,输入的时候,输入4位
Date类型:典型格式 1992-08-12
日期类型 范围:‘1000-01-01’->‘9999-12-31’
Time类型:典型格式 hh:mm:ss
时间类型 范围:‘-838:59:59’->‘838:59:59’
Datetime类型 典型格式:‘1989-05-06 14:32:08’
日期时间类型 范围:1000-01-01 00:00:00->9999-12-31 23:59-59
注意:
在开发中,很少用日期时间类型来表示一个需要的精确到秒的列
原因:虽然日期时间类型能精确到秒,而且方便查看.
用时间戳来表示
时间戳:用int来存储
是1970-01-01 00:00:00 到当前的秒数
一般存注册时间,商品发布时间等,并不是用datetime存储,而是用时间戳.
datetime虽然直观,但计算不便.
而用int型 存储时间戳,方便计算,对于显示来说,也可以方便的格式化
create table 表名 (
列名称 列类型 [列属性][默认值], –à列声明
列名称 列类型 [列属性][默认值],
列名称 列类型 [列属性][默认值]
)charset = utf8/gbk……
增加的列默认是在表的最后的一列
可以用after 来声明新增的列再哪一些后面
Alter table 表名 add 列声明 after flower.
如果新增放在最前面,怎么办?
Alter table 表名 add 列声明 first
例 alter table boy add height tinyint unsigned not null default 149;
例 alter table boy change height(旧) height(新) smallint not null default 180;
例 alter table boy drop id;
1整形系统的可选参数XXintM unsigned zerofill
2小数型floatMDdecimalMD 代表可存储一共M位不含小数点小数点后D位
3字符串类型
4日期时间型
列的增删改
增加列
修改列
删除列
Mysql三大列类型
数值型整形:
tinyint smallint mediumint int bigint
小数型:
Float(D,M),decimal(D,M)
字符串型
Char(M)
Varchar(M)
Text 文本类型
日期/时间型
Date 日期
Time 时间
Datetime 日期时间型
Year 年类型
1、整形:系统的可选参数:XXint(M) unsigned zerofill
例:age tinyint(4) unsigned 或者 num smallint(6) zerofillUnsigned:代表此列为无符号类型(范围从0开始)
(不加unsigned,则代表该列默认是有符号类型,范围从负数开始)
列可以声明默认值
Not null default 0;
Zerofill:代表0填充,即:如果该数字不足参数M位,则自动补0,补够M位。
如果没有zerofill属性,单独的参数M,没有任何意义
如果设置某列为zerofill,则该列已经默认为unsigned,无符号类型
2、小数型:float(M,D),decimal(M,D) :代表可存储一共M位(不含小数点),小数点后D位
区别:decimal比float精度更高,适合存储货币等要求精确的数字.3、字符串类型
Char(M) 定长类型:M代表可容纳的字符数, 0<=255之间例:char(10),则能输入10个字符.
Varchar(M) 变长类型 :0<=M<=65535
Char(M)如何占据M个字符宽度?
答:如果实际存储内容不足M个,则后面加空格补齐
取出来的时候,再把后表面的空格去掉.(所以如果内容最后有空格,将会被清除)
速度上:定长速度快些
Text:文本类型,可以存较大的文本段,搜索速度稍慢
因此,如果不是特别打的内容,建议用char,varchar来代替
Text不用加默认值(加了也没用)
Char与varchar型的选择原则:
1空间利用效率,四字成语表,char(4)
个人简介,微博140字,varchar(140)
2速度 用户名:char
4、日期/时间型
Year类型:1个字节 表示 1901-2155,[0000,表示错误时选择]如果输入2位,‘00-69’表示2000-2069年
‘70-99’表示1970-1999年
如果记的麻烦,输入的时候,输入4位
Date类型:典型格式 1992-08-12
日期类型 范围:‘1000-01-01’->‘9999-12-31’
Time类型:典型格式 hh:mm:ss
时间类型 范围:‘-838:59:59’->‘838:59:59’
Datetime类型 典型格式:‘1989-05-06 14:32:08’
日期时间类型 范围:1000-01-01 00:00:00->9999-12-31 23:59-59
注意:
在开发中,很少用日期时间类型来表示一个需要的精确到秒的列
原因:虽然日期时间类型能精确到秒,而且方便查看.
用时间戳来表示
时间戳:用int来存储
是1970-01-01 00:00:00 到当前的秒数
一般存注册时间,商品发布时间等,并不是用datetime存储,而是用时间戳.
datetime虽然直观,但计算不便.
而用int型 存储时间戳,方便计算,对于显示来说,也可以方便的格式化
//建表练习: 给班级的同学建个档案表 有如下信息 姓名 年龄 Email 手机号 简介 毕业薪水 入学日期 create table php( id int primary key auto_increment, ##主键自动增长 name char(3) not null default '', age tinyint unsigned not null default 0, email varchar(30) not null default '', tel char(11) not null default '', salary decimal(7,2) not null default '1800.68', riqi date not null default '2012-03-13' )charset utf8;
列的增删改
回顾建表语句create table 表名 (
列名称 列类型 [列属性][默认值], –à列声明
列名称 列类型 [列属性][默认值],
列名称 列类型 [列属性][默认值]
)charset = utf8/gbk……
增加列:
Alter table 表名 add 列声明增加的列默认是在表的最后的一列
可以用after 来声明新增的列再哪一些后面
Alter table 表名 add 列声明 after flower.
如果新增放在最前面,怎么办?
Alter table 表名 add 列声明 first
例 alter table boy add height tinyint unsigned not null default 149;
修改列:
Alter table 表名 change 旧被改变的列名 列声明例 alter table boy change height(旧) height(新) smallint not null default 180;
删除列:
Alter table 表名 drop 列名;例 alter table boy drop id;
相关文章推荐
- MySQL数据库总结(5)左连接,右连接,内连接
- MySQL数据库总结(4)子查询与联合
- Ubuntu15.10操作mysql5.6数据库
- MySQL中复制数据表中的数据到新表中的操作教程
- 在Ubuntu上使用apt-get安装MySQL+安全优化
- 在Ubuntu上源码安装MySQL+安装问题解决+安全优化
- mysql中日期时间型解析
- 【Mysql】----安装教程
- mysql 用户管理和权限设置(转)
- MySQL存储引擎 MyISAM与InnoDB区别
- 在windows导入mysql的示例employees数据库
- MySQL数据库总结(3)数据库的备份与恢复与破解密码,DCL用户权限查
- mysql数据库表修改某一列的类型
- MySQL数据库总结(2)增删改查
- 不停止MySQL服务增加从库的两种方式【转载】
- MySQL:unknown variable 'master-host=masterIP' [ERROR] Aborting
- MySQL数据库总结(1)入门语句
- mac mysql安装流程
- mysql 安装不出现配置向导
- MySQL 索引优化 btree hash rtree