文章目录
一、表的基本概念
- 确保表结构设计的合理性,高效、分类合理
- 一个表只涉及一个主题
- 表中不应该包括重复信息
二、数据类型
为每张表的每个字段选择合适的数据类型是数据库设计过程中一个重要的步骤
MySQL数据类型:
- 数值类型:整数类型、浮点类型、定点数类
- 日期时间型
- 字符串类型
- 复合类型
- 二进制类型
1.数值类型
(1)整型
thinyint | smallint | mediumint | int | bigint |
---|---|---|---|---|
1字节 | 2 | 3 | 4 | 8 |
(2)浮点型与定型
m:总位数,d:小数位数
float(m,d) | double(m,d) | dec[imal](m,d) |
---|---|---|
4字节,7个有效位 | 8字节,15个有效位 | 多用于表示金额数据,m+2字节,28个有效位 |
比较float和decimal的区别
decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边。decimal 数据类型存储了一个准确(精确)的数字表达法;不存储值的近似值。
float 和 real 数据类型被称为近似的数据类型。在近似数字数据类型方面,float 和 real 数据的使用遵循 IEEE 754 标准。
近似数字数据类型并不存储为多数数字指定的精确值,它们只储存这些值的最近似值。在很多应用程序中,指定值与存储值之间的微小差异并不明显。但有时这些差异也值得引起注意。由于 float 和 real 数据类型的这种近似性,当要求精确的数字状态时,比如在财务应用程序中,在那些需要舍入的操作中,或在等值核对的操作中,就不使用这些数据类型。这时就要用integer、decimal、money或smallmone数据类型。
例如,创建两个列c1,c3,其中c1是float类型,c3是decimal类型,都添加数据9876543.21,显示其结果
create table t1
(
c1 float(10.2),
c3 decimal(10,2)
);
insert into t1
values(9876543.21,9876543.21)
结果显示
c1 | c3 |
---|---|
9876543.00 | 9876543.21 |
2.日期时间型
data | time | year | datetime | timestamp |
---|---|---|---|---|
4字节 | 3 | 1 | 8 | 4 |
注意时间戳(timestamp):
(1)该常量用单引号括起来
(2)分隔符:年月日为“-”,时分秒为“:”
3.字符串类型
(1)普通字符串:
Char(n)
varchar(n)
其中n指的是字符个数,不同的[[6.2 字符集|字符集]],能表示的字符个数不同,GBK可以表示4000个字符
区别:
char快
varchar节约空间
(2)可变类型
tinyblob
blob
mediumblob
longblob
blob二进制大对象,大小写敏感
tinytext
text
mediumtext
longtext
text类型大小写不敏感
4.复合类型
该类型本质上是字符型
ENUM:只允许从一个集合中去取一个值,类似于单选按钮
SET:允许从一个集合取多个值,类似于复选框
5.二进制类型
储存区分大小写类型的符号时
(1)7种类型
binary, varbinary, bit, tinyblob, blob, mediumblob, olngblob
bit:只占一位,适合用来存储是或否
注意:
- text和blob都可以用来存储长字符串
text主要储存文本字符串,如新闻、博客
blob以二进制形式存放
可以是:二进制文本、图片、音视频 - 在项目中,通常将图片、音频、视频等二进制数据,以文件的形式直接存储在操作系统中。存在磁盘中
6.选择数据类型
- 尽量使用
“短”
数据类型。 - 数据类型越
简单
越好。 - 要求精度高的选用decimal.
- 字符型:考虑速度选char,节省空间选varchar。
- 在MySQL中,应该用
内置
的日期和时间数据类型,而不是用字符串来存储日期和时间。 - 尽量避免NULL字段,建议使用NOT NULL约束。
三、运算符
1.算术运算符
运算符 | 作用 |
---|---|
+ | 加法,返回相加后的值 |
- | 减法,返回相减后的值 |
* | 乘法,返回相乘后的值 |
/,DIV | 取整,返回相除后的商 |
%,MOD | 取余,返回相除后的余数 |
例如:
select 1/2,1 div 2,1%2,1 mod 2;
1/2是0.5
1 div 2 是0
1%2,1 mod 2都是1
2.比较运算符
(1)运算符:
=、<>或!=、<=>、<、<=、>、>=、BETWEEN (min) AND (max)、IN、IS [NOT] NULL,LIKE,REGEXP
<=>可以对NULL判断,用的较少,常用IS [NOT] NULL
(2)作用:
对左、右两边操作数进行比较,比较结果为真返回1,为假返回0,不确定返回NULL。
3.逻辑运算符
也称为布尔运算符,判断表达式的真假
运算符 | 作用 |
---|---|
NOT或! | 逻辑非 |
AND或& | 逻辑与 |
OR或|| | 逻辑或 |
XOR | 逻辑异或 |
4.位运算符
数据库用的不多
位运算符是将给定的操作数转化为二进制后,对各个操作数的每一位都进行指定的逻辑运算,得到的二进制结果转化为十进制数后就是位运算的结果。