基础概念
数据库(DataBase,简称DB),用于存储和管理大量数据的仓库。
数据库特点
- 持久化存储数据的。其实数据库就是一个文件系统
- 方便存储和管理数据
- 使用了统一的方式操作数据库-- SQL
数据库有哪些
MYSQL
: 开源免费的数据库,小型的数据库。已经被 Oracle 收购了,MySQL6.x 版本也开始收费。Oracle
: 收费的大型数据库,Oracle 公司的产品。Oracle 收购SUN 公司,收购 MYSQL。DB2
: IBM 公司的数据库产品,收费的。常应用在银行系统中SQLServer
: MicroSoft 公司收费的中型的数据库。C#
、.net
等语言常使用。SyBase
:已经淡出历史舞台。提供了一个非常专业数据建模的工具 PowerDesignerSQLite
: 嵌人式的小型数据库,应用在手机端。
常用数据库: MYSQL
,Oracle
数据库在网站系统中的作用
- 前端页面:展示内容和数据给用户看
- 后台:处理前端发过来的请求,去数据库中查询数据,经过逻辑处理之后响应给前端
- 数据库:存储和管理数据
数据库类型
- 关系型数据库:行与列存储,类似excel表,如MySQL,Oracle,Sql Server,DB2, SQLlite
- 非关系型数据库:key:value方式存储,如Redis、MongoDB
MYSQL介绍
数据库可视化工具
可以使用命令来操作Mysql,但是对于新手来说,直接使用可视化工具来操作Mysql更加方便,下面是两款工具
- SQLyog
- Navicat
Mysql数据库引擎
MYISAM(早期使用) | INNODB(默认使用) | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为2倍 |
使用的区别
MYISAM
节约空间,速度较快INNODB
安全性高,事务的处理,多表多用户操作
在物理空间存在的位置区别
InnoDB
在数据库表中只有一个*.frm
文件,以及上级目录下的 ibdata1 文件MYISAM
对应文件:*.frm
表结构的定义文件;*.MYD
数据文件 (data);*.MYI
索引文件 (index)
数据表 列的数据类型
数值类型
类型 | 说明 | 字节数 | 备注 |
---|---|---|---|
tinyint | 十分小的数据 | 1 | |
smallint | 较小的数据 | 2 | |
mediumint | 中等大小的数据 | 3 | |
int | 标准的整数 | 4 | 常用的整数类型 |
bigint | 较大的数据 | 8 | |
float | 浮点数 | 4个字节 | |
double | 浮点数 | 8个字节 | 精度问题较大 |
decimal | 字符串形式的浮点数 | 金融计算的时候,一般是使用decimal |
字符串类型
类型 | 说明 | 字节数 | 备注 |
---|---|---|---|
char | 字符串固定大小的 | 0~255 | |
varchar | 可变字符串 | 0~65535 | 常用的变量,类似String |
tinytext | 微型文本 | 2^8 -1 | |
text | 文本串 | 2^16 -1 | 保存大文本 |
时间日期类型
类型 | 说明 | 备注 |
---|---|---|
date | YYYY-MM-DD 日期格式 | |
time | HH:mm:ss 时间格式 | |
datetime | YYYY-MM-DD HH:mm:ss | 最常用的时间格式 |
timestamp | 时间戳,1970.1.1到现在的毫秒数 | 也较为常用 |
year | 年份表示 |
二进制类型
用来存储二进制文件,如图片、音乐
类型 | 字节数 |
---|---|
TinyBlob | 最大255 |
Blob | 最大65K |
MediumBlob | 最大16M |
LongBlob | 最大4G |
null
没有值,未知
数据表 列的属性
Unsigned
- 无符号的整数
- 声明了该列的值不能为负数
zerofill
- 0填充的
- 不足的位数,使用0来填充。如int(3),
8
被补充为008
自增
- 通常理解为自增,自动在上一条记录的基础上 + 1
- 通常用来设计主键时使用,必须是整数类型
- 可以自定义设计主键自增的起始值和步长
非空
- 假设设置为
not null
,如果不给它赋值,就会报错 - 假设设置为
null
,如果不填写值,默认就是null
默认
- 给字段设置默认值
- 如gender,设置默认值为0,如果在插入数据的时候,不填写gender的值,默认填写为0
数据表设计 表的常用字段
id
主键version
使用乐观锁时使用is_deleted
逻辑删除create_time
创建时间update_time
修改时间