数据类型
1. 数值类型
-
整型:
INT
:通常用于存储整数。SMALLINT
:比INT
占用空间小,用于较小的整数值。BIGINT
:用于存储较大的整数值。TINYINT
:占用空间最小的整型,通常用于布尔值或小范围的枚举。
-
浮点数和定点数:
FLOAT
:单精度浮点数。DOUBLE
:双精度浮点数,比FLOAT
更精确。DECIMAL
(或NUMERIC
):用于存储精确的小数,可以指定精度。
2. 字符串类型
-
固定长度字符串:
CHAR
:固定长度的字符串,不足部分用空格填充。
-
可变长度字符串:
VARCHAR
:可变长度的字符串,只占用必要的空间。
-
文本数据:
TEXT
:用于存储大量文本数据。
3. 日期和时间类型
- 日期和时间:
DATE
:格式为YYYY-MM-DD
。TIME
:格式为HH:MM:SS
。DATETIME
:格式为YYYY-MM-DD HH:MM:SS
。TIMESTAMP
:与DATETIME
类似,但时间戳是自Unix纪元(1970年1月1日)以来的秒数。
4. 二进制数据类型
-
二进制字符串:
BINARY
:固定长度的二进制字符串。VARBINARY
:可变长度的二进制字符串。
-
二进制大对象:
BLOB
:二进制大对象,用于存储二进制文件。MEDIUMBLOB
、LONGBLOB
:用于存储更大的二进制文件。
5. 布尔类型
- 布尔值:
BOOLEAN
:存储真(TRUE)或假(FALSE)。BIT
:有时用于存储单个布尔值。
6. 枚举类型
- ENUM:存储一组预定义的值,例如
ENUM('value1', 'value2', 'value3')
。
7. 集合类型
- SET:存储多个值的集合,例如
SET('value1', 'value2', 'value3')
。
8. 其他注意事项
- 精度和范围:了解每种数据类型的精度和范围,以确保数据的正确存储。
- 默认值:为列指定默认值,以便在没有提供值时使用。
- 非空约束:使用
NOT NULL
约束确保列不接受空值。 - 主键和外键:了解如何使用数值和字符串类型作为主键和外键。
- 索引:选择合适的数据类型可以提高查询性能和索引效率。
修改表结构
修改表结构是数据库管理中常见的操作,以下是一些关键点,可以作为修改表结构时的笔记:
1. 使用ALTER TABLE
语句
ALTER TABLE
是用于修改现有数据库表结构的DDL(数据定义语言)语句。
2. 添加列
- 使用
ADD COLUMN
子句向表中添加新列
ALTER TABLE table_name ADD COLUMN column_name datatype;
3. 删除列
- 使用
DROP COLUMN
子句从表中删除列
ALTER TABLE table_name DROP COLUMN column_name;
- 注意:删除列会丢失该列的所有数据,操作前需谨慎考虑。
4. 修改列
- 使用
MODIFY COLUMN
子句修改列的数据类型或其它属性。
ALTER TABLE table_name MODIFY COLUMN column_name datatype;
- 如果只是修改列的非数据类型属性(如默认值),可以使用
ALTER COLUMN
。
5. 重命名列
- 使用
CHANGE COLUMN
子句重命名列。
ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name datatype;
- 注意:这也会改变列的数据类型。
6. 重命名表
- 使用
RENAME TO
子句重命名表
ALTER TABLE old_table_name RENAME TO new_table_name;
7. 添加索引
- 使用
ADD INDEX
子句添加索引。
ALTER TABLE table_name ADD INDEX index_name (column_name);
8. 删除索引
- 使用
DROP INDEX
子句删除索引
ALTER TABLE table_name DROP INDEX index_name;
9. 添加约束
- 使用
ADD CONSTRAINT
子句添加约束,如主键、外键、唯一、检查等。
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column_name);
10. 删除约束
- 使用
DROP CONSTRAINT
子句删除约束。
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
11. 考虑性能影响
- 修改表结构可能会影响数据库性能,特别是在生产环境中。在执行这些操作之前,考虑在低峰时段进行,或者在测试环境中进行测试。
12. 备份数据
- 在修改表结构之前,备份相关数据以防万一操作出错导致数据丢失。
13. 检查依赖
- 在删除或修改列之前,检查是否有视图、存储过程、触发器等依赖于这些列,以免破坏数据库的完整性。
14. 事务管理
- 考虑将修改表结构的操作放在事务中,以便在出现错误时可以回滚到原始状态。
15. 文档更新
- 修改表结构后,更新相关的文档和代码,确保所有使用该表的应用程序都能正确地处理新的表结构。
通过遵循这些笔记,你可以更安全、更有效地管理数据库表结构的变更。