20141230 mysql数值类型和列属性二
枚举字符串

枚举字符串指的是在定义之初就确定要存放的字符串有哪些,然后在数据进行存储的时候就只能存储已经定义过的字符串,只能使用任意的一个字符串。(单选框)

语法:enum

字段名 enum(字符串1,字符串2,…); 枚举采用最多2个字节保存数据,最多能存65535个数据

枚举的意义

1. 规范数据:没有进行维护的数据不能插入

2. 节省空间:实际存储的数据是数字

虽然SQL是一种强类型语言,但是SQL能够自动转换数据类型(与php一样)

select有一个特点:后面可以跟任意表达式

证明枚举存储的是数字

枚举的字符串与数值的关系

因为枚举内部真实存储的数值,因此枚举可以通过数值进行数据插入。

枚举存储原理

枚举的应用

1. 固定的不变的,但是具有多个值的数据可以使用枚举

集合字符串

集合字符串与枚举字符串大致一致,但是集合数据指的是可以选中定义的值中间的部分数据或者全部数据。多选

语法:set

字段名 set(字符串1,字符串2,…);

集合中的数据,每一个数据都是占用一个字节中的一个位来进行表示,然后保存是数值却是所有的位共同转换成十进制显示

数据在集合中占位的原理

换算的时候需要将二进制颠倒过来,然后进行换算成十进制。

set最多占用8个字节存储数据:8个字节共64位,最多集合只能存放64个元素,但是组合却有2^64之多。

集合的意义

1. 规范了数据,只能存储定义过的数据

2. 节省了空间

虽然集合和枚举都能够为数据库节省空间,并且能够规范数据,但是作为php程序员,增加了php维护数据的难度,所以php程序员基本上不使用这两种数据类型。

时间日期类型

SQL中用来存储时间或者日期的数据类型

类型

显示格式

取值

存储空间

零值

DATETIME

YYYY-MM-DD HH:MM:SS

'1000-01-01 00:00:00'到'9999-12-31 23:59:59'

8

0000-00-00 00:00:00

TIMESTAMP

YYYY-MM-DD HH:MM:SS

是‘1970-01-01 00:00:00’到2038-01-19 03:14:07

4

0000-00-00 00:00:00

DATE

YYYY-MM-DD

'1000-01-01'到'9999-12-31

3

0000-00-00

TIME

HH:MM:SS

-838:59:59'到'838:59:59'

3

00:00:00

YEAR

YYYY

1901到2155

1

0000

datetime:日期时间,8个字节存储

timestamp:时间戳,使用标准整型存储,不是整型数据,而是与datetime格式一样的数据

date:datetime的日期部分

time:datetime的时间部分,time表示的不是时间点,是时间段

year:年份,1个字节存储,只能表示255年

时间格式:表示时间段

作为php程序员,基本上不适用SQL的任何时间格式,都是使用php的时间戳

在mysql中,任意一条记录的长度不能超过65535个字节。

varchar的理论数据长度是65535个字符

GBK/UTF8编码最大的varchar长度

在SQL中,所有的字段只要有一个字段允许为空,那么整条记录就需要留出一个字节用来保存null,如果有多个字段为空,也只需要一个字节。

text文本类型不占用记录的总长度,是额外开辟空间的存储数据,但是text字段本身要占据一定的数据长度(10个字节)

列属性

除了数据类型对列进行数据规范之外,还有一些额外的限制对字段进行约束。

列属性:NULL/not null,default,primary key,auto_increment,comment,unique key

NULL

字段是否允许为空,不允许为空就是not null。

语法:字段名 数据类型 NULL/NOT NULL,默认的是null

默认值

关键字default,在定义结构的时候,如果字段没有被指定数据,那么系统会使用默认的数据来进行数据填充。

默认值的使用

1. 要使用默认值,不对该字段进行数据插入(字段列表不能出现对应的字段)

2. 要使用默认值,可以在数据值插入的位置使用default关键字

主键

主要的键,用主键修饰的字段,不能为null,也不能出现任意数据的重复。能够唯一的标识出一条记录。一张表只能有一个主键。

添加主键:

1. 在要做主键的字段之后添加primary key关键字

2. 在所有的字段之后,指定主键,可以指定复合主键(多字段主键)

语法:primary key(字段列表)

3. 假设表已经存在了,但是需要增加主键,可以通过修改表的结构来增加主键:必须实现保证该字段的数据没有重复。

a) 修改字段,给字段增加primary key属性

b) 可以直接通过修改表结构增加主键(复合主键)

主要的效果:具有唯一性,不能插入重复的数据

主键不能修改,但是可以删除

语法:修改表结构

alter table 表名 drop primary key;

自增长

auto_increment,当某个字段有了自增长属性之后,如果改字段在进行数据新增的时候,没有指定数据,那么系统会自动在原有的基础上自动+1,说明字段类型必须是整型。

自动增长通常是搭配主键使用

自增长的应用

1. 不为当前字段赋值

2. 可以为自动增长字段使用null/default关键字显示的调用

自动增长之所以能够填充对应的数据,是因为在表的选项中已经指定好对应的值了

修改自动增长:修改自动增长下一个子增长值,但是修改的值只能比当前已有的数据的值要大,而不能小。

alter table 表名 auto_increment = 值

效果

删除自增长

alter table 表名 modify 字段 不再增加auto_increment属性;

auto_increment往往搭配主键:删除主键

想要删除有自动增长的主键,必须先删除自动增长再删除主键。

自增长控制:初始值和步长

show variables like ‘auto_increment%’;

注意:一张表只能有一个自增长。

修改步长

set auto_increment_increment = 2;

效果

这种修改是针对当前用户当前连接有效(会话级别)

作业:

1. 制作一个教学管理系统的数据库:学生,班级,老师等,根据不同的数据的需求确定对应的属性和数据类型

2. 制作小网站:教学管理系统

a) 登录验证,查看所有的学生信息

b) 老师能够查看所有的信息

posted on 2017-02-22 18:40 山山未迟 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lifushan/p/6430434.html

20141230 mysql数值类型和列属性二相关推荐

  1. 20141230 mysql数值类型和列属性一

    20141230 mysql数值类型和列属性一 回顾 数据库基础知识,关系型数据库(行/记录,列/字段,SQL) 基本SQL操作:库操作,表操作(字段)和数据操作 字符集 校对集 1. 什么是校对集? ...

  2. mysql数值类型总结及常用函数

    最近在学习下,总结一下mysql数值类型: mysql字符类型分: 1.整数类型: 字节                    值范围 INTERGER               1         ...

  3. MYSQL学习笔记06:列属性[NULL,default,comment],主键,自增长,唯一键,数据库设计规范[范式(1NF,2NF,3NF),逆规范化],表关系[1V1,1VN,NVN]

    列属性 列属性又称为字段属性. 在mysql中一共有6个属性:null,默认值,列描述,主键,唯一键和自增长. NULL属性 NULL属性代表字段为空. 如果对应的值为yes表示该字段允许为null, ...

  4. Mysql常用类型和字段属性

    前言 好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键.M前言 好比C++中,定义int类型 ...

  5. mysql建表以及列属性

    一.整型( int, tinyint, smallint 等 ) ------------------------------------------------------------------- ...

  6. mysql数值类型占用字节及范围_mysql数据类型及占用字节数【mysql】

    一.数值类型 1,int 类型  4字节 .备注:一个字节8位,即有32位,存在一个符号位.所以能存的数值大小为-2的31次方到2的31次方: 2,tinyint  类型  1字节. 3,smalli ...

  7. 【MySQL】AUTO_INCREMENT只能应用于数值类型的列,且该列需要被索引

    MySQL中的自动增量AUTO_INCREMENT,是有使用条件的 该列(column)的数据类型必须是数值型(这点容易理解,数值才能自增) 该列必须被索引,比如定义为主键(PRIMARY KEY) ...

  8. mysql 数值类型 长度_mysql中的数据类型的长度

    位,字节,字 --------------------------------------------------------------- 8位(bit)=1字节(Byte),1024字节=1KB: ...

  9. Mysql数值类型之float,double,decimal

    对于小数的表示,MySQL分为两种方式:浮点数和定点数.浮点数包括float(单精度),double(双精度),而定点数只有decimal一种表示.定点数在MySQL内部以字符串的形式存放,比浮点数更 ...

最新文章

  1. SOFAMosn配置模型
  2. 七骑士android版上线时间,腾讯独代韩手游《七骑士》今日全面公测
  3. SimpliciTI简介
  4. 对 makefile 中 $*和静态模式规则结合的学习
  5. 【实用】C#测试web服务是否可用
  6. React Native指南
  7. 【牛客 - 1080D】tokitsukaze and Event(最短路,思维)
  8. windows2003管理组创建
  9. 今晚直播丨手把手安装搭建GoldenDB
  10. 数据平台、大数据平台、数据中台……还分的清不?
  11. java异步获取结果_java获取异步计算的结果
  12. 判断无序数组中是否存在两个数之和为m
  13. 3. Mac 下安装python
  14. PS小技巧 | 怎么又下雨了
  15. latex中怎么设置每一行文字都对齐_LaTeX技巧870:Latex如何在设置行距后让字体垂直居中?...
  16. 组建团队和调整团队结构
  17. JAVA导出exls时报oom,Poi导出产生OOM解决方案
  18. 《西西弗神话》笔记——不期待人生可以过得很顺利,但我希望碰到人生难关的时候,自己可以是它的对手
  19. git branch -f的作用
  20. 【plotly】ImportError: The plotly.plotly module is deprecated, please install the chart-studio package

热门文章

  1. 移动开发者选项手机如何打开真机调试模式
  2. Kubernetes NodePort vs Loadbalancer vs Ingress 在生成中如何选择?
  3. 逻辑漏洞之修改响应包绕过登录校验
  4. Nginx-Lua模块的执行顺序
  5. Vue学习(slot、axios)-学习笔记
  6. 算法训练 最长字符串 c语言
  7. 学习python、数据结构等很多的博客
  8. Nutch+Hadoop集群搭建
  9. spring boot项目打包成war并在tomcat上运行的步骤
  10. Spark Shuffle Write阶段磁盘文件分析