"数据库MySQL学习总结"
在MySQL数据库的学习过程中,理解和掌握各种数据类型以及字段属性是至关重要的。数据类型决定了数据库中存储数据的格式和范围,而字段属性则影响着数据的处理方式和规则。
## 数据库MySQL
### 1-1、数据库的列类型
1. **数值类型**:
- `tinyint`:用于存储非常小的整数,占用1字节。
- `smallint`:存储较小的整数,占用2字节。
- `mediumint`:存储中等大小的整数,占用3字节。
- **`int`**:标准整数,占用4字节,是最常用的整数类型。
- `bigint`:存储较大的整数,占用8字节。
- `float`:浮点数,占用4字节,精度相对较低。
- `double`:浮点数,占用8字节,精度较高,但可能存在精度问题。
- `decimal`:用于金融计算,以字符串形式存储浮点数,确保精度。
2. **字符串类型**:
- `char`:固定长度的字符串,最大255个字符。
- **`varchar`**:可变长度的字符串,最大可达65536个字符,是存储变长字符串的首选。
- `tinytext`:微型文本,最多能存储2^8-1个字符。
- **`text`**:文本串,最多能存储2^16-1个字符,适合存储大量文本数据。
3. **时间日期类型**:
- `date`:仅存储日期,格式为YYYY-MM-DD。
- `time`:仅存储时间,格式为HH:MM:SS。
- **`datetime`**:同时存储日期和时间,最常用的时间格式。
- `timestamp`:时间戳,表示从1970年1月1日到现在的毫秒数,常用于记录数据的修改时间。
- `year`:仅存储年份,可为空。
### 1-2、数据库的字段属性(重点)
- **`Unsigned`**:指定字段为无符号整数,不允许存储负数。
- **`Zerofill`**:零填充,如果数字不足指定宽度,会在前面补零。例如,`int(3)`,5会被表示为005。
- **`自增`**(`auto_increment`):用于创建主键,每新增一条记录,值自动加1。必须是整数类型,可以设定初始值和步长。
- **`非空`**(`Null` vs. `not null`):`not null`约束要求字段不能为空,否则插入数据时会报错。`Null`则允许字段值为空。
- **`默认`**:为字段设定默认值,若插入数据时未指定该字段的值,将使用默认值。
在实际项目开发中,常见的字段设计包括:
- `id`:作为主键,通常使用`int`类型配合`auto_increment`属性。
- `version`:用于实现乐观锁机制,防止并发更新冲突。
- `is_delete`:伪删除标记,用于逻辑删除,而不是物理删除数据。
- `gmt_create`:创建时间,记录数据的插入时间。
- `gmt_update`:修改时间,记录数据的最近更新时间。
理解并熟练运用这些数据类型和字段属性,能够帮助我们更好地设计数据库表结构,优化数据存储和查询效率,保证数据的完整性和一致性。在进行数据库设计时,应根据实际需求灵活选择合适的数据类型,并合理设置字段属性,以达到最佳的数据库性能和管理效果。