数据库的创建表时,字段的数据类型和约束条件

本文详细介绍了MySQL数据库在创建表时字段的数据类型,包括整数类型、浮点型、日期类型、字符串类型及枚举和集合类型,并讨论了约束条件,如null、default、unique、primary key、auto_increment以及foreign key的使用和注意事项。
摘要由CSDN通过智能技术生成

数据类型

数值类型:

整数类型:

在这里插入图片描述

  • tinyint 默认有符号,[unsigned]代表无符号,超出范围显示最大范围

语法:

tinyint[(m)] [unsigned] [zerofill]
  • int类型无符号的存储宽度4个字节,
  • 创建表整形类型不指定宽度。指定宽度对存储宽度没用,只是更改显示宽度。显示宽度是指查询时显示的宽度,用 [zerofill] 填充。
  • 其他所有类型指定宽度都表示存储宽度。
  • 默认得无符号得显示宽度 是10
    默认得有符号得显示宽度 是11

语法:

 int[(m)][unsigned][zerofill]

浮点型:

    浮点类型:float double decimal=dec
    作用:存储薪资、身高、体重、体质参数等。
    
    规则:
  # FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
   	定义:
      单精度浮点数(非准确小数值),
       m是数字总个数,d是小数点后个数。m最大值为255,d最大值为30
    精确度:
   		随着小数的增多,精度变得不准确 ****
       
 # DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
      定义:
   		双精度浮点数(非准确小数值),
   		m是数字总个数,d是小数点后个数。m最大值为255,d最大值为30
     精确度:
       随着小数的增多,精度比float要高,但也会变得不准确 
        
 # decimal[(m[,d])] [unsigned] [zerofill]
     定义:
          准确的小数值,
          m是数字总个数(负号不算),d是小数点后个数。 m最大值为65,d最大值为30。
    精确度: 
    	随着小数的增多,精度始终准确

  decaimal能够存储精确值的原因在于其内部按照字符串存储。

示例:

 1             mysql> create table t1(x float(256,31));
 2             ERROR 1425 (42000): Too big scale 31 specified for column 'x'. Maximum is 30.
 
 5             mysql> create table t1(x float(255,30)); #建表成功

 8             mysql> create table t2(x double(255,30)); #建表成功

15             mysql> create table t3(x decimal(65,30)); #建表成功


28             mysql> insert into t1 values(1.1111111111111111111111111111111); #小数点后31个1
29             Query OK, 1 row affected (0.01 sec)
30 

31             mysql> insert into t2 values(1.1111111111111111111111111111111);
32             Query OK, 1 row affected (0.00 sec)
33 
34             mysql> insert into t3 values(1.1111111111111111111111111111111);
35             Query OK, 1 row affected, 1 warning (0.01 sec)
36 
37             mysql> select * from t1; #随着小数的增多,精度开始不准确
38             +----------------------------------+
39             | x                                |
40             +----------------------------------+
41             | 1.111111164093017600000000000000 |
42             +----------------------------------+
43             row in set (0.00 sec)
44 
45             mysql> select * from t2; #精度比float要准确点,但随着小数的增多,同样变得不准确
46             +----------------------------------+
47             | x                                |
48             +----------------------------------+
49             | 1.111111111111111200000000000000 |
50             +----------------------------------+
51             row in set (0.00 sec)
52 
53             mysql> select * from t3; #精度始终准确,d为30,于是只留了30位小数
54             +----------------------------------+
55             | x                                |
56             +----------------------------------+
57             | 1.111111111111111111111111111111 |
58             +----------------------------------+
59             row in set (0.00 sec)

  精度: decimal double float

日期类型:


                
  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值