數(shù)據(jù)庫 - 實(shí)現(xiàn)項(xiàng)目中的數(shù)據(jù)持久化
數(shù)據(jù)庫的類別:
- 關(guān)系型數(shù)據(jù)庫 - MySQL
特點(diǎn):
- 理論基礎(chǔ):集合論和關(guān)系代數(shù)
- 用二維表來組織數(shù)據(jù)(行(記錄)和列(字段))
- 能夠唯一標(biāo)識(shí)一條記錄的列稱為主鍵(primary key)
- SQL - 結(jié)構(gòu)化查詢語言
- DDL - 數(shù)據(jù)定義語言 - create / drop / alter
- DML - 數(shù)據(jù)操作語言 - insert / delete / update / select
- DCL - 數(shù)據(jù)控制語言 - grant / revoke / commit / rollback
關(guān)系型數(shù)據(jù)庫產(chǎn)品:
- Oracle - 甲骨文
- MySQL - 甲骨文 - MariaDB
- DB2、SQLServer茅诱、PostgreSQL惨好、SQLite
- NoSQL數(shù)據(jù)庫 - Redis
- MongoDB - 文檔數(shù)據(jù)庫 - 適合量大但是價(jià)值低的數(shù)據(jù)
- Redis - KV數(shù)據(jù)庫 - 性能好適合做高速緩存服務(wù)
- ElasticSearch - 搜索引擎
- Linux安裝軟件
- 包管理工具 - yum / rpm
Docker - 提供虛擬化服務(wù),創(chuàng)建虛擬化容器并安裝軟件
yum -y install docker-io
yum -y remove docker-io
yum info ...
yum search ...
yum list installed | grep docker
啟動(dòng)Docker服務(wù)
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker
systemctl enable docker
systemctl disable docker
使用Docker的命令
- 查看已經(jīng)下載的鏡像文件(安裝包):
docker images
- 下載MySQL的鏡像文件:
docker pull mysql:5.7
MySQL數(shù)據(jù)庫超級(jí)管理員賬號(hào) - root
- 創(chuàng)建并運(yùn)行容器:
docker run -d -p 3306:3306 --name mysql57 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
- 查看運(yùn)行中的容器:
docker ps
- 查看所有的容器:
docker container ls -a
停止容器
docker stop mysql57啟動(dòng)容器
docker start mysql57
- 刪除容器
docker rm -f mysql57
安裝MySQL客戶端工具:
Navicat for MySQL - 貓
SQLyog - 海豚
Toad for MySQL - 蛤蟆
-- SQL - 結(jié)構(gòu)化查詢語言
-- DDL - 數(shù)據(jù)定義語言 - create / drop / alter
-- DML - 數(shù)據(jù)操作語言 - insert / delete / update / select
-- DCL - 數(shù)據(jù)控制語言 - grant / revoke
-- 如果存在名為srs的數(shù)據(jù)庫就刪除它(慎重)
drop database if exists srs;
-- latin1 - iso-8859-1
-- ASCII / Unicode
-- 創(chuàng)建名為srs的數(shù)據(jù)庫并設(shè)置默認(rèn)字符集為utf8
create database srs default charset utf8;
-- 切換到srs數(shù)據(jù)庫
use srs;
-- 如果存在名為tb_student的表就刪除
drop table if exists tb_student;
-- 創(chuàng)建學(xué)生表tb_student
create table tb_student
(
stuid int not null comment '學(xué)號(hào)',
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
-- 修改學(xué)生表添加聯(lián)系方式列
alter table tb_student add column stutel char(11);
-- 修改學(xué)生表刪除聯(lián)系方式列
alter table tb_student drop column stutel;
-- 向?qū)W生表插入數(shù)據(jù)
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', '四川成都');
-- 截?cái)啾?/p>
-- truncate table tb_student;
-- 刪除學(xué)號(hào)為1002的學(xué)生
delete from tb_student where stuid=1002;
-- 刪除學(xué)號(hào)在1003到1005之間的學(xué)生
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;
-- 更新學(xué)號(hào)為1002和1004的兩個(gè)學(xué)生的生日
update tb_student set stubirth='1990-1-1'
where stuid=1002 or stuid=1004;
-- 更新學(xué)號(hào)為1002的學(xué)生的姓名宛渐、性別和家庭住址
update tb_student set stuname='王小美', stusex=0, stuaddr='四川自貢' where stuid=1002;
-- 更新家庭住址為null的學(xué)生的家庭住址
update tb_student set stuaddr='四川綿陽'
where stuaddr is null;
-- 查詢學(xué)生表的所有行所有列
select * from tb_student;
-- 篩選:查詢女學(xué)生
select * from tb_student where stusex=0;
-- 投影:查詢所有學(xué)生的姓名和生日
select stuname, stubirth from tb_student;
-- 查詢女學(xué)生的姓名和生日
select stuname, stubirth from tb_student where stusex=0;