首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第1章 数据库和SQL
1-1 数据库是什么
我们身边的数据库
为什么DBMS那么重要
DBMS的种类
1-2 数据库的结构
RDBMS的常见系统结构
表的结构
1-3 SQL概要
标准SQL
SQL语句及其种类
SQL的基本书写规则
1-4 表的创建
表的内容的创建
数据库的创建(CREATE DATABASE语句)
表的创建(CREATE TABLE语句)
命名规则
数据类型的指定
约束的设置
1-5 表的删除和更新
表的删除(DROP TABLE语句)
表定义的更新(ALTER TABLE语句)
向Product表中插入数据
第2章 查询基础
2-1 SELECT语句基础
列的查询
查询出表中所有的列
为列设定别名
常数的查询
从结果中删除重复行
根据WHERE语句来选择记录
注释的书写方法
算术运算符
需要注意NULL
比较运算符
对字符串使用不等号时的注意事项
不能对NULL使用比较运算符
2-3 逻辑运算符
NOT运算符
AND运算符和OR运算符
通过括号强化处理
逻辑运算符和真值
含有NULL时的真值
第3章 聚合与排序
3-1 对表进行聚合查询
聚合函数
计算表中数据的行数
计算NULL之外的数据的行数
计算合计值
计算平均值
计算值和小值
使用聚合函数删除重复值(关键字DISTINCT)
3-2 对表进行分组
GROUP BY子句
聚合键中包含NULL的情况
使用WHERE子句时GROUP BY的执行结果
与聚合函数和GROUP BY子句有关的常见错误
3-3 为聚合结果指定条件
HAVING子句
HAVING子句的构成要素
相对于HAVING子句,更适合写在WHERE子句中的条件
3-4 对查询结果进行排序
ORDER BY子句
指定升序或降序
指定多个排序键
NULL的顺序
在排序键中使用显示用的别名
ORDER BY子句中可以使用的列
不要使用列编号
当前位置:
首页>>
技术小册>>
SQL基础教程(上)
小册名称:SQL基础教程(上)
### 章节:数据类型的指定 在数据库设计和SQL编程中,数据类型的指定是构建稳定、高效且易于维护的数据库系统的基石。数据类型定义了列中可以存储的数据种类以及数据的存储方式,它直接影响数据库的性能、存储效率和数据的准确性。本章将深入探讨SQL中常见的数据类型,包括数值型、字符型、日期时间型、二进制型以及特殊的数据类型,并解释如何根据实际需求选择合适的数据类型。 #### 一、引言 数据类型是数据库管理系统(DBMS)用于区分不同种类信息的手段。在创建表时,为表中的每一列指定数据类型是必要步骤之一。这不仅有助于确保数据的一致性和准确性,还能优化存储和查询性能。正确的数据类型选择能够避免数据错误、提高查询效率,并有助于实现数据完整性约束。 #### 二、数值型数据类型 数值型数据类型用于存储数值数据,包括整数和浮点数。常见的数值型数据类型有: 1. **INTEGER(或INT)**:用于存储整数值。根据数据库系统的不同,INT类型可能占用不同的字节数(通常是4字节),能够存储的数值范围也因此而异。 2. **BIGINT**:当需要存储的整数值超出INT类型的范围时,可以使用BIGINT。它通常占用8字节,能够表示更大的整数值。 3. **SMALLINT**:对于较小的整数值,可以使用SMALLINT以节省存储空间。它通常占用2字节。 4. **TINYINT**:更小的整数值可以使用TINYINT存储,它通常占用1字节。 5. **DECIMAL(或NUMERIC)**:用于存储精确的小数。通过指定精度(总位数)和小数位数,可以精确控制数值的存储方式。例如,DECIMAL(5,2)可以存储最多5位数字,其中2位是小数。 6. **FLOAT** 和 **DOUBLE**:用于存储浮点数(即带有小数点的数值)。FLOAT是单精度浮点数,而DOUBLE是双精度浮点数,后者能提供更高的精度。 #### 三、字符型数据类型 字符型数据类型用于存储文本数据,如姓名、地址等。常见的字符型数据类型包括: 1. **CHAR(n)**:固定长度的字符串。n指定了字符串的最大长度,如果存储的字符串长度小于n,剩余位置将用空格填充。CHAR类型适合存储长度几乎相同的字符串,因为它可以减少存储空间碎片。 2. **VARCHAR(n)** 或 **VARCHAR2(n)**(Oracle特有):可变长度的字符串。n指定了字符串的最大长度,实际存储时仅占用必要的空间加上一个长度标识(通常为1或2字节)。VARCHAR类型比CHAR类型更节省空间,是存储可变长度字符串的首选。 3. **TEXT** 或 **CLOB(Character Large Object)**:用于存储大量文本数据。TEXT类型在某些数据库系统中存在,而CLOB是SQL标准中定义的用于存储大量文本数据的类型。 #### 四、日期时间型数据类型 日期时间型数据类型用于存储日期、时间和时间戳信息。常见的日期时间型数据类型包括: 1. **DATE**:用于存储日期和时间信息,通常包括年、月、日、时、分、秒。不同数据库系统对DATE类型的支持可能略有差异。 2. **TIME**:仅用于存储时间信息,不包括日期。 3. **TIMESTAMP**:除了日期和时间信息外,还包括时区或秒的小数部分,以提供更高的时间精度。 4. **DATETIME**:在一些数据库系统中,DATETIME是DATE和TIME的结合,用于存储日期和时间信息,但不包含时区信息。 #### 五、二进制型数据类型 二进制型数据类型用于存储二进制数据,如图片、音频、视频文件等。常见的二进制型数据类型包括: 1. **BINARY(n)**:固定长度的二进制字符串。n指定了二进制字符串的最大长度。 2. **VARBINARY(n)**:可变长度的二进制字符串。n指定了二进制字符串的最大长度,实际存储时仅占用必要的空间加上一个长度标识。 3. **BLOB(Binary Large Object)**:用于存储大量的二进制数据,如图片、视频文件等。BLOB类型允许存储的数据量远大于VARBINARY类型。 #### 六、特殊数据类型 除了上述常见的数据类型外,还有一些特殊的数据类型用于满足特定的存储需求: 1. **ENUM**:枚举类型,允许在列中定义一组预定义的值,列中的每个值都必须是这组值中的一个。ENUM类型有助于限制列中的值,提高数据的准确性。 2. **SET**:集合类型,与ENUM类似,但SET可以存储零个或多个预定义的值,且每个值在集合中都是唯一的。SET类型适用于需要表示多个选项(如用户的兴趣爱好)的场景。 3. **JSON**:在一些现代数据库系统中,支持直接存储JSON(JavaScript Object Notation)格式的数据。JSON类型允许在数据库中存储复杂的、嵌套的数据结构,便于与前端JavaScript应用程序进行数据交换。 4. **UUID**:通用唯一识别码,用于生成数据库表中每行的唯一标识符。UUID类型的数据通常是32个十六进制数字,通过特定的算法生成,确保全球范围内的唯一性。 #### 七、数据类型选择的原则 选择合适的数据类型对于数据库的性能和效率至关重要。以下是一些数据类型选择的原则: 1. **准确性**:确保所选数据类型能够准确表示数据,避免数据丢失或精度下降。 2. **存储空间**:在保证准确性的前提下,尽量选择占用空间较小的数据类型,以节省存储空间。 3. **性能**:考虑数据类型对数据库查询和更新操作的影响,选择能够提高性能的数据类型。 4. **未来扩展性**:考虑到未来可能的数据增长和变化,选择具有一定灵活性和可扩展性的数据类型。 5. **数据库兼容性**:确保所选数据类型与所使用的数据库系统兼容,避免迁移或升级时的兼容性问题。 #### 八、总结 数据类型的指定是数据库设计和SQL编程中的基础且关键的一步。通过合理选择数据类型,可以确保数据的准确性、节省存储空间、提高查询性能,并有助于实现数据完整性约束。本章详细介绍了SQL中常见的数据类型及其特点,并提供了数据类型选择的原则,希望能为读者在数据库设计和SQL编程中提供有益的参考。
上一篇:
命名规则
下一篇:
约束的设置
该分类下的相关小册推荐:
SQL基础教程(下)
高性能的Postgres SQL
PostgreSQL入门教程
SQL基础教程(中)