Docker
Docker 简介:
Docker是一个用于开发,交付和运行应用程序的开放平台。
通过利用Docker的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。
Docker 能实现,在同一硬件上运行更多工作负载。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,而您可以用更少的资源做更多的事情。
Docker三要素:
镜像、容器、仓库是docker三要素。
Docker镜像(Image) 就是一个只读的模板。镜像可以用来创建docker容器,一个镜像可以创建很多容器。
Docker利用容器(container) 独立运行的一个或一组应用。容器是用镜像创建的运行实例。容器可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
仓库(Repository) 是集中存放镜像文件的场所。
Docker常用命令:
查看本地镜像:docker images
拉取镜像到本地:docker pull 镜像名称[:tag]
删除本地镜像:docker rmi-f 镜像 ID(镜像名称:版本)
拉取镜像:
拉取mysql镜像:docker pull mysql:5.6
创建容器:
创建mysql容器:docker run -p 127.0.0.1:12345:3306 --name mysql -e MYSQL_ROOT_PASSWORD=lovo -d mysql:5.6
-p:设置IP地址和端口
127.0.0.1:为本地IP地址
12345:3306:本地端口映射docker服务端口(12345可改:6789…)
--name mysql:表示设置容器名称(mysql可改:mysql156…)
MYSQL_ROOT_PASSWORD=lovo:设置root用户密码
-d:表示在后台运行
mysql:5.6:表示镜像名称
查看容器:
查看正在运行容器:docker ps
查看所有容器:docker ps -a
删除容器:
删除停止运行的容器:docker rm [容器 id]
删除正在运行的容器:docker rm -f [容器 id]
启动容器:
docker start [容器id/名称]
进入容器:
docker exec -it [容器id/名称] /bin/bash
进入mysql控制台:
#后mysql -uroot -plovo
显示有多少数据库:show databases;
(创建db:
create databases db;
create database db;)
退出mysql容器:
exit
Ctrl+p+q:回到windows控制台
数据库:
数据库即数据的仓库。在数据库中提供了专门的管理系统,对数据库中的数据进行集中的控制和管理。能高效的对数据进行存储、检索。
数据在数据库中的存储形式:层次模型、网状模型、关系模型(关系型数据库)
关系型数据库:
关系型数据库起源于关系模型。关系模型认为,世界是由实体和联系组成的。而关系型数据库是一种以表作为实体,以主键和外键作为联系的数据库结构。
主键:
在关系型数据库中,用于标识每一行唯一性的列,称为主键列。
特点:不能重复,不能为空。
外键:
在关系型数据库中,用于表达两个表之间联系的列,称为外键列。
关系型数据库的关系主要有:一对一,一对多,多对多。
一对一:一条主表记录对应一条从表记录,同时一条从表记录对应一条主表记录。(安全考虑)
| 公民表 | 身份证表 | ||||
|---|---|---|---|---|---|
| 公民编号 | 公民姓名 | 公民编号 | 身份证号 | ||
| 1 | 张三 | 2 | 12345 | ||
| 2 | 李四 | 1 | 23456 |
一对多:一条主表记录对应多条从表记录,同时一条从表记录对应一条主表记录。
| 公民表 | 汽车表 | |||||
|---|---|---|---|---|---|---|
| 公民编号 | 汽车编号 | 品牌 | 公民编号 | |||
| 1 | 张三 | 1 | 丰田 | 1 | ||
| 2 | 李四 | 2 | 红旗 | 2 | ||
| 3 | 王五 | 3 | 东风 | 1 | ||
| 4 | 宝马 | 3 | ||||
| 5 | 奥托 | 2 |
多对多:一条主表记录对应多条从表记录,同时一条从表记录对应多条主表记录,依靠中间表维护多对多的联系。
| 老师表 | 中间表 | 学生表 | |||||
|---|---|---|---|---|---|---|---|
| 老师编号 | 姓名 | 老师编号 | 学生编号 | 学生编号 | 姓名 | ||
| 1 | 王老师 | 1 | 1 | 1 | 张三 | ||
| 2 | 张老师 | 1 | 5 | 2 | 李四 | ||
| 3 | 刘老师 | 2 | 1 | 3 | 王五 | ||
| 2 | 2 | 4 | 赵六 | ||||
| 2 | 5 | 5 | 陈七 | ||||
| 3 | 2 | 6 | 杜八 | ||||
| 3 | 3 | ||||||
| 3 | 4 | ||||||
| 3 | 6 |
在关系型数据库中,引用方称为从表,被引用方称为主表。从表利用外键,引用主表的主键,从而建立两个表之间的联系。所以,外键在从表中定义。
数据库管理系统(DBMS):
关系型数据库只是一个保存数据的容器,大多数数据库依靠一个称为数据库管理系统(Database Management System,简称DBMS)的软件来管理数据库中数据。
数据库引擎:
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。
不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。
InnoDB存储引擎:
InnoDB是事务型数据库的首选引擎,提供提交、回滚、崩溃恢复能力的事务安全能力,并可以实现并发控制。InnoDB是默认的MySQL引擎。
MyISAM存储引擎:
MyISAM拥有较高的插入、查询速度,但不支持事务。
MEMORY存储引擎:
MEMORY存储引擎将表中的数据存储到内存中,为查询和引用其他数据提供快速访问。主要用于数据量不大的临时数据。
SQL:
SQL是结构化查询语言(Structured Query Language)的英文缩写,是一种用于管理关系型数据库,并与数据库中的数据进行通讯的计算机语言。
SQL与RDBMS协同工作,来定义数据库的结构、存储数据、操纵数据、获取数据、控制对数据的访问以及确保数据的完整性。
SQL语言的分类:
数据定义语言(DDL):创建、修改、删除数据库的内部数据结构。
数据查询语言(DQL):用于数据库中的数据查询。
数据操作语言(DML):用于数据库中数据的修改,包括添加、删除、修改等。
数据控制语言(DCL):用于控制数据库的访问权限。
存储数据的类型(5种):
1、整型(int)
2、浮点型(float、double、decimal(m,d))
3、字符串型(char、Varchar)
char(20) tom+17空格:定长字符串,如果内容不满以空格填充。
Varchar(20):可变长字符串,以内容长度作为数据长度。(该括号内容最多20)
4、日期型(date(年月日)、time(时分秒)、dateTime(年月日时分秒))
5、二进制型(BLOB:二进制型的长文本数据)
数据库操作:
-- 创建数据库 CREATE DATABASE mydb;
-- 删除数据库 DROP DATABASE mydb;
数据库数据类型决定了表中列的存储数据的类型。
-- 创建表 CREATE TABLE t_student(-- PRIMARY KEY 标识该列为主键列 -- pk 表示主键列的缩写 -- AUTO_INCREMENT 表示自动增长列,该列的内容由DBMS分配 pk_studentId INT PRIMARY KEY AUTO_INCREMENT, s_name VARCHAR(20), -- 姓名 s_birthday DATE, -- 生日(data:数据 date:日期) s_money INT, -- 金额(学费) -- 性别:enum称为枚举,表示该列的值只能是选项中的值。 s_sex ENUM('男','女'), s_phone VARCHAR(20) );
-- 查询所有数据 *:表示所有列 SELECT * FROM t_student; SELECT s_name,s_phone FROM t_student;
-- 添加记录 INSERT INTO t_student(s_name,s_birthday,s_money,s_sex,s_phone) VALUES('张无忌','1998-09-08',3000,'男','13909827348');
INSERT INTO t_student(s_name,s_birthday,s_money,s_sex,s_phone) VALUES("张三","1997-02-21",5000,"女","13892834218"), ("李四","1998-03-11",4500,"男","13828374568");
(“,”多加信息仅对SQLyog可用)
-- 修改表 -- 将张无忌的金额修改为4000,电话修改为13562788734 UPDATE t_student SET s_money=4000,s_phone="13562788734" WHERE s_name="张无忌";
-- 将编号为2的学生,金额上涨500 UPDATE t_student SET s_money=s_money+500 WHERE pk_studentId=2;
-- 删除表 DROP TABLE t_student;
-- 删除编号是3的学生 DELETE FROM t_student WHERE pk_studentId=3;
-- 删除编号大于3的学生 DELETE FROM t_student WHERE pk_studentId>3;
注意:建表需要修改数据库基字符集