目录
数据库介绍
数据库 ( DataBase , 简称DB )
概念 : 长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据 "仓库"
数据库的作用
-
持久化数据到本地,持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中,而持久化的实现过程大多通过各种关系数据库来完成。
-
可以实现结构化查询,方便管理
-
安全管理数据(如:增删改查等),减少冗余...
数据库分类
-
关系型数据库 ( RDBMS )
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。
关系型数据库通过外键关联来建立表与表之间的关系;
关系型数据库以行(row)和列(column)的形式存储数据,以便于用户理解。这一系列的行和列被称为表(table),一组表组成了一个库(database)。
表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系型数据库,就是建立在关系模型基础上的数据库。
SQL 就是关系型数据库的查询语言。
常见的关系型数据库:MySQL , Oracle , SQL Server , SQLite , DB2 ...
-
非关系型数据库 ( NOSQL )
可看成传统关系型数据库的功能阉割版本,基于键值对存储数据,不需要经过SQL层的解析,性能非常高。同时,通过减少不常用的功能,进一步提高性能。
非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定
非关系型数据库分类:键值型数据库,文档型数据库,搜索引擎数据库,列式数据库,图形数据库
常见的非关系型数据库:Redis , MongoDB , ...
DB,DBMS,SQL概念
-
DB:数据库(database):存储数据的“仓库”,它保存了一系列有组织的数据。
-
DBMS:数据库管理系统(Database Management System)。数据库管理软件 , 科学组织和存储数据 , 高效地获取和维护数据。数据库是通过DBMS创建和操作的容器。我们要学习的MySQL应该算是一个数据库管理系统。
-
SQL:结构化查询语言(Structure Query Language),专门用来与数据库通信的语言。
SQL优点:不是某个特定数据库供应商专有的语是言,几乎所有DBMS都支持SQL;简单易学;实际上强有力的语言,灵活使用可以进行非常复杂和高级的数据库操作
数据库与数据库管理系统的关系
数据库管理系统(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体用户的数据。
数据库管理系统、数据库和表的关系如图所示:
关系型数据库设计规则
-
将数据放到表中,表再放到库中
-
关系型数据库的典型数据结构就是数据表,这些数据表的组成都是结构化的(Structured)。
-
一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。
-
表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计。
ORM思想 (Object Relational Mapping对象关系映射)体现:数据库中的一个表 <---> Java或Python中的一个类表中的一条数据(一个行) <---> 类中的一个对象(或实体)表中的一个列 <----> 类中的一个字段、属性(field)
-
表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似java 中的“属性” 。
-
表中的数据是按行存储的,每一行类似于java中的“对象”。
-
DBMS分为两类:
基于共享文件系统的DBMS(ACCESS)基于客户机——服务器的DBMS(MySQL、Oracle、SqlServer)
表、记录、字段
-
E-R(entity-relationship,实体-联系)模型中有三个主要概念是:实体集、属性、联系集。
-
一个实体集(class)对应于数据库中的一个表(table),一个实体(instance)则对应于数据库表中的一行(row),也称为一条记录(record)。一个属性(attribute)对应于数据库表中的一列(column),也称为一个字段(field)。
表的关联关系
-
表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
-
四种:一对一关联、一对多关联、多对多关联、自我引用
一对一关联(one-to-one)
-
在实际的开发中应用不多,因为一对一可以创建成一张表。
-
举例:设计学生表:学号、姓名、手机号码、班级、系别、身份证号码、家庭住址、籍贯、紧急联系人、...
-
拆为两个表:两个表的记录是一一对应关系。
-
基础信息表(常用信息):学号、姓名、手机号码、班级、系别
-
档案信息表(不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、...
-
-
两种建表原则:
-
外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。
-
外键是主键:主表的主键和从表的主键,形成主外键关系。
-
一对多关系(one-to-many)
-
常见实例场景:客户表和订单表,分类表和商品表,部门表和员工表。
-
举例:
-
员工表:编号、姓名、...、所属部门
-
部门表:编号、名称、简介
-
-
一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键
多对多(many-to-many)
要表示多对多关系,必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个一对多关系。将这两个表的主键都插入到第三个表中。
举例:产品-订单
“订单”表和“产品”表有一种多对多的关系,这种关系是通过与“订单明细”表建立两个一对多关系来定义的。一个订单可以有多个产品,每个产品可以出现在多个订单中。
-
产品表:“产品”表中的每条记录表示一个产品。
-
订单表:“订单”表中的每条记录表示一个订单。
-
订单明细表:每个产品可以与“订单”表中的多条记录对应,即出现在多个订单中。一个订单可以与“产品”表中的多条记录对应,即包含多个产品。
自我引用(Self reference)
MySQL简介
MySQL是一个关系型数据库管理系统.
概念 :是现在流行的开源的,免费的关系型数据库管理系统
历史 : 由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。
特点 :
-
免费 , 开源数据库,成本低
-
小巧 , 功能齐全
-
性能卓越,服务稳定。
-
可运行于Windows或Linux操作系统
-
可适用于中小型甚至大型网站应用
MySQL初步使用
MySQL数据库常用操作命令 :
update user set password=password('123456')where user='root'; 修改密码
flush privileges; 刷新数据库
show databases; 显示所有数据库
use dbname;打开某个数据库
show tables; 显示数据库mysql中所有的表
describe user; 显示表mysql数据库中user表的列信息
create database name; 创建数据库
use databasename; 选择数据库
exit; 退出Mysql
? 命令关键词 : 寻求帮助
-- 表示注释
MySQL的下载、安装、配置
MySQL的4大版本
MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户。
MySQL Enterprise Edition 企业版本,需付费,不能在线下载,可以试用30天。提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户。
MySQL Cluster 集群版,开源免费。用于架设集群服务器,可将几个MySQL Server封装成一个Server。需要在社区版或企业版的基础上使用。
MySQL Cluster CGE 高级集群版,需付费。
-
目前最新版本为
8.0.27
,发布时间2021年10月
。此前,8.0.0 在 2016.9.12日就发布了。
-
本课程中使用
8.0.26版本
。
MySQL的下载
官网 : MySQL
5.7版本下载地址:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip
MySQL的安装
-
双击打开,选择自定义安装,点击下一步
2.选择Available Products中的你所安装的数据库移到右边,再点击一下移到右边想要安装的数据库,会出现一个Advanced Options选项点击可以选择数据库管理系统软件安装的位置,和你的数据库的数据想要存放的位置。
3.在上一步选择好要安装的产品之后,单击“Next”(下一步)进入确认窗口,如图所示。单击“Execute”(执行)按钮开始安装。
MySQL的配置
MySQL安装之后,需要对服务器进行配置。具体的配置步骤如下。
步骤1:单击“Next”(下一步)按钮,进入MySQL服务器类型配置窗口,如图所示。端口号一般选择默认端口号3306。Config Type选项用于设置服务器的类型,会有三个选项,我们选第一个Development Computer。
步骤2:单击“Next”(下一步)按钮,打开设置授权方式窗口。其中,上面的选项是MySQL8.0提供的新的授权方式,采用SHA256基础的密码加密方法;下面的选项是传统授权方法(保留5.x版本兼容性)。
步骤3:单击“Next”(下一步)按钮,打开设置服务器root超级管理员的密码窗口,如图所示,需要输入两次同样的登录密码。也可以通过“Add User”添加其他用户,添加其他用户时,需要指定用户名、允许该用户名在哪台/哪些主机上登录,还可以指定用户角色等。此处暂不添加用户,用户管理在MySQL高级特性篇中讲解。
步骤4:单击“Next”(下一步)按钮,打开设置服务器名称窗口,如图所示。该服务名会出现在Windows服务列表中,也可以在命令行窗口中使用该服务名进行启动和停止服务。本书将服务名设置为“MySQL80”。如果希望开机自启动服务,也可以勾选“Start the MySQL Server at System Startup”选项(推荐)。
下面是选择以什么方式运行服务?可以选择“Standard System Account”(标准系统用户)或者“Custom User”(自定义用户)中的一个。这里推荐前者。
步骤5:单击“Next”(下一步)按钮,打开确认设置服务器窗口,单击“Execute”(执行)按钮。
步骤6:完成配置,如图所示。单击“Finish”(完成)按钮,即可完成服务器的配置。
步骤7:如果还有其他产品需要配置,可以选择其他产品,然后继续配置。如果没有,直接选择“Next”(下一步),直接完成整个安装和配置过程。
步骤8: 配置MySQL8.0 环境变量。
MySQL的环境变量配置
如果不配置MySQL环境变量,就不能在命令行直接输入MySQL登录命令。下面说如何配置MySQL的环境变量:
步骤1:在桌面上右击【此电脑】图标,在弹出的快捷菜单中选择【属性】菜单命令。
步骤2:打开【系统】窗口,单击【高级系统设置】链接。
步骤3:打开【系统属性】对话框,选择【高级】选项卡,然后单击【环境变量】按钮。
步骤4:打开【环境变量】对话框,在系统变量列表中选择path变量。
步骤5:单击【编辑】按钮,在【编辑环境变量】对话框中,将MySQL应用程序的bin目录(D:\Program Files\MySQL\MySQL Server 8.0\bin)添加到变量值中,用分号将其与其他路径分隔开。步骤6:添加完成之后,单击【确定】按钮,这样就完成了配置path变量的操作,然后就可以直接输入MySQL命令来登录数据库了。
配置完成可以进行测试一下
MySQL的登录
服务的启动与停止
MySQL安装完毕之后,需要启动服务器进程,不然客户端无法连接数据库。在前面的配置过程中,已经将MySQL安装为Windows服务,并且勾选当Windows启动、停止时,MySQL也自动启动、停止。
方式1:使用图形界面工具
-
步骤1:打开windows服务
-
方式1:计算机(点击鼠标右键)→ 管理(点击)→ 服务和应用程序(点击)→ 服务(点击)
-
方式2:控制面板(点击)→ 系统和安全(点击)→ 管理工具(点击)→ 服务(点击)
-
方式3:任务栏(点击鼠标右键)→ 启动任务管理器(点击)→ 服务(点击)
-
方式4:单击【开始】菜单,在搜索框中输入“services.msc”,按Enter键确认
-
-
步骤2:找到MySQL80(点击鼠标右键)→ 启动或停止(点击)
方式2:使用命令行工具
# 启动 MySQL 服务命令:
net start MySQL服务名
# 停止 MySQL 服务命令:
net stop MySQL服务名
说明:
-
start和stop后面的服务名应与之前配置时指定的服务名一致。
-
如果当你输入命令后,提示“拒绝服务”,请以系统管理员身份打开命令提示符界面重新尝试。
自带客户端的登录与退出
当MySQL服务启动完成后,便可以通过客户端来登录MySQL数据库。注意:确认服务是开启的。
登录方式1:MySQL自带客户端(仅限于root用户)
开始菜单 → 所有程序 → MySQL → MySQL 8.0 Command Line Client
登录方式2:windows命令行
mysql -h 主机名 -P 端口号 -u 用户名 -p密码
注意:
(1)-p与密码之间不能有空格,其他参数名与参数值之间可以有空格也可以没有空格。
(2)客户端和服务器在同一台机器上,所以输入localhost或者IP地址127.0.0.1。同时,因为是连接本机:-hlocalhost就可以省略,如果端口号没有修改:-P3306也可以省略
退出登录
exit
或
quit
MySQL目录结构
软件目录
bin目录:所有MySQL的可执行文件。如:mysql.exe
MySQLInstanceConfig.exe :数据库的配置向导,在安装时出现的内容
data目录 :系统数据库所在的目录
my.ini文件 MySQL的主要配置文件
数据库存储目录Database
数据库安装完成后系统自带的目录:
information_schema:数据库服务器的系统信息,例如数据库,表,字段的名称,存储权限。
mysql:数据库服务器运行的时候需要的系统信息
performance_schema:监控数据库各种性能指标
sys:监控数据库各种性能指标,供开发人员使用
MySQL的编码设置
MySQL5.7
步骤1:查看编码命令(在命令行开启并登录数据库成功之后)
show variables like 'character_%';//%表示一个到多个字符
//第一个语句会返回关于character的属性和属性值
show variables like 'collation_%';//高级篇会讲解
步骤2:修改mysql的数据目录下的my.ini配置文件,用高级编辑器Notepad++打开my.ini文件
大约在第63行左右,在其下添加
default-character-set=utf8 #默认字符集
大概在76行左右,在其下添加
character-set-server=utf8
collation-server=utf8_general_ci
步骤3:重启服务
步骤4:查看编码命令
MySQL8.0
在MySQL 8.0版本之前,默认字符集为latin1,utf8字符集指向的是utf8mb3。网站开发人员在数据库设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL 8.0开始,数据库的默认编码改为utf8mb4,从而避免了上述的乱码问题。
MySQL图形化管理工具
MySQL图形化管理工具极大地方便了数据库的操作与管理,常用的图形化管理工具有:MySQL Workbench、phpMyAdmin、Navicat Preminum、MySQLDumper、SQLyog、dbeaver、MySQL ODBC Connector。
MySQL Workbench下载地址:MySQL :: Download MySQL Workbench。
Navicat下载地址:Navicat GUI | DB Admin Tool for MySQL, PostgreSQL, MongoDB, MariaDB, SQL Server, Oracle & SQLite client
SQLyog下载地址:Webyog | Tools for MySQL and MariaDB Databases
dbeaver(适合大数据)下载地址:Download | DBeaver Community
dbeaver
DBeaver是一个通用的数据库管理工具和 SQL 客户端,支持所有流行的数据库:MySQL、PostgreSQL、SQLite、Oracle、DB2、SQL Server、 Sybase、MS Access、Teradata、 Firebird、Apache Hive、Phoenix、Presto等。DBeaver比大多数的SQL管理工具要轻量,而且支持中文界面。DBeaver社区版作为一个免费开源的产品,和其他类似的软件相比,在功能和易用性上都毫不逊色。
唯一需要注意是 DBeaver 是用Java编程语言开发的,所以需要拥有 JDK(Java Development ToolKit)环境。如果电脑上没有JDK,在选择安装DBeaver组件时,勾选“Include Java”即可。
可能出现连接问题
有些图形界面工具,特别是旧版本的图形界面工具,在连接MySQL8时出现“Authentication plugin 'caching_sha2_password' cannot be loaded”或者是Unable to load authentication plugin ‘caching_sha2_password‘错误。
出现这个原因是MySQL8之前的版本中加密规则是mysql_native_password,而在MySQL8之后,加密规则是caching_sha2_password。解决问题方法有两种,第一种是升级图形界面工具版本,第二种是把MySQL8用户登录密码加密规则还原成mysql_native_password。
第二种解决方案如下,用命令行登录MySQL数据库之后,执行如下命令修改用户密码加密规则并更新用户密码,这里修改用户名为“root@localhost”的用户密码规则为“mysql_native_password”,密码值为“123456”,如图所示。
#使用mysql数据库
USE mysql;
#修改'root'@'localhost'用户的密码规则和密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'abc123';
#刷新权限
FLUSH PRIVILEGES;