mysql 数据类型与字段属性

一、数据类型

我们在设计表格的时候,要注意每个字段适合使用哪些数值类型,选择不合适的话会对表格数据难以管理,数据保存不够精确而造成严重影响。

    一个英文字母,占1个字节
    1个汉字,utf8编码,占3个字节

1、数值类型

                      类型                                                         注解
                       int 4字节,范围(-2147483648~2147483647)
                     tinyint 1字节,范围(-128~127)
                     smallint 2字节,范围(-32768~32767)
                   mudiemint 3字节,范围(-8388608~8388607)
                      bigint 8字节,范围(+-9.22*10的18次方)
                        bit 一字节,只能表示0/1
                       float(m,d) 4字节,单精度浮点型,m总个数,d小数位
                      double(m,d) 8字节,双精度浮点型,m总个数,d小数位
                      decimal(m,d) decimal是存储为字符串的浮点数,用于存储较为精确地数据场景(如:银行)

2、字符串数值类型

                            类型                                                      注解
                           char 固定长度,最多255个字符

                         varchar

可变长度,最多65535个字符
                           text 可变长度,最多65535个字符
                          blob 可变长度,BLOB字段用于存储二进制数据(如:照片)
                         enum(枚举) 可变长度,保存字符数据。最多包含65535个不同的成员。当定义了一个enum的列时,该列的值限制为列定义中声明的值。如果列声明包含NULL属性,则NULL将被认为是一个有效值,并且是默认值。如果声明了NOT NULL,则列表的第一个成员是默认值
                          set 可变长度,插入数据的时候,必须是集合里有的内容,如果没有,就会报错,不能插入,而且插入重复
                       binary 当为列指定了该属性时,将以区分大小写的方式排序。

(1)char和varchar有什么区别?

*char 固定长度的字符串类型 character 字符  --》在存储的时候,不够固定长度,就在前面填充空格,达到固定长度。
  'wang'  在表结构里的长度是30,在存储wang字符串的时候,会在前面填充26个空格来达到30个字符的长度

*varchar 可变长的字符串类型  variable  character
    'wang'  我的结构里的长度是4,因为varchar字符串类型只是存储相应的字符,不会额外使用其他空间。
char比varchar在长度没有达到规定的时候,更加消耗磁盘空间。如果达到了规定长度,varchar要比char多一个字节的存储空间


长度方面:
    char 最大长度255  varchar最大长度是65,535

检索方式:
      一个长度char列被固定在创建表声明的长度。长度可以是0到255之间的任何值。char存储值时,将在它们的右边填充空格以达到指定的长度。当CHAR被检索到的值,拖尾的空格被删除。
      虽然varhcar数据类型可以节省存储空间,提高数据处理的效率。但是其可变长度带来的一些负面效应,有时候会抵消其带来的优势。
      char存储定长数据很方便,char字段上的索引效率很高。

 char类型的数据在存取的时候比varchar要快?

     由于char是固定长度的所以计算机处理char的速度比varchar快很多。

二、字段属性

                           类型 属性
                         zerofill 填充 0
                       unsigned 无符号整数
                        signed 有符号整数
                       not null 不能为空
                auto_increment 自增
                     foreign key  
                    primary key 等同于not null+unique,不允许为空,而且也不需要重复
                     comment  
                      default 默认值
                       unique 唯一性

添加数据类型

(1)zerofill :填充0 ,影响数字显示方式。

create table t1(id int(5)  zerofill);

# 创建t1表格,字节为int类型不超过五位数,不到五位数的前面用零填充。

(2)auto increment:自动增长,只适用于整数类型

  # id int  unsigned atuo_increment primary key   设id为int数据自动增长类型,不允许为空。

 # name varchar(20)not null  设置第二个字段为varchar数据类型设置20个字段,且不能为空。

   *这样分别设置名字不设置id则id会根据设置的value而自动增长。

字段约束

    对于某个字段里面的内容进行限制

set 是mysql里设置变量的命令
@@ 开头的变量是内置的变量
@ 开头的是自定义的变量

@@auto_inc

root@nongda 10:00  mysql>set @sg='wang';  #定义变量sg赋值给wang 
Query OK, 0 rows affected (0.00 sec)

root@nongda 10:00  mysql>insert into t2(name) values(@sg);  #应用sg的值插入表t2中去。
Query OK, 1 row affected (0.01 sec)

root@nongda 10:01  mysql>select * from t2;
+----+-------+
| id | name  |
+----+-------+
|  1 | Marry |
|  2 | Bob   |
|  3 | lin   |
|  4 | wang  |
+----+-------+
4 rows in set (0.01 sec)
# 这样wang就直接插入到t2中去了。

rement_offset  起始偏移的值

offset 偏移
@@auto_increment_increment  每次增长多少的变量

猜你喜欢

转载自blog.csdn.net/wsy_miao/article/details/106367200
今日推荐