Mysql数据类型

一.数值类型

1 . 整型:

         1)大整形  int:  四个字节,取值范围: 2**32-1

         2)微小整型 tinyint  :  一个字节

                   1.有符号【正负号】(默认 signed): -128 ~ 127

                   2.无符号【只能正不能负】unsigned):0 ~ 255

                   用法:age tinyint unsingned

         3)小整型 samllint : 2个字节

         4)极大整形 bigint :8个字节

2、浮点型(float 和 double)

MySQL数据类型含义
float(m,d)单精度浮点型    8位精度(4字节)     m总个数,d小数位
double(m,d)双精度浮点型    16位精度(8字节)    m总个数,d小数位

         float (4个字节,最多显示7个有效位)

                   用法:字段名 float(m,n)       [m-------->代表总位数,n-------->代表小数位数]

3、定点数

      浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。

      decimal(m,d) 参数 m<65 是总个数,d<30 且 d<m 是小数位。

         decimal (最多显示28位有效数字)

              1、decimal(m,n)
              2、存储空间(整数、小数分开存储)
                       规则:将9的倍数包装成4个字节
                       余数    字节
                        0       0
                       1-2      1
                       3-4      2
                       5-6      3
                       7-9      4
                      示例:decimal(19,9)
                      整数部分:10/9=商1余1 4字节+1字节=5字节
                      小数部分:9/9=商1余0 4字节+0字节=4字节
                      占:9字节

示例:

1、创建库 studb2 ,并在库中创建表 stuinfo,要求:
    id :大整型
	name :字符类型,宽度为15
	age :微小整型,不能为负数
	height :浮点型,小数位为2位(float)
	money :浮点型,小数位为2位(decimal)

    create database studb2 character set utf8;
    create table stuinfo(
	id int,
	name char(15),
	age tinyint unsigned,
    height float(5,2),
	money decimal(20,2)
	);
2、查看stuinfo的表结构

    desc stuinfo;
3、查看stuinfo的默认字符集

    show create database stuinfo;
4、在表中插入1条完整记录

	insert into stuinfo values (1,"Bob",23,176,88888.88);
5、查询所有表记录
    select * from stuinfo;

6、在表中id 、name两个字段插入2条记录

    insert into stuinfo(id,name) values(2,"Jim"),(3,"Bob");
7、查询所有学生的id和姓名
    select id,name from stuinfo;

二.字符类型

类型大小用途
CHAR0-255字节定长字符串
VARCHAR0-65535 字节变长字符串
TINYBLOB0-255字节不超过 255 个字符的二进制字符串
TINYTEXT0-255字节短文本字符串
BLOB0-65 535字节二进制形式的长文本数据
TEXT0-65 535字节长文本数据
MEDIUMBLOB0-16 777 215字节二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215字节中等长度文本数据
LONGBLOB0-4 294 967 295字节二进制形式的极大文本数据
LONGTEXT0-4 294 967 295字节极大文本数据

1.char(宽度)   定长:字符宽度取值范围 1 ~ 255

2.varchar(宽度)  变长 : 字符宽度取值范围  1 ~ 65535

char和varchar区别:

        char 无论宽度多少都会占满宽度,浪费存储空间,性能高

        varchar 是多少字节就占多少字节,节省存储空间,性能低

varchar和text、blob类型的区别:

        varchar和text、blob类型是变长类型,对于其存储需求取决于列值的实际长度(在前面的表格中用L表示),而不是取决于类型的最大可能尺寸。                                                                                                                                                                 varchar需要定义大小,有65535字节的最大限制;text则不需要。

        一个blob是一个能保存可变数量的数据的二进制的大对象。4个BLOB类型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB仅仅在他们能保存值的最大长度方面有所不同。

        BLOB 可以储存图片,TEXT不行,TEXT只能储存纯文本文件。4个TEXT类型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT对应于4个BLOB类型,并且有同样的最大长度和存储需求。

三.枚举类型

1.单选 (enum):字段名 enum(值1,值2 . . .)

2.多选 (set):字段名 set(值1,值2 . . .)

示例:

      ## 插入记录时: "F,study,Python"
      create table t5(
      id int(3) zerofill,
      name varchar(15),
      sex enum("M","F","Secret"),
      likes set("F","M","study","Python")
      );
      insert into t5(likes) values("F,study,Python");

四.日期时间类型

MySQL数据类型含义
date日期 '2008-12-2'     "YYYY-MM-DD"
time时间 '12:25:36'        "HH:MM:SS"
datetime日期时间 '2008-12-2 22:06:44'       "YYYY-MM-DD HH:MM:SS"
timestamp"YYYY-MM-DD HH:MM:SS"         这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

注意:
        datetime : 不给默认值,返回NULL值

        timestamp : 不给默认值,返回系统当前时间

示例:

      create table t7(
      id int,
      name varchar(15),
      birthday date,
      money int,
      shijian datetime
      );
      insert into t7 values(2,"王",date(now()),10000,now());

日期时间函数:

  1、now()  返回服务器当前时间     ‘YYYY-MM-DD HH:MM:SS’
  2、curdate() 返回当前日期
  3、curtime() 返回当前时间
  4、year(date) 返回指定时间的年份
  5、date(date) 返回指定时间的日期
  6、time(date) 返回指定时间的时间

示例:

    1、在表中插入3条记录
      insert into t7 values
      (3,"小昭",19000520,3000,20180630000000),
      (4,"赵敏",19000521,4000,20180702000000),
      (5,"周芷若",19010522,3500,20180702100000);
    2、查找2018年7月2日有哪些用户充值了
       select * from t7 where date(shijian)="2018-07-02";

    3、查找2018年7月份充值的信息
      select * from t7 
      where 
      date(shijian)>="2018-07-01" and date(shijian)<="2018-07-31";

    4、查找7月30日10:00-12:00充值的信息
      select * from t7 
      where
      date(shijian)="2018-07-31" and 
      time(shijian)>="10:00:00" and 
      time(shijian)<="12:00:00";

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值