数据库 - 实现项目中的数据持久化
数据库的类别:
- 关系型数据库 - MySQL
特点:
- 理论基础:集合论和关系代数
- 用二维表来组织数据(行(记录)和列(字段))
- 能够唯一标识一条记录的列称为主键(primary key)
- SQL - 结构化查询语言
- DDL - 数据定义语言 - create / drop / alter
- DML - 数据操作语言 - insert / delete / update / select
- DCL - 数据控制语言 - grant / revoke / commit / rollback
关系型数据库产品:
- Oracle - 甲骨文
- MySQL - 甲骨文 - MariaDB
- DB2、SQLServer、PostgreSQL、SQLite
- NoSQL数据库 - Redis
- MongoDB - 文档数据库 - 适合量大但是价值低的数据
- Redis - KV数据库 - 性能好适合做高速缓存服务
- ElasticSearch - 搜索引擎
- Linux安装软件
- 包管理工具 - yum / rpm
Docker - 提供虚拟化服务,创建虚拟化容器并安装软件
yum -y install docker-io
yum -y remove docker-io
yum info ...
yum search ...
yum list installed | grep docker
启动Docker服务
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker
systemctl enable docker
systemctl disable docker
使用Docker的命令
- 查看已经下载的镜像文件(安装包):
docker images
- 下载MySQL的镜像文件:
docker pull mysql:5.7
MySQL数据库超级管理员账号 - root
- 创建并运行容器:
docker run -d -p 3306:3306 --name mysql57 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
- 查看运行中的容器:
docker ps
- 查看所有的容器:
docker container ls -a
停止容器
docker stop mysql57启动容器
docker start mysql57
- 删除容器
docker rm -f mysql57
安装MySQL客户端工具:
Navicat for MySQL - 猫
SQLyog - 海豚
Toad for MySQL - 蛤蟆
-- SQL - 结构化查询语言
-- DDL - 数据定义语言 - create / drop / alter
-- DML - 数据操作语言 - insert / delete / update / select
-- DCL - 数据控制语言 - grant / revoke
-- 如果存在名为srs的数据库就删除它(慎重)
drop database if exists srs;
-- latin1 - iso-8859-1
-- ASCII / Unicode
-- 创建名为srs的数据库并设置默认字符集为utf8
create database srs default charset utf8;
-- 切换到srs数据库
use srs;
-- 如果存在名为tb_student的表就删除
drop table if exists tb_student;
-- 创建学生表tb_student
create table tb_student
(
stuid int not null comment '学号',
stuname varchar(10) not null comment '姓名',
stusex bit default 1 comment '性别',
stubirth date comment '出生日期',
stuaddr varchar(255) comment '家庭住址',
primary key (stuid)
);
-- Error: Duplicated Entry
-- crash course
-- best practice
-- 修改学生表添加联系方式列
alter table tb_student add column stutel char(11);
-- 修改学生表删除联系方式列
alter table tb_student drop column stutel;
-- 向学生表插入数据
insert into tb_student values
(1001, '骆昊', 1, '1980-11-28', '四川成都');
-- 插入部分字段
insert into tb_student (stuid, stuname) values
(1002, '王大锤');
-- 插入多条记录
insert into tb_student values
(1003, '白元芳', 1, '1988-5-5', null),
(1004, '白洁', 0, null, null),
(1005, '狄仁杰', default, '1992-3-8', '四川成都');
-- 截断表
-- truncate table tb_student;
-- 删除学号为1002的学生
delete from tb_student where stuid=1002;
-- 删除学号在1003到1005之间的学生
delete from tb_student where stuid>=1003 and stuid<=1005;
delete from tb_student where stuid in (1003, 1004, 1005);
delete from tb_student where stuid between 1003 and 1005;
-- 更新学号为1002和1004的两个学生的生日
update tb_student set stubirth='1990-1-1'
where stuid=1002 or stuid=1004;
-- 更新学号为1002的学生的姓名、性别和家庭住址
update tb_student set stuname='王小美', stusex=0, stuaddr='四川自贡' where stuid=1002;
-- 更新家庭住址为null的学生的家庭住址
update tb_student set stuaddr='四川绵阳'
where stuaddr is null;
-- 查询学生表的所有行所有列
select * from tb_student;
-- 筛选:查询女学生
select * from tb_student where stusex=0;
-- 投影:查询所有学生的姓名和生日
select stuname, stubirth from tb_student;
-- 查询女学生的姓名和生日
select stuname, stubirth from tb_student where stusex=0;