mysql入门之三大列类型

  数据库的概念大致可以分为三层,数据库服务器、库、表。数据库服务器相当于仓库管理员,帮助我们对数据进行管理。库就相当于仓库,用来存放数据。所有的数据最后都是以表(文件)的形式存储的,我们与表的交互也是最多的。我们知道,建立一张表最重要的就是定义表头,也就是声明列的过程。为了使每列的数据既能够存储的下,又不至于浪费很多空间,所以要学习列的类型。
列的类型大致分为三类:
数值型:
    整型:
       tinyint/smallint/mediumint/int/bigint
    小数型:
        float(M,D)/decimal(M,D)

字符串型:
      char(M)/varchar(M)/text

日期和时间型:
        日期:       date
        时间:       time  
       日期和时间型:  datetime
        年:        year

一、数值型
1、整型
整型系列的存储范围如下:
mysql入门之三大列类型_第1张图片

2、整型的可选属性
   例:tinyint(M) unsigned zerofill;
      M:表示宽度(在0填充的时候才有意义)
      unsigned:表示无符号类型
      zerofill:表示0填充(默认是无符号)

  假如我们要给100名学生进行编号,则应该选用tinyint型,为了使所有学生的号码都是同样的宽度,则用001表示第一名,依次类推。则001就是用0进行填充的。
mysql入门之三大列类型_第2张图片

可以看到这与我们的结论不一样,这是因为M只在0填充的时候才有意义,注意观察id的类型:
mysql入门之三大列类型_第3张图片

下来我们增加一列id2
mysql入门之三大列类型_第4张图片

可以看到id2的类型,接下来在增加一条信息。
mysql入门之三大列类型_第5张图片

3、小数型
  小数型分为浮点型float(M,D)和定点型decimal(M,D)。在这里M表示总的位数,不包括小数点,D表示小数位。
例:对于float(4,2)表示的范围就是-99.99~+99.99,无符号的话就是0~+99.99。
   
其中decimal更精确。
例如:float(9,2),decimal(9,2),分别输入1234567.23观察其值。
mysql入门之三大列类型_第6张图片
可以看到float进行了四舍五入,而decimal则保留了原有的数据。

二、字符串型
mysql入门之三大列类型_第7张图片
注意:M表示字符的个数,不是字节个数。

char和varchar的区别:
1、char定长:申请M个空间,存入小于M个字符,实际占M个字符。
2、varchar变长:申请M个空间,存入N个字符,N<=M,实际占N个字符。
3、一般情况下varchar的空间利用率更高。
5、char(M)存字符的时候,若实际存入的字符个数小于M,则以剩余的空间以空格填充。而当取出这部分内容时,最后一个字符后面的空格全部都被省略。varchar在存入的时候和取出的时候保持数据的一致性。
6、使用定长速度更快。

三、日期和时间类型
mysql入门之三大列类型_第8张图片
1、year是用一个字节表示的,从1901到2155年,还有一个字节表示0000年,用来表示非法的数值。
2、一般都不用datetime类型,而用时间戳。时间戳就是1970-01-01 00:00:00到当前的秒数。

四、枚举类型
命令: 列名 enum('情况');

五、SET类型

      SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个SET成员的SET列值时各成员之间用逗号(‘,’)间隔开。这样SET成员值本身不能包含逗号。

例如,指定为SET('one', 'two') NOT NULL的列可以有下面的任何值:

''
'one'
'two'
'one,two'

SET最多可以有64个不同的成员。


附加:
1、新增一列
假如我们新建了一张stu表,表中只有name和id两列。
mysql入门之三大列类型_第9张图片

现在我们要新增age这一列,可以采用命令:alter table stu add 列名 类型。
mysql入门之三大列类型_第10张图片

2、我们发现NULL很讨厌,在mysql里面NULL与任何值比较的结果都为NULL,所以NULL的判断都用is null,is not null。所以我们在声明列的时候一般都指定期默认值的。
命令:列名 类型 not null default 0;
例:接着上面的题,我们再新增一列id2.
mysql入门之三大列类型_第11张图片

你可能感兴趣的:(mysql,c/c++基础)