1. 为什么要使用数据库
数据持久化 — 将数据从内存转移到硬盘(长久保存数据的存储介质)
数据库(database) — 存储数据,管理数据
2. 数据库的类型
关系(型)数据库 / 非关系型数据库
2.1 非关系型数据库:
(1)KV数据库
(2)文档数据库
(3)列族数据库
(4)图数据库
2.2 关系数据库的特点
-
理论基础:关系模型 — 关系代数 — 关系运算 — 谓词逻辑
-
-
具体表象:用二维表组织数据
-
行(row)— 记录(record)— 元组(tuple)
-
列(column)— 字段(field)— 属性(attribute)
-
主键(primary key)
-
外键(foreign key)
-
-
编程语言:SQL - Structured Query Language - 结构化查询语言
3. 关系数据库产品
Oracle / MySQL / DB2 / SQLServer / PostgreSQL / MariaDB
MySQL:
reliable / mature / open-source
中小型网站开发的黄金组合 - LAMP = Linux + Apache + MySQL + PHP
4. MySQL命令行
显示所有数据库:show databases;
显示数据库下所有表:show tables;
显示所有的字符集:show charset;
5. 结构化查询语言(SQL)
DDL — Data Definition Language — 数据定义语言 — create / drop / alter
Unicode —> utf-8 / utf-16 / utf-32
‘a’ —> 1字节
‘骆’ —> 3字节
‘’ —> emoji —> 4字节
utf8mb4 - 最大4字节的utf-8编码 - MySQL8默认
– 如果存在名为school的数据库就删除它
drop database if exists school;
– 创建名为school的数据库并指定默认的字符集
create database school default charset utf8mb4;
– 切换数据库
use school;
– 创建二维表
create table tb_student
(
stu_id integer not null comment ‘学号’,
stu_name varchar(20) not null comment ‘姓名’,
stu_gender boolean not null default 1 comment ‘性别’,
stu_birth date default ‘2000-1-1’ comment ‘出生日期’,
primary key (stu_id)
) engine=innodb comment ‘学生表’;
– 删除表
drop table if exists tb_student;
– 修改表添加列
alter table tb_student add column stu_addr varchar(200) default ‘’ comment ‘家庭住址’;
alter table tb_student add column stu_tel varchar(20) not null comment ‘联系电话’;
– 修改表删除列
alter table tb_student drop column stu_tel;
– 修改表修改列
alter table tb_student modify column stu_gender char(1) default ‘男’ comment ‘性别’;
alter table tb_student change column stu_gender stu_sex char(1) not null default ‘M’ comment ‘性别’;
6. 数据类型
6.1 寻求帮助:
help data types; / ? data types;
6.2 数据类型
-
整数
bigint(64bit —> 8byte —> -2^63 ~ 2^63-1)—> bigint unsigned(0 ~ 2^64-1)
teger / int (32bit —> 4byte —> -2^31 ~ 2^31-1)—> int unsigned(0 ~ 2^32-1) -
小数
float / double —> 不推荐使用
decimal —> decimal(10, 2) -
字符串 —> 底层都是边长编码
smallint(16bit —> 2byte —> -32768 ~ 32767)—> smallint unsigned
tinyint (8bit —> 1byte —> -128 ~ 127) —> tinyint unsigned -
char
varchar —> varchar(20) —> 65535 / 16383
longtext / longblob —> 4G —> 不推荐使用 —> 用字符串保存文件路径即可 -
日期时间
date
time
datetime
timestamp —> 不推荐使用 —> 底层是一个整数 —> 2038年1月19日3时14分07秒 -
JSON
json数组
json对象
7. 高级文本编辑工具
Visual Studio Code
Sublime
Atom
Textmate
Notepad++
Editplus