读SQL学习指南(第3版)笔记02_数据类型

1. 命令行工具

1.1. mysql -u root -p;

1.2. mysql> show databases;

1.3. mysql> use sakila;

Database changed

1.4. mysql> SELECT now();

1.4.1. now()是MySQL的内建函数

1.4.2. 返回当前日期和时间

1.5. mysql> SELECT now() FROM dual;

1.5.1. Oracle数据库服务器要求查询语句中必须包含from子句

1.6. 只需要输入quit;或exit;就可以返回Windows或UNIX shell

2. 数据类型

2.1. 字符集

2.1.1. 拉丁字母的语言

2.1.1.1. 单字节字符集

2.1.1.2. 字符数量很少,只需要单字节就能存储每个字符

2.1.1.3. 之前版本的MySQL服务器中,默认字符集是latin1

2.1.2. 多字节字符集

2.1.2.1. 日语

2.1.2.2. 韩语

2.1.2.3. 多字节来存储每个字符

2.1.2.4. 版本8中改为了utf8mb4

2.1.3. mysql> SHOW CHARACTER SET;

2.1.4. 可以在同一个数据表内存储不同的字符集数据

2.1.5. 为数据列指定非默认字符集,只需要在类型定义后加上系统支持的字符集名称

2.1.5.1. varchar(20) character set latin1

2.1.6. 设置整个数据库的默认字符集

2.1.6.1. create database european_sales character set latin1;

2.2. 字符型数据

2.2.1. 定长字符串

2.2.1.1. char类型

2.2.1.2. 使用空格向右填充

2.2.1.3. 并始终占用同样数量的字节

2.2.1.4. 最大长度为255字节

2.2.1.5. 存储的所有字符串长度都一样时使用

2.2.2. 变长字符串

2.2.2.1. varchar类型

2.2.2.2. 不需要向右填充

2.2.2.3. 占用的字节数不固定

2.2.2.4. 最大长度为65,535字节

2.2.2.4.1. 64KB

2.2.2.5. 字符串长度各不相同时使用

2.2.3. Oracle

2.2.3.1. char类型

2.2.3.1.1. 最大长度为2000字节

2.2.3.2. varchar2类型

2.2.3.2.1. 最大长度为4,000字节

2.2.3.3. 更大的文档,可以选择clob类型

2.2.4. SQL Server

2.2.4.1. 最大长度为8,000字节的char和varchar类型的数据

2.2.4.2. varchar(max)的列中存储最大长度达2GB的数据

2.3. 文本数据

2.3.1. 需要存储的数据超出了varchar类型的最大长度(64KB)

2.3.2. 如果所加载的数据超出了文本列类型的最大长度,会被截断

2.3.3. 在加载时,文本列数据尾部的空格不会被删除

2.3.4. 在对text类型的文本列进行排序或分组时,只使用前1,024字节

2.3.4.1. 该限制量可以根据需要增加

2.3.5. tinytext

2.3.5.1. 最大255字节

2.3.6. text

2.3.6.1. 最大65535字节

2.3.7. 一般情况下没有什么必要再使用tinytext或text类型了

2.3.8. mediumtext

2.3.8.1. 最大16777215字节

2.3.9. longtext

2.3.9.1. 最大4294967295字节

2.3.10. 存储文档

2.4. 数值型数据

2.4.1. 布尔型

2.4.1.1. 0表示false

2.4.1.2. 1表示true

2.4.2. 从1字节(tinyint)到8字节(bigint)

2.4.3. 最常用的是存储整数的数值类型

2.4.3.1. 定义为unsigned,通知服务器该列中存储的所有数据均大于或等于0

2.4.4. 如果为浮点数类型的列指定了精度和有效位,记住,超出有效位和/或精度的数据会被四舍五入

2.4.4.1. 定义为unsigned,但这只表示禁止列中存储负数,并不会改变该列所存储数据的取值范围

2.4.5. 高精度的科学或制造业数据往往需要精确到小数点后8位

2.5. 时间型(temporal)数据

2.5.1. datetime、timestamp和time类型也允许包含小数点后面最多有6位数字的秒数(微秒)

2.5.1.1. 当使用这些数据类型定义列时,可以提供一个0~6的数字

2.5.2. datetime(2)表示允许时间精确到1/100秒

2.5.3. timestamp类型

2.5.3.1. 存放的信息与datetime类型一样(包括年、月、日、时、分、秒)

2.5.3.2. 当行被添加到数据表或被修改时,MySQL服务器会自动为timestamp类型的列填充当前的日期/时间

2.5.4. 只需要存放年份的列可以使用year类型

2.5.5. 存放完成某项任务所需时间的列可以使用time类型

2.5.5.1. 通过两个datetime类型的列来获取(一个存放任务开始的日期/时间,另一个存放任务结束的日期/时间),计算两者的差值就可以得到所花费的时间

2.5.5.2. 使用单个time类型的列更简单

2.5.6. Oracle Datebase接受的日期范围是公元前4712年至公元9999年

2.5.7. MySQL其时间范围是公元1000年至公元9999年

2.5.8. SQL Server则只能处理公元1753年至公元9999年

2.5.8.1. SQL Server 2008的datetime2数据类型,其日期范围从公元1年至公元9999年

2.5.9. 如果存储的是历史日期,就需要注意了

posted @ 2023-08-22 06:13  躺柒  阅读(119)  评论(0编辑  收藏  举报