字符串类型

  在SQL中,讲字符串类型分成了六类:char,varchar,text,blob,enum,set

  char,定长字符串

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

  char(L):L代表length,可以存储长度,单位为字符。最大长度值为255.

  varchar变长字符串

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

  varchar(L):L表示字符长度,理论长度是65536个字符,但是会多出1到2个字节来确定存储的实际长度。

  例如,varchar(10):存了10个汉字,utf8环境下,10*3+1=31个字节。

            存储3个汉字,3*3+1 = 10(bytes)

  如何选择定长或则是变长字符串呢?

  第一,定长的磁盘空间比较浪费,但是效率高。如果数据基本上确定长度都一样,就是用定长。

  第二,变长比较节约磁盘空间,但是效率低。如果数据不能确定长度,可以采用。

  text,文本字符串

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

  文本字符串根据存储的数据的格式进行分类:text OR blob.

  Text:存储文字(二进制数据根据实际都是存储路径)

  Blob:存储二进制数据(通常不用)。

  enum,枚举字符串

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

  枚举的使用方式:

  定义:enum(可能出现的元素列表);  -- 如 enum('男','女','妖','保密');

  使用:存储数据,只能存储上面定义好的数据。

  作用:1、规范数据格式,数据只能是规定的数据中的其中一个。枚举实际存储的是数值二不是字符串本身。

     2、节省存储空间(枚举通常有一个别名:单选框)

  在MYSQL中,系统是自动转换数据格式的,而且基本与PHP一样。

  枚举的原理:枚举在进行数据规范的时候(定义数据的时候),系统会自动建立一个数据与枚举元素的对应关系(关系放到日志中),然后在进行数据插入的时候,系统自动将字符转换成对应的数字存储,分然后进行数据提取的时候,系统自动将数值转换成对应的字符串显示。

  集合字符串

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

  定义:Set (元素列表)

  使用:可以使用元素列表中的元素(多个),使用逗号分隔。

  集合中没有一个元素。

  集合的强大在于能够规划数据和节省空间,php也可以规范数据,但对于PHP来说效率优先,而且数据的维护可以通过数字进行。PHP没有办法判断数据的在数据库的形式,集合增加PHP的维护成。

  

  MYSQL记录长度

  MYSQL中规定,任何一条记录最长不能超过65535个字节。

  MYSQL记录中:如果有任何一个字段允许为空,那么系统会自动从整个记录中保留一个字节来存储NULL。

  列属性 

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

  列属性有很多: NULL/NOT NULL , DEFAULT,PRIMARY KEY,UNIQUE KEY,AUTO_INCREMENT,COMMENT.

  空属性:两个值,NULL(空,默认值)和NOT NULL(不为空)

  列描述: comment,描述,没有实际含义,是专门用来描述字段。

  DEFAULT:默认值关键词。

MYSQL基础笔记(七)- 数据类型二的更多相关文章

  1. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  2. MYSQL基础笔记(二)-SQL基本操作

    SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...

  3. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...

  4. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  5. MYSQL基础笔记(四)-数据基本操作

    数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...

  6. MYSQL基础笔记(一)

    关系型数据库概念: 1.什么是关系型数据库? 关系型数据库:是一种建立在关系模型(数学模型)上的数据库 关系模型:一种所谓建立在关系上的模型. 关系模型包含三个方面: 1.数据结构:数据存储的问题,二 ...

  7. mysql基础之基本数据类型

    原文:mysql基础之基本数据类型 列类型学习 mysql三大列类型 整型 Tinyint/ smallint/ mediumint/int/ bigint(M) unsigned zerofill ...

  8. MySql基础笔记(一)Mysql快速入门

    Mysql快速入门 一)基本概念 1)表 行被称为记录,是组织数据的单位.列被称为字段,每一列表示记录的一个属性. 2)主键 主键用于唯一的标识表中的每一条记录.可以定义表中的一列或者多列为主键, 但 ...

  9. MySQL基础笔记(二) 完整性约束

    我们知道,一种数据模型必须包含三个基本的部分: 构造机制(数据结构):主要描述数据的类型.内容.性质以及数据间的联系等. 运算机制(数据操作):主要描述在相应的数据结构上的操作类型和操作方式. 约束机 ...

随机推荐

  1. 邻接表存储图,DFS遍历图的java代码实现

    import java.util.*; public class Main{ static int MAX_VERTEXNUM = 100; static int [] visited = new i ...

  2. Codeforces 381 简要题解

    做的太糟糕了...第一题看成两人都取最优策略,写了个n^2的dp,还好pre-test良心(感觉TC和CF的pretest还是很靠谱的),让我反复过不去,仔细看题原来是取两边最大的啊!!!前30分钟就 ...

  3. ACM OJ Collection

    浙江大学(ZJU):http://acm.zju.edu.cn/ 北京大学(PKU):http://acm.pku.edu.cn/JudgeOnline/ 同济大学(TJU):http://acm.t ...

  4. jdk的wsimport方法实现webservice客户端调用服务

    1.配置好jdk环境,打开命令行,输入wsimport回车能看到很多该命令的参数, -s:要生成客户端代码的存储路径 -p:对生成的代码从新打包 这两个最常用. 在打开的命令行中输入:wsimport ...

  5. 论DATASNAP中间件对象池

    在此,笔者以DATASNAP为例,其它中间件以此类推. 中间件为什么要使用对象池? 对象池——让所有的对象免堕轮回之苦,对象不再为其生和死而烦恼. 要想让中间件长久稳定地运行,做到无人值守,对象池很重 ...

  6. Linux vmstat:报告虚拟内存统计的工具

    众所周知,计算机必须有称之为RAM(随机访问内存)的存储器使得计算机工作.RAM指的是插在计算机主板上的物理存储.这里的RAM被用于加载像浏览器.文字处理器这类的程序,实际上,你使用的程序都运行在内存 ...

  7. Mac使用指南

    1.csrutil命令 简单来说 是苹果在新系统后加入的一个安全机制. Rootless讨论的前提是假定root账户是OS X(或者其他Unix系统)中对抗恶意程序保护操作系统的最后一道防线.意思是一 ...

  8. java 方法调用绑定--《java编程思想》学习笔记

    将一个方法调用同一个方法主体关联起来,就是绑定. 绑定分两种 :前期绑定 和 后期绑定 . 绑定------------- | -----前期绑定-------编译期绑定 { static , fin ...

  9. VM中ubuntu已经正确配置了静态IP仍无法上网

    情况描述:正确配置了ubuntu的IP,getway,DNS..无法ping通getway. 环境:宿主机:win7 32Bit  虚拟机:ununtu 10.04  VM:9.0.1 build-8 ...

  10. 获得临时文件目录(Temp文件夹)

    C:\Users\ADMINI~1\AppData\Local\Temp\   //GetTempPath获得临时文件目录(Temp文件夹)  function TempPath:String;var ...