mysql之字段数据类型和列属性

soft2018 soft2018     2022-12-18     376

关键词:

数据类型:

  对数据进行统一的分类,从系统的角度出发,为了能够使用统一的方式进行管理,更好的利用有限的空间。

SQL中将数据类型分成了三大类:数值类型、字符串类型、时间日期类型。

技术图片

 

数值型:

  数值型数据:都是数值,系统将数值型分为整数型和小数型。

   整数型:

  存放整形的数据,在SQL中因为更多考虑如何节省磁盘空间,所以系统将整形又细分为5类。

技术图片

 技术图片

SQL中的数值类型全部都默认有符号,但是可以分正负。

有时候需要使用无符号数据:需要给数据类型限定:int unsigned;    无符号,从0开始。

技术图片

 插入数据测试:

技术图片

 

在查看表结构的时候,发现每个字段的数据类型之后会自带一个括号,里面有指定的数字。

这个数据是显示宽度,没有特别的含义,只是默认的告诉用户可以显示的形式而已,实际上用户是可以控制的,这种控制不会改变数据本身的大小。

显示宽度的意义:当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度,通常需要搭配一个前导0来增加宽度,不改变值的大小:()

技术图片

 

技术图片

技术图片

 

小数型:

技术图片

技术图片

技术图片

技术图片

 

技术图片

技术图片

技术图片

 

 技术图片

技术图片

技术图片

技术图片

技术图片

 

技术图片

技术图片

技术图片

技术图片

 技术图片

 技术图片

字符串类型:

  在SQL中,将字符串类型分为6类:char、varchar、text、blob、enum和set

  定长字符串:char,磁盘(二维表)在定义结构的时候,就已经确定了最终数据的存储长度。

技术图片

  变长字符串:varchar在分配空间的时候,按照最大的空间分配,但是实际上最终用了多少,是根据具体数据来确定的。

技术图片

技术图片

  字符串文本:

  如果数据量非常的大,通常说超出255个字符,就会使用文本字符串。

技术图片

  枚举字符串:

  枚举:enum,事先将所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个。

技术图片

技术图片

技术图片

 技术图片

 证明字段存储的数据是数值:将数据取出来 +0,就可以判断出原来的数据存储的到底是字符串还是数值,如果是字符串最终结果永远是0,否则就是其他值。

技术图片

技术图片

技术图片

 技术图片

 

  集合字符串:

  集合跟枚举很类似:实际上存储的是数值,而不是字符串(集合是多选)

技术图片

技术图片

技术图片

集合中每一个元素都是对应一个对应的二进制位:

技术图片

技术图片

技术图片

 

  MySQL的记录长度:

  mysql中规定:任何一条记录最长不能超过65535个字节(varchar永远达不到理论值)

技术图片

技术图片

技术图片

技术图片

 

列属性:

  真正约束字段的是数据类型,但是数据类型的约束很单一,需要有一些额外的约束,来更加保证数据的合法性。

        技术图片

 

  空属性:

  两个值:null(默认)和not null(不为空)

  虽然是默认为空,数据库基本都是字段为空,但是在实际开发的时候,应当尽可能的保证所有的数据都不应该为空,空数据是没有意义的,空数据没有办法参与运算。

技术图片

技术图片

 

  列描述:

  comment(描述),没有实际的含义,是专门用来描述字段,会根据表创建语句保存,用来给数据库管理员来进行解释的。

技术图片

 

  默认值:

  某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性使用默认值。

  默认值关键字:default

技术图片

默认值的生效(使用):在数据进行插入的时候,不改变字段的赋值。

技术图片

想要使用默认值,可以不一定去指定列表,故意不使用字段列表:可以使用default关键字代替。

技术图片

 

  主键(primary key):

  一张表只能有一个字段可以使用对应的键,用来唯一约束该字段里面的数据,不能够重复,这种键称为主键。  

  增加主键:

  SQL操作中有多种方式可以给表增加主键:大体分为三种。

  方案一:在创建表的时候,直接在字段之后跟上primary key关键字(主键本身不允许为空)。其优点:非常直接,缺点:只能使用一个字段作为主键。

技术图片

  方案二:在创建表的时候,在所以得字段之后,使用primary key(主键字段列表)来创建主键(如果有多个字段作为主键,可以是复合主键)

技术图片

   方案三:当表已经创建好之后,额外追加主键,可以通过修改表的字段属性,直接追加。(前提:表中的字段对应的数据本身是独立的(不重复));

  Alter table 表名 add primary key(字段列表);

 技术图片

    主键约束:

  主键对应的字段中的数据不允许重复:一旦重复,数据操作失败(增和改)

技术图片

  更新主键与删除主键

  没有办法更新主键,主键必须先删除,后增加。

  Alter table 表名 drop primary key;

技术图片

  主键分类:

  在实际创建表的过程中,很少使用真实业务数据作为主键字段(业务主键:如学号,课程号);大部分时候,是使用逻辑性的字段(字段没有业务含义,值是什么没有关系),将这种主键称为逻辑主键。

技术图片

 

  自增长(auto_increment):

  当对应的字段没有值或者给默认值、或者给null的时候,会自动的被系统触发。系统会从当前字段中已有的最大值再进行+1操作,得到一个新的不同的字段。

  自增长通常是跟主键搭配。

  自增长特点:

技术图片

  自增长的使用:

  当自增长被给定的值是null或者默认值的时候会触发自动增长。

  技术图片

  自增长如果对应的字段输入了值,那么自增长失效,但是下一次还是能够正确的自增长(从最大值+1)

      技术图片

    技术图片

  修改自增长:

  自增长如果涉及到字段的改变,必须先删除自增长,后增加(一张表只能有一个自增长)

  修改当前自增长已经存在的值:修改只能比当前已经有的自增长的最大值大,不能够小(小不会生效)

  Alter table 表名 auto_increment = 值;

      技术图片

       技术图片

技术图片

技术图片

 技术图片

 技术图片

  删除自增长:

  自增长是字段的一个属性:可以通过modify来进行修改(保证字段没有auto_increment即可)

  Alter table 表名  modify 字段 类型;

技术图片

 

  唯一键:

  一张表往往有很多字段需要具有唯一性,数据不能重复,但是一张表中只能有一个主键。

  唯一键(unique key)就可以解决表中有多个字段需要唯一性约束的问题。

  唯一键的本质和主键差不多:唯一键默认是允许自动为空,而且可以多个为空(空字段不参与唯一性比较)

  增加唯一键:

  与主键类似,有三种方案。

技术图片

 技术图片

技术图片

  唯一键约束:

  唯一键与主键本质相同,唯一区别就是唯一键默认允许为空,而且是多个为空。(如果唯一键也要求不能为空,那么与主键就是一样的)

技术图片

技术图片

 

索引:

   几乎所有的索引都是建立在字段之上。

  索引:系统根据某种算法,将已有的数据(未来可能新增的数据),单独建立一个文件,文件能够实现快速的配置数据,并且能够快速找到对应标的记录。

  索引的意义:

  1、提升查询数据的效率。

  2、约束数据的有效性(唯一性等)

  增加索引的前提条件:索引本身会产生索引文件(有时候可能毕书尽文件还大),会非常耗费磁盘空间。

  如果某个字段需要作为查询条件经常使用,那么可以使用索引(一定会想办法增加);

  如果某个字段需要进行数据的有效约束,也可以使用索引(主键、唯一键)

  技术图片

 

      技术图片

索引详细讲解: https://www.cnblogs.com/chenshishuo/p/5030029.html

mysql数据类型及字段属性

MySQL数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值日期/时间字符串(字符)数值类型MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(IN... 查看详情

数据类型之属性(代码片段)

注释:给表中的某一字段添加注释:使用comment属性,comment关键字跟在字段的最后面。默认值:default‘默认值‘非空:notnull自增:auto_increment主键:primarykey,一个表中只有一个字段可以作为主键。唯一键:unique,被unique修饰的... 查看详情

django之models字段属性(代码片段)

目录常用字段AutoFieldIntegerFieldCharField自定义及使用charDateFieldDateTimeField字段合集字段参数nulluniquedb_indexdefaultDateField和DateTimeFieldauto_now_addauto_now关系字段ForeignKey字段参数toto_fieldon_deletedb_constraint其余字段参数OneToOneField字段参数toto_... 查看详情

mysql字段类型

目录字符编码存储引擎创建表的完整语法字段类型之整型字段类型之浮点型字段类型之字符串数字含义字段类型之枚举与集合字段类型之日期类型字段类型约束条件内容字符编码查看MySQL默认字符编码\\s5.x系列显示的编码有很多... 查看详情

mysql学习二数据库操作(代码片段)

...型数值类型字符串类型日期和时间型数值类型NULL值数据字段属性数据表的类型设置数据表的类型数据表的存储位置设置数据表字符集修改数据库修改表(ALTERTABLE)删除数据表其他更多相关文章点这里哦结构化查询语句分类数据库... 查看详情

java实体类的属性类型与mysql数据库表字段类型对应表

感谢原文博主https://blog.csdn.net/Hyo555/article/details/81943340还有些经常用到的mysql语句--新增表结构DROPTABLEIFEXISTS`servicnn`;CREATETABLE`servin`(`id`int(11)NOTNULLAUTO_INCREMENT,`operation_unit`varchar(100)DEFAULTNUL 查看详情

跟王老师学mysql:mysql数据类型之整数类型

跟王老师学MySQL:MySQL数据类型之整数类型主讲教师:王少华   QQ群号:483773664MySQL的数据类型包括整数类型、浮点数类型、定点数类型、日期和时间类型、字符串类型和二进制数据类型。学习目标整型包括哪些类型以... 查看详情

跟王老师学mysql:mysql数据类型之整数类型

跟王老师学MySQL:MySQL数据类型之整数类型主讲教师:王少华   QQ群号:483773664MySQL的数据类型包括整数类型、浮点数类型、定点数类型、日期和时间类型、字符串类型和二进制数据类型。学习目标整型包括哪些类型以... 查看详情

朝花夕拾之mysql-02(代码片段)

5DDL语句5.1建表create基本语法createtable表名(字段名1数据类型,字段名2数据类型,字段名3数据类型);数据类型varchar(最长255)可变长度的字符串比较智能,节省空间。会根据实际的数据长度动态分配空间。优点:节省空间缺点:需要动... 查看详情

数据库之表操作(代码片段)

创建表#语法:createtable表名(字段名1类型[(宽度)约束条件],字段名2类型[(宽度)约束条件],字段名3类型[(宽度)约束条件]);#注意:1.在同一张表中,字段名是不能相同2.宽度和约束条件可选3.字段名和类型是必须的mysql>createdatabasestaf... 查看详情

九表

...构化的文件,由行和列组成,行称为数据或记录,列称为字段,字段又包括:字段名称、字段类型、字段长度、字段约束2.创建表mysql常用数据类型:A.创建表语法格式:createtable表名称(字段名类型(长度)约束);B.查看创建... 查看详情

mysql工程师之04数据类型

04数据类型文章目录04数据类型数据类型分类整型浮点型(float和double)定点数字符串(char,varchar,_text)二进制数据(Blob)日期时间类型数据类型的属性MYSQL数据类型的长度和范围使用建议选择数据类型的基本原则创建表的时候,我们... 查看详情

mysql工程师之04数据类型

04数据类型文章目录04数据类型数据类型分类整型浮点型(float和double)定点数字符串(char,varchar,_text)二进制数据(Blob)日期时间类型数据类型的属性MYSQL数据类型的长度和范围使用建议选择数据类型的基本原则创建表的时候,我们... 查看详情

最全sql字段类型(4种)属性(6种)总结(代码片段)

文章目录字段类型整数类型小数类型(2种)字符串类型(5种)时间日期类型(5种)属性NULL属性Default属性主键自增长属性唯一键comment属性数据库记录长度字段类型字段类型:MySQL中用来规定实际存储的数据格式字段类型在定义表结... 查看详情

java面试之mysql

164.数据库的三范式是什么?第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。第三... 查看详情

使用 MYSQL 连接来自多个表的数据

...布时间】:2017-04-2617:23:21【问题描述】:我有多个表和列字段并且都匹配数据类型和列号,并且都有一个时间字段也以YYYY-MM-DDHH:MM:SS的格式匹配。数据问题我可能有一个表,其中在该表的value列中有一个具有匹配值的日期和时间... 查看详情

数据库之mysql基本操作命令(代码片段)

...t;数据表–>行(记录):用来描述一个对象的信息列(字段):用来描述对象的一个属性##二、常用的数据类型![image.png](https://s2.51cto.com/images/20220614/1655203853580733.png?x-oss-process=image/watermark,size_14,text_QDUxQ1R 查看详情

mysql之简介及基础操作(代码片段)

...结构显示表创建语句修改表结构修改表名修改表选项新增字段修改字段类型删除字段删除表结构数据操作插入数据查询数据查询表中全部数据查询 查看详情