Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
檀越@新空间
Coding Tree
提交
3b282b20
C
Coding Tree
项目概览
檀越@新空间
/
Coding Tree
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Coding Tree
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
3b282b20
编写于
3月 18, 2022
作者:
彭世瑜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix
上级
e22d21d3
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
285 addition
and
3 deletion
+285
-3
blog/php-mysql/character.md
blog/php-mysql/character.md
+0
-3
blog/php-mysql/index.md
blog/php-mysql/index.md
+4
-0
blog/php-mysql/sql-float.md
blog/php-mysql/sql-float.md
+97
-0
blog/php-mysql/sql-int.md
blog/php-mysql/sql-int.md
+184
-0
未找到文件。
blog/php-mysql/character.md
浏览文件 @
3b282b20
...
...
@@ -64,6 +64,3 @@ set character_set_client = gbk; // 让服务器识别客户端传过去的数据
set
character_set_connection
=
gbk
;
//
更好的帮助客户端与服务器端之间惊醒字符集转换
set
character_set_results
=
gbk
;
//
告诉客户端服务器返回的数据
```
https://www.bilibili.com/video/BV1Vx411g7uJ?p=15&spm_id_from=pageDriver
\ No newline at end of file
blog/php-mysql/index.md
浏览文件 @
3b282b20
...
...
@@ -13,3 +13,7 @@
[
数据data 基本操作
](
blog/php-mysql/sql-data.md
)
[
字符集character
](
blog/php-mysql/character.md
)
[
数据类型-整数
](
blog/php-mysql/sql-int.md
)
[
数据类型-小数
](
blog/php-mysql/sql-float.md
)
blog/php-mysql/sql-float.md
0 → 100644
浏览文件 @
3b282b20
# 数据类型-小数
浮点型:
又称为精度类型,是一种可能丢失精度的数据类型,数据可能不那么准确
简单的举例
```
所有位都为1
整数 1 1 1 1 1 1 1 1 都存整数表示具体数据值
浮点数 1 1 1 | 1 1 1 1 1 10^7 * 数据值,其中3位用来存指数
```
## float 单精度类型
4字节存储,7位精度,表示数据范围比整数大得多
基本语法
```
float 表示不指定小数位的浮点数
float(M, D)表示一共存储M个有效数字,其中小数部分占D位
例如:
float(10, 2) 整数部分为8位,小数部分为2位
```
示例
```
sql
create
table
my_float
(
f1
float
,
f2
float
(
10
,
2
)
);
desc
my_float
;
+
-------+-------------+------+-----+---------+-------+
|
Field
|
Type
|
Null
|
Key
|
Default
|
Extra
|
+
-------+-------------+------+-----+---------+-------+
|
f1
|
float
|
YES
|
|
NULL
|
|
|
f2
|
float
(
10
,
2
)
|
YES
|
|
NULL
|
|
+
-------+-------------+------+-----+---------+-------+
insert
into
my_float
(
f1
,
f2
)
values
(
123
.
123
,
12345678
.
90
);
-- 如果精度丢失,按照四舍五入方式计算
select
*
from
my_float
;
+
---------+-------------+
|
f1
|
f2
|
+
---------+-------------+
|
123
.
123
|
12345679
.
00
|
+
---------+-------------+
-- 超出指定位数
insert
into
my_float
(
f1
,
f2
)
values
(
123
.
123456789
,
123456789
.
90
);
ERROR
1264
(
22003
):
Out
of
range
value
for
column
'f2'
at
row
1
-- 用户不能直接插入超过指定整数部分的长度,但是如果是系统自动进位导致,可以允许
insert
into
my_float
(
f1
,
f2
)
values
(
123
.
123456789
,
99999999
.
99
);
select
*
from
my_float
;
+
---------+--------------+
|
f1
|
f2
|
+
---------+--------------+
|
123
.
123
|
12345679
.
00
|
|
123
.
123
|
100000000
.
00
|
+
---------+--------------+
-- 浮点数可以采用科学计数法来存储数据
insert
into
my_float
(
f1
,
f2
)
values
(
123
.
123
,
10
e5
);
select
*
from
my_float
;
+
---------+--------------+
|
f1
|
f2
|
+
---------+--------------+
|
123
.
123
|
12345679
.
00
|
|
123
.
123
|
100000000
.
00
|
|
123
.
123
|
1000000
.
00
|
+
---------+--------------+
```
-
double 双精度,8字节存储,15位精度
定点型
https://www.bilibili.com/video/BV1Vx411g7uJ?p=17&spm_id_from=pageDriver
\ No newline at end of file
blog/php-mysql/sql-int.md
0 → 100644
浏览文件 @
3b282b20
# 数据类型-整数
字段类型 |名称 | 字节数 | 表示范围
-
| - | - | - |
tinyint | 迷你整型 | 1个字节=8位 | 0-255
smallint | 小整型 | 2个字节 | 0-65535
mediumint | 中整型 | 3个字节 |
int | 整型(标准整型) | 4个字节 |
bigint | 大整型 | 8个字节 |
通常使用较多的是int和tinyint
示例
```
sql
create
table
my_int
(
tiny_int
tinyint
,
small_int
smallint
,
medium_int
mediumint
,
int_
int
,
big_int
bigint
);
-- 插入正确的值
insert
into
my_int
(
tiny_int
,
small_int
,
medium_int
,
int_
,
big_int
)
values
(
10
,
10000
,
100000
,
10000000
,
1000000
);
mysql
>
select
*
from
my_int
;
+
----------+-----------+------------+----------+---------+
|
tiny_int
|
small_int
|
medium_int
|
int_
|
big_int
|
+
----------+-----------+------------+----------+---------+
|
10
|
10000
|
100000
|
10000000
|
1000000
|
+
----------+-----------+------------+----------+---------+
-- 插入一个超出范围的值
insert
into
my_int
(
tiny_int
,
small_int
,
medium_int
,
int_
,
big_int
)
values
(
255
,
255
,
255
,
255
,
255
);
ERROR
1264
(
22003
):
Out
of
range
value
for
column
'tiny_int'
at
row
1
-- 原因是tinyint实际取值范围:-128~127,包含了负数
insert
into
my_int
(
tiny_int
,
small_int
,
medium_int
,
int_
,
big_int
)
values
(
-
128
,
255
,
255
,
255
,
255
);
select
*
from
my_int
;
+
----------+-----------+------------+----------+---------+
|
tiny_int
|
small_int
|
medium_int
|
int_
|
big_int
|
+
----------+-----------+------------+----------+---------+
|
10
|
10000
|
100000
|
10000000
|
1000000
|
|
-
128
|
255
|
255
|
255
|
255
|
+
----------+-----------+------------+----------+---------+
```
## 无符号标识(unsigned)
只要正数(0-255)
```
sql
alter
table
my_int
add
unsigned_tiny_int
tinyint
unsigned
first
;
-- 插入255
insert
into
my_int
(
unsigned_tiny_int
,
tiny_int
,
small_int
,
medium_int
,
int_
,
big_int
)
values
(
255
,
127
,
255
,
255
,
255
,
255
);
mysql
>
select
*
from
my_int
;
+
-------------------+----------+-----------+------------+----------+---------+
|
unsigned_tiny_int
|
tiny_int
|
small_int
|
medium_int
|
int_
|
big_int
|
+
-------------------+----------+-----------+------------+----------+---------+
|
NULL
|
10
|
10000
|
100000
|
10000000
|
1000000
|
|
NULL
|
-
128
|
255
|
255
|
255
|
255
|
|
255
|
127
|
255
|
255
|
255
|
255
|
+
-------------------+----------+-----------+------------+----------+---------+
mysql
>
desc
my_int
;
+
-------------------+---------------------+------+-----+---------+-------+
|
Field
|
Type
|
Null
|
Key
|
Default
|
Extra
|
+
-------------------+---------------------+------+-----+---------+-------+
|
unsigned_tiny_int
|
tinyint
(
3
)
unsigned
|
YES
|
|
NULL
|
|
|
tiny_int
|
tinyint
(
4
)
|
YES
|
|
NULL
|
|
|
small_int
|
smallint
(
6
)
|
YES
|
|
NULL
|
|
|
medium_int
|
mediumint
(
9
)
|
YES
|
|
NULL
|
|
|
int_
|
int
(
11
)
|
YES
|
|
NULL
|
|
|
big_int
|
bigint
(
20
)
|
YES
|
|
NULL
|
|
+
-------------------+---------------------+------+-----+---------+-------+
```
## 显示长度zerofill
整型数据在显示的时候,最多可以显示的位数
-
tinyint(3) 表示最长显示3位,unsigned是正数,0-255不会超过3个长度
-
tinyint(4) 表示最长可以显示4位 -128~127
显示长度,只是代表了数据是否可以达到指定的长度,但是不会自动满足到指定长度,如果想要数据显示的时候,保持最高位(显示长度),需要增加zerofill属性
zerofill:从左侧开始填充0到指定位数,自动设置为unsigned
示例
```
sql
alter
table
my_int
add
zerofill_tiny_int
tinyint
zerofill
first
;
desc
my_int
;
+
-------------------+------------------------------+------+-----+---------+-------+
|
Field
|
Type
|
Null
|
Key
|
Default
|
Extra
|
+
-------------------+------------------------------+------+-----+---------+-------+
|
zerofill_tiny_int
|
tinyint
(
3
)
unsigned
zerofill
|
YES
|
|
NULL
|
|
|
unsigned_tiny_int
|
tinyint
(
3
)
unsigned
|
YES
|
|
NULL
|
|
|
tiny_int
|
tinyint
(
4
)
|
YES
|
|
NULL
|
|
|
small_int
|
smallint
(
6
)
|
YES
|
|
NULL
|
|
|
medium_int
|
mediumint
(
9
)
|
YES
|
|
NULL
|
|
|
int_
|
int
(
11
)
|
YES
|
|
NULL
|
|
|
big_int
|
bigint
(
20
)
|
YES
|
|
NULL
|
|
+
-------------------+------------------------------+------+-----+---------+-------+
-- 插入数据
insert
into
my_int
(
zerofill_tiny_int
,
unsigned_tiny_int
,
tiny_int
,
small_int
,
medium_int
,
int_
,
big_int
)
values
(
1
,
1
,
1
,
1
,
1
,
1
,
1
);
select
*
from
my_int
;
+
-------------------+-------------------+----------+-----------+------------+----------+---------+
|
zerofill_tiny_int
|
unsigned_tiny_int
|
tiny_int
|
small_int
|
medium_int
|
int_
|
big_int
|
+
-------------------+-------------------+----------+-----------+------------+----------+---------+
|
NULL
|
NULL
|
10
|
10000
|
100000
|
10000000
|
1000000
|
|
NULL
|
NULL
|
-
128
|
255
|
255
|
255
|
255
|
|
NULL
|
255
|
127
|
255
|
255
|
255
|
255
|
|
001
|
1
|
1
|
1
|
1
|
1
|
1
|
+
-------------------+-------------------+----------+-----------+------------+----------+---------+
```
自定义显示长度,不会改变字段所能表示的数据长度,超出长度不受影响,长度不足会补0
示例
```
sql
alter
table
my_int
add
zerofill_tiny_int_2
tinyint
(
2
)
zerofill
first
;
desc
my_int
;
+
---------------------+------------------------------+------+-----+---------+-------+
|
Field
|
Type
|
Null
|
Key
|
Default
|
Extra
|
+
---------------------+------------------------------+------+-----+---------+-------+
|
zerofill_tiny_int_2
|
tinyint
(
2
)
unsigned
zerofill
|
YES
|
|
NULL
|
|
|
zerofill_tiny_int
|
tinyint
(
3
)
unsigned
zerofill
|
YES
|
|
NULL
|
|
|
unsigned_tiny_int
|
tinyint
(
3
)
unsigned
|
YES
|
|
NULL
|
|
|
tiny_int
|
tinyint
(
4
)
|
YES
|
|
NULL
|
|
|
small_int
|
smallint
(
6
)
|
YES
|
|
NULL
|
|
|
medium_int
|
mediumint
(
9
)
|
YES
|
|
NULL
|
|
|
int_
|
int
(
11
)
|
YES
|
|
NULL
|
|
|
big_int
|
bigint
(
20
)
|
YES
|
|
NULL
|
|
+
---------------------+------------------------------+------+-----+---------+-------+
insert
into
my_int
(
zerofill_tiny_int_2
,
zerofill_tiny_int
,
unsigned_tiny_int
,
tiny_int
,
small_int
,
medium_int
,
int_
,
big_int
)
values
(
100
,
100
,
100
,
100
,
100
,
100
,
100
,
100
),
(
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
);
select
*
from
my_int
;
+
---------------------+-------------------+-------------------+----------+-----------+------------+----------+---------+
|
zerofill_tiny_int_2
|
zerofill_tiny_int
|
unsigned_tiny_int
|
tiny_int
|
small_int
|
medium_int
|
int_
|
big_int
|
+
---------------------+-------------------+-------------------+----------+-----------+------------+----------+---------+
|
NULL
|
NULL
|
NULL
|
10
|
10000
|
100000
|
10000000
|
1000000
|
|
NULL
|
NULL
|
NULL
|
-
128
|
255
|
255
|
255
|
255
|
|
NULL
|
NULL
|
255
|
127
|
255
|
255
|
255
|
255
|
|
NULL
|
001
|
1
|
1
|
1
|
1
|
1
|
1
|
|
100
|
100
|
100
|
100
|
100
|
100
|
100
|
100
|
|
01
|
001
|
1
|
1
|
1
|
1
|
1
|
1
|
+
---------------------+-------------------+-------------------+----------+-----------+------------+----------+---------+
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录