数据库(一)

110 阅读7分钟

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张三212345
2李四123456

一对多:一条主表记录对应多条从表记录,同时一条从表记录对应一条主表记录。

公民表汽车表
公民编号汽车编号品牌公民编号
1张三1丰田1
2李四2红旗2
3王五3东风1
4宝马3
5奥托2

多对多:一条主表记录对应多条从表记录,同时一条从表记录对应多条主表记录,依靠中间表维护多对多的联系。

老师表中间表学生表
老师编号姓名老师编号学生编号学生编号姓名
1王老师111张三
2张老师152李四
3刘老师213王五
224赵六
255陈七
326杜八
33
34
36

在关系型数据库中,引用方称为从表,被引用方称为主表。从表利用外键,引用主表的主键,从而建立两个表之间的联系。所以,外键在从表中定义。

数据库管理系统(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;

注意:建表需要修改数据库基字符集