add: MySQL字段的整数类型
This commit is contained in:
		
							parent
							
								
									184a96ff61
								
							
						
					
					
						commit
						bb0c0b2989
					
				@ -51,7 +51,7 @@ create database 数据库名称 [数据库选项];
 | 
			
		||||
- 由数字、字母和下划线组成。
 | 
			
		||||
- 不区分大小写。
 | 
			
		||||
- 不能以数字开头。
 | 
			
		||||
- 建议使用下划线法创建复杂的数据库名字。比如 `qianguyihao_db`。
 | 
			
		||||
- 建议使用下划线法创建复杂的数据库名字。比如 `db_qianguyihao`。
 | 
			
		||||
 | 
			
		||||
**举例**:
 | 
			
		||||
 | 
			
		||||
@ -165,16 +165,28 @@ create table [数据库名].[表名] (
 | 
			
		||||
) 表选项;
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**举例1**、在当前数据库中创建数据表 `t_student1`:
 | 
			
		||||
**举例**:
 | 
			
		||||
 | 
			
		||||
1、在当前数据库中创建数据表 `table_qiangu1`,并新增**主键** id 字段:
 | 
			
		||||
 | 
			
		||||
```sql
 | 
			
		||||
CREATE TABLE table_qiangu1 (
 | 
			
		||||
  id int NOT NULL AUTO_INCREMENT PRIMARY KEY
 | 
			
		||||
);
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
2、在当前数据库中创建数据表 `t_student1`,并新增 name、age这连个字段:
 | 
			
		||||
 | 
			
		||||
```sql
 | 
			
		||||
create table t_student1(
 | 
			
		||||
    name varchar(255),
 | 
			
		||||
    age int
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**举例2**、在指定的数据库 `db_2` 中创建数据表 `t_student2`:
 | 
			
		||||
3、在指定的数据库 `db_2` 中创建数据表 `t_student2`:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
```sql
 | 
			
		||||
@ -184,7 +196,7 @@ create table db_2.t_student2(
 | 
			
		||||
);
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**举例3**、在当前数据库中创建数据表 `t_student3`(含表选项):
 | 
			
		||||
4、在当前数据库中创建数据表 `t_student3`(含表选项):
 | 
			
		||||
 | 
			
		||||
```sql
 | 
			
		||||
create table t_student3(
 | 
			
		||||
@ -193,7 +205,7 @@ create table t_student3(
 | 
			
		||||
)engine Innodb charset utf8MB4;
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
举例3中的代码涉及到存储引擎,这里解释一下:
 | 
			
		||||
举例4中的代码涉及到存储引擎,这里解释一下:
 | 
			
		||||
 | 
			
		||||
**存储引擎**是指数据存储和管理的方式,MySQL中提供了多种存储引擎,一般使用默认存储引擎 InnoDB。
 | 
			
		||||
 | 
			
		||||
@ -330,6 +342,15 @@ rename table 数据库名.原表名 to 数据库名.新表名;
 | 
			
		||||
alter table table1 charset gbk;
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### 7、删除数据表
 | 
			
		||||
 | 
			
		||||
语法格式:
 | 
			
		||||
 | 
			
		||||
```sql
 | 
			
		||||
drop table 数据表名称;
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 三、字段(Field)的基本操作
 | 
			
		||||
 | 
			
		||||
@ -417,7 +438,7 @@ alter table 表名 change 原字段名 新字段名 字段类型 [字段属性]
 | 
			
		||||
 | 
			
		||||
- 修改字段名时,一定要设置新字段的字段类型。
 | 
			
		||||
 | 
			
		||||
- 虽然 change 关键字也可以修改现有字段的字段属性,字段位置,但我们一般是通过 modify 关键字来做(下面会讲)。
 | 
			
		||||
- 虽然 change 关键字也可以修改现有字段的字段属性、字段位置,但我们一般是通过 modify 关键字来做(下面会讲)。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
**举例**:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										123
									
								
								10-Node.js和数据库/MySQL数据库/04-MySQL字段的数据类型.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								10-Node.js和数据库/MySQL数据库/04-MySQL字段的数据类型.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,123 @@
 | 
			
		||||
 | 
			
		||||
## 前言
 | 
			
		||||
 | 
			
		||||
MySQL 中的字段,主要有四种数据类型:
 | 
			
		||||
 | 
			
		||||
- 整型(整数)
 | 
			
		||||
 | 
			
		||||
- 浮点型(小数)
 | 
			
		||||
 | 
			
		||||
- 字符串类型
 | 
			
		||||
 | 
			
		||||
- 时间日期类型
 | 
			
		||||
 | 
			
		||||
下面来详细讲一讲。
 | 
			
		||||
 | 
			
		||||
## 整数类型
 | 
			
		||||
 | 
			
		||||
### 整数类型的分类
 | 
			
		||||
 | 
			
		||||
MySQL中,整型有五种:
 | 
			
		||||
 | 
			
		||||
* 迷你整型:tinyint,使用**1个字节**存储整数,最多存储256个整数(-128~127)。
 | 
			
		||||
 | 
			
		||||
* 短整型:smallint,使用**2个字节**存储整数。
 | 
			
		||||
 | 
			
		||||
* 中整型:mediumint,使用**3个字节**存储整数。
 | 
			
		||||
 | 
			
		||||
* 标准整型:int,使用**4个字节**存储整数。
 | 
			
		||||
 | 
			
		||||
* 大整型:bigint,使用**8个字节**存储。
 | 
			
		||||
 | 
			
		||||
**强调**:
 | 
			
		||||
 | 
			
		||||
(1)如果你不知道用哪一种,或者懒得计算,那就用标准整型 `int`吧,这个用的最多。
 | 
			
		||||
 | 
			
		||||
(2)整型在 MySQL 中默认是有符号的,即有正负;无符号需要使用 `unsigned` 修饰整型,代表正整数。
 | 
			
		||||
 | 
			
		||||
**举例**:
 | 
			
		||||
 | 
			
		||||
在指定的表中新增 age 字段,要求 age 是正整数:
 | 
			
		||||
 | 
			
		||||
```sql
 | 
			
		||||
alter table table_qiangu1 add age int unsigned;
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### 设计思路
 | 
			
		||||
 | 
			
		||||
如果需要新建整型的字段,设计思路如下:
 | 
			
		||||
 | 
			
		||||
(1)确定需要存储的数据是整数。
 | 
			
		||||
 | 
			
		||||
(2)预估整数的范围,选择合适的整数类型。
 | 
			
		||||
 | 
			
		||||
(3)确定这个整数是否需要包含负数。
 | 
			
		||||
 | 
			
		||||
### 整数类型的取值范围
 | 
			
		||||
 | 
			
		||||
todo。参考链接:<https://blog.csdn.net/slyjit/article/details/54290486>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### 整数类型的显示宽度、零填充
 | 
			
		||||
 | 
			
		||||
> 我们在很多设计表中,可能会看到比如 `int(11)`这种数据类型,这里面的 `11`代表的就是`显示宽度`。
 | 
			
		||||
 | 
			
		||||
所谓的**显示宽度**,其实就是显示的时候,看到的最少数字个数。
 | 
			
		||||
 | 
			
		||||
比如 int(2) ,表示不管你的数值是多少,最少可以看到两个数字。假如你存的数值是9,没有满两位,就会在前面补零,显示为`09`;假如你的数值是120,超过了显示宽度,则直接显示原始值,不会做**零填充**。
 | 
			
		||||
 | 
			
		||||
**显示宽度的注意事项**:
 | 
			
		||||
 | 
			
		||||
- 显示宽度只适用于 MySQL 的整数类型。
 | 
			
		||||
 | 
			
		||||
- 显示宽度只是指明 MySQL 整数类型最少显示的数字个数(可以通过desc查看表字段显示)。
 | 
			
		||||
 | 
			
		||||
- **显示宽度只是在显示的时候改变数值的样式,不会对原本的值进行更改**。
 | 
			
		||||
 | 
			
		||||
- 显示宽度和数值类型的取值范围无关。例如int(10) 他的取值范围任然是(-2 147 483 648,2 147 483 647)。
 | 
			
		||||
 | 
			
		||||
**零填充的注意事项**:
 | 
			
		||||
 | 
			
		||||
- 要想让显示宽度自动进行**零填充**,必须要配合 `ZEROFILL`这个关键字一起使用。
 | 
			
		||||
 | 
			
		||||
- **零填充只能针对正整数**,也就是说,`ZEROFILL` 要求整型为无符号型。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
**举例**:
 | 
			
		||||
 | 
			
		||||
1、新建一张表,然后在这张表中新增 num1 字段,要求 num1 显示3位,不够3位的自动进行零填充:
 | 
			
		||||
 | 
			
		||||
```sql
 | 
			
		||||
# 新建一张表
 | 
			
		||||
CREATE TABLE table_qiangu1 (
 | 
			
		||||
  id int NOT NULL AUTO_INCREMENT PRIMARY KEY
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
# 显示宽度有效(正确写法)
 | 
			
		||||
alter table table_qiangu1 add num1 int(3) zerofill;
 | 
			
		||||
 | 
			
		||||
# 对比:显示宽度无效
 | 
			
		||||
alter table table_qiangu1 add num2 int(3);
 | 
			
		||||
 | 
			
		||||
# 对比:普通写法
 | 
			
		||||
alter table table_qiangu1 add num3 int;
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
上述命令中,如果把 `zerofill` 这个关键字去掉,是达不到显示宽度的效果的。执行完上述命令后,我们执行 `desc table_qiangu1` 命令,对比一下 num1、num2、num3 的字段结构就知道了:
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
上方截图可以看到,只有 num1 才有显示宽度,它可以进行零填充,num2、num3不行。我们往表中插入整数 `6`,然后看看显示结果,就一目了然:
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
参考链接:[MySql数据库 数值类型的显示宽度](https://juejin.im/post/5b24a2c251882574d73c6f82)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								img/20200423_1048.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								img/20200423_1048.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 20 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								img/20200423_1050.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								img/20200423_1050.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 19 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								img/20200423_1055.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								img/20200423_1055.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 17 KiB  | 
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user