数据类型:

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

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之字段数据类型和列属性的更多相关文章

  1. mysql数据类型和列属性

    列属性: 定义一个字段时对该字段设置的额外的信息或约束 1.  关联操作:reference 2.  字段默认值:default value 3.  主索引和唯一索引:primary key 和uni ...

  2. Mysql JSON字段提取某一个属性值的函数

    mysql从5.7开始才支持JSON_EXTRACT等 JSON相关的函数, 项目里用到的mysql是5.6的,需要提取JSON字段里某一个属性值进行统计, 自己写了一个笨的提取方法: CREATE ...

  3. mysql的数据类型与列属性

  4. MySQL (二)-- 数据类型(列类型)、数值类型、 小数类型、 时间日期类型、 字符串类型 、 MySQL记录长度、列属性

    1 数据类型(列类型) 所谓的数据类型:对数据进行统一的分类,从系统的角度出发是为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中将数据类型分成了三大类: 2 数值类型 数值类型数据:都 ...

  5. mysql中列属性

    mysql列属性包括:NULL .default.comment.primary key.unique key 一.NULL定义方式:NULL(默认) NOT NULL 空属性有2个值,mysql数据 ...

  6. MySQL之选择字段数据类型

    MySQL支持的数据类型很多,选择正确的数据类型对于 获得高性能至关重要.在选择时有个简单的原则有助于做出更好的选择. 简单的原则: A.通常最小的是最好的 因为这样可以用更少的磁盘.内容.CPU缓存 ...

  7. 09、MySQL—列属性

    列属性又称之为字段属性,在mysql中一共有6个属性:null,默认值,列描述,主键,唯一键和自动增长 1.Null属性 NULL属性:代表字段为空 如果对应的值为YES表示该字段可以为NULL 注意 ...

  8. MySQL的字段属性+SQLyog查看建表语句

    MySQL的字段属性 写在前面:数据库就是单纯的表,用来存储数据,只有行和列.行代表数据,列代表字段(id.name.age这种就叫字段) 1.长度 2.默认 3.主键 4.非空 5.Unsigned ...

  9. Mysql列属性

    列属性又称之为字段属性在mysql中一共有6个属性:null,默认值(default),列描述(comment),主键(primary key),唯一键(unique key)和自动增长 修改数据库字 ...

随机推荐

  1. C#数据结构与算法系列(十五):排序算法(SortAlgorithm)

    1.介绍 排序是将一组数据,以指定的顺序进行排序的过程 2.分类 内部排序法:指将需要处理的所有数据都加载到内部存储器中进行排序 外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序

  2. Python 简明教程 --- 13,Python 集合

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果代码和注释不一致,那很可能两者都错了. -- Norm Schryer 目录 前几节我们已经介绍 ...

  3. 深入探究ASP.NET Core异常处理中间件

    前言     全局异常处理是我们编程过程中不可或缺的重要环节.有了全局异常处理机制给我们带来了很多便捷,首先我们不用满屏幕处理程序可能出现的异常,其次我们可以对异常进行统一的处理,比如收集异常信息或者 ...

  4. JQ三种提示框:提示信息框、确认框、输入文本框

    浏览器的三种提示框: alert()提示信息框 confirm()提示确认框 prompt()提示输入文本框 1.alert()提示信息框 效果: 实现代码: <script> alert ...

  5. vi/vim 行删除操作

    好东西就要多用,vi/vim越用越喜欢了. 删除多行怎么办呢? 命令输入“:32,65d”,回车键,32-65行就被删除了.

  6. python之re模块(正则表达式)

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. re 模块使 Python 语言拥有全部的正则表达式功能. 正则表达式中,普通字符匹配本身,非打印字符\n .\t等 ...

  7. JVM源码分析之JVM启动流程

      原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 “365篇原创计划”第十四篇. 今天呢!灯塔君跟大家讲: JVM源码分析之JVM启动流程 前言: 执行Java类的main方法,程序就能运 ...

  8. python 实现汉诺塔

    汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘. 大梵天命令婆罗门把圆盘从下面开始按大小顺 ...

  9. MySQL实验 内连接优化order by+limit 以及添加索引再次改进

    MySQL实验 内连接优化order by+limit 以及添加索引再次改进 在进行子查询优化双参数limit时我萌生了测试更加符合实际生产需要的ORDER BY + LIMIT的想法,或许我们也可以 ...

  10. 【状压DP】SCOI2005-洛谷P1896-互不侵犯 (状压例题)

    [状压DP]SCOI2005-洛谷P1896-互不侵犯 (状压例题) 标签(空格分隔): 状压DP 好久没写博客了,真的爽(误) 题目: 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方 ...