MySQL数据库总结(6)列类型及列的增删改

    • Mysql三大列类型
      • 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 年类型

MySQL数据库总结(6)列类型及列的增删改_第1张图片

1、整形:系统的可选参数:XXint(M) unsigned zerofill

例:age tinyint(4) unsigned 或者 num smallint(6) zerofill

  • Unsigned:代表此列为无符号类型(范围从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;

MySQL数据库总结(6)列类型及列的增删改_第2张图片

删除列:

Alter table 表名 drop 列名

例 alter table boy drop id;

你可能感兴趣的:(mysql,数据库)