当前课程知识点:MySQL数据库案例教程 > 第2章 数据库和表的基本操作 > 2.3 MySQL数据类型 > 2-3MySQL数据类型视频
同学们好
今天我们来学习第2章
数据库和表的基本操作
本次课的内容是MySQL数据类型
学习之前我们先看一个案例
请简单描述一下该图形
我们会说这个图形是圆形
半径10厘米 周长61.4厘米
对于我们刚刚的描述
图形的形状
我们用文字圆形来描述
半径 我们用整数
周长 我们用小数描述
不同的属性
我们选择不同的类型来描述
同样的
数据表由多个字段组成
每个字段在进行数据定义的时候
都要确定其数据类型
每个字段代表的数据内容
决定了该字段的数据类型
MySQL提供了丰富的数据类型
本节课将详细介绍
MySQL的不同数据类型
我们先学习整数类型
整数类型又称数值型
主要用来存储数字
MySQL 主要提供的整数类型有
TINYINT SMALLINT
MEDIUMINT INT
BIGINT
下表列出了 MySQL 的数值类型
TINYINT 字节数1
表示很小的整数
SMALLINT 字节数2
表示小的整数
MEDIUMINT 字节数3
表示中等大小的整数
INT 字节数4
表示普通大小的整数
BIGINT 字节数8
表示大整数
不同类型的整数
存储时
所需的字节数不相同
占用字节数最小的是 TINYINT类型
最大的是 BIGINT 类型
占用的字节数越多
所能表示的数值范围越大
在从多数值类型中
最常用的是INT类型
接下来我们学习小数类型
MySQL中小数类型
包括浮点数和定点数
浮点类型有两种
分别是单精度浮点数FLOAT
和双精度浮点数DOUBLE
定点类型只有一种就是DECIMAL
下表列出了 MySQL 的小数类型
FLOAT类型占4个字节
该类型的取值范围最小
Double类型占8个字节
该类型取值范围最大
DECIMAL类型的有效取值范围
是由M和D决定的
其中M表示的是数据的长度
D表示的是小数点后的长度
占有M+2个字节
浮点数和定点数相比
浮点数能够表示更大的范围
但是会引起精度问题
我们在创建表的时候精度小时
可以选择FLOAT类型
当精度到达小数点后
10位以上时
就需要选择DOUBLE类型
当小数位数固定的时候
可以选择DECIMAL类型
接下来我们学习日期和时间类型
MySQL中日期和时间类型有
YEAR
TIME
DATE
DTAETIME
TIMESTAMP
下表列出了 MySQL 的日期和时间类型
YEAR类型
字节数1 表示年份
TIME类型
字节数3 表示时间
DATE类型
字节数4 表示日期
DATETIME类型
字节数8 表示日期和时间
TIMESTAMP类型
字节数4 表示日期和时间
格式同DATETIME
每一个类型都有合法的取值范围
当输入的值不合法时
系统将直接插入“零”值
我们在使用的时候
表示年份
一般会使用YEAR类型
因为该类型比DATE类型占用更少的空间
表示时分秒
一般会使用TIME类型
表示年月日
一般会使用DATE类型
表示年月日时分秒
一般会使用DATETIME或TIMESTAMP类型
通常
我们使用NOW()
来输人当前系统的日期和时间
接下来我们学习字符串类型
字符串类型
用来存储字符串数据
MySQL中的字符串类型有
CHAR
VARCHAR
TEXT
ENUM SET等
下表列出了 MySQL 的字符串类型
CHAR类型
表示固定长度字符串 M为长度
VARCHAR类型
表示可变长度字符串 M表示最大长度
TEXT类型
表示文本数据
ENUM类型
表示枚举类型
它的值只能从枚举列表中选择一个
SET类型
表示字符串对象可以有零个或多个SET对象
CHAR 和 VARCHAR 类型
在MySQL中使用比较频繁
都用来表示字符串
它们是有区别的
CHAR类型
表示固定长度字符串
在定义时
指定字符串长度
不管插入值的长度实际是多少
它所占用的存储空间都是M个字节
而VARCHAR为可变长度字符串
占用的字节数为实际长度加1
在实际使用时
如果字符串长度不经常变化
可以使用CHAR类型
经常发生变化
可以用VARCHAR类型
存储大量字符串可以使用TEXT类型
接下来我们看一个案例
案例1
创建一个用于存储学生成绩的表course
course表一共有四个字段
Cno CHAR类型 2个字节
表示课程号
Cname VARCHAR类型20个字节
表示课程名
start INT类型
表示开课学期
credit FLOAT类型
表示学分
打开MySQL可视化工具
先使用USE命令选择stu数据库
然后输入创建表命令
CREATE TABLE course (cno char(2)
cname varchar(20)
start int
credit float )
选中 执行
course表就创建成功了
我们查看一下表结构
输入命令 DESC course
选中 执行
从结果可以看到
course表各字段都按照要求创建成功了
枚举类型也是一个字符串对象
但是它不能像char varchar类型
text 类型那样直接使用
它必需设定枚举的值
其语法格式如下
字段名 ENUM( '值1', '值2', …, '值n' )
字段名
是将要定义为枚举的字段
值n
指枚举列表中第n个字段
Mysql字符串类型在输入时
需要用单引号或者双引号引起来
所以我们看到枚举类型
每一个值两端都有单引号
注意
枚举类型的字段在取值时
只能从指定的枚举列表中获取
而且一次只能取一个
我们看案例2
创建一个用于存储学生信息的表student
表结构如下所示
输入创建表命令
CREATE TABLE student (
sid char(4)
sname varchar(20)
sex enum('男','女')
birth date
grade year
department enum
('信息工程系' '化学工程系' '机械电子系')
addr varchar(50))
选中 执行
执行成功后student表就创建成功了
我们查看一下表结构
输入命令DESC student
选中 执行
从查询结果可以看到
student表各字段
都按照要求创建成功了
SET类型也是一个字符串对象
可以有零或多个值
语法格式为
字段名 SET( '值1', '值2', …, '值n' )
SET类型与枚举类型相同
但与枚举类型不同的是
枚举类型的字段
每次只能从定义的列表中选择一个值
而 SET 类型的字段
可以从定义的列表中选择多个值
比如
一个人的兴趣是画画和跳舞
我们就可以输入”画画 跳舞”
这就是set类型和枚举类型最大的区别
最后我们学习二进制类型
二进制类型 主要用来存储二进制数据
比如图片和声音
MySQL 中的二进制类型有
BIT BINARY VARBINARY TINYBLOB
BLOB MEDIUMBLOB LONGBLOB
二进制类型和字符串类型相似
只不过存储的是二进制字符
以上是本节课的全部内容
接下来我们看几个思考题
1 TIME类型 DATE类型
和DATETIME类型的区别是什么
2 CHAR类型和VARCHAR类型的区别是什么
最后我们对本次课进行总结
我们学习了MySQL的数据类型
主要包括
1 整数类型
常用的是INT类型
2 小数类型
包括浮点数和定点数
3 日期和时间类型
4 字符串类型
其中CHAR类型长度固定
VARCHAR类型长度可变
最后我们学习了二进制类型
主要用来存储图片和声音
数据库中的每个字段
都应该有合适的数据类型
用于限制或允许该列中存储的数据
在设计表时
就应该考虑清楚每个字段适合的数据类型
虽然后期可以修改表结构
但是
更改包含数据的表结构
有可能会导致数据丢失
因此
在创建表时
最好为每个字段
设置正确的数据类型和长度
避免后期更改
同样我们在学习时
切记盲目跟风
要找到适合自己的学习方法
只有适合自己的方法
才是最好的方法
本次课就讲到这里
谢谢 再见
-1.1 数据库基础知识
-1.2 MySQL的安装与运行
-第1章 测试
-2.1 数据库的基本操作
-2.2 表的基本操作
-2.3 MySQL数据类型
-2.4 约束设置
-2.5 索引
--2-5索引视频
--2-5索引课件
--2-5索引实训
-第2章测试
-3.1 插入记录
-3.2 修改记录
-3.3 删除记录
--3.3删除记录
-第3章 测试
-4.1 select语句
-4.2 单表查询
-4.3 多表查询
-4.4 子查询
--4-4子查询课件
--4-4子查询实训
-4.5 外键
--4-5外键视频
--4-5外键课件
--4-5外键实训
-4.6 视图
--4-6视图视频1
--4-6视图视频2
--4-6视图课件
--4-6视图实训
-第4章测试
-5.1 函数
--5-1系统函数
--5-1函数课件
--5-1 函数实训
-5.2 流程控制语句
-5.3 事务与游标
-5.4 存储过程
-5.5 触发器
--5-5触发器视频
--5-5触发器课件
--5-5触发器实训
-第5章测试
-6.1 数据库备份与还原
-6.2 异构数据源导入导出
-第6章测试
-7.1 用户管理
-7.2 权限管理
-7.3 应用实例开发
-第7章测试