主要内容:
数据库简介、构建MySQL服务(配置MySQL、配置phpMyadmin)、SQL语句基础(SQL语法规范、常用MYSQL命令)、SQL语句分类(DQL、DDL、DML、DCL)、基础查询、条件查询、排序;
一、数据库介绍
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。它们在各种应用中扮演着关键角色,从简单的数据存储到复杂的数据分析和处理。
主流数据库产品:
在数据库领域,DB、DBMS 和 DBS 是三个常见的术语,它们分别代表不同的概念。以下是对这三个术语的详细解释:
- DB(数据库):存储数据的集合,以结构化的方式组织数据
- DBMS(数据库管理系统):管理和操作数据库的软件系统,提供数据定义、操作和控制功能
- DBS(数据库系统):包括数据库、数据库管理系统、应用程序和用户,形成一个完整的系统,用于管理和操作数据
DB(Database)
DB 是 Database 的缩写,中文翻译为“数据库”。数据库是一个有组织的数据集合,通常存储在计算机系统中,用于高效地存储、管理和检索数据。数据库可以包含各种类型的数据,如文本、数字、图像、音频、视频等。特点:
- 数据组织:数据以结构化的方式存储,通常使用表格(表)来组织数据。
- 数据独立性:数据与应用程序分离,应用程序通过数据库管理系统(DBMS)访问数据。
- 数据共享:多个用户和应用程序可以同时访问和操作数据库中的数据。
- 数据一致性:通过约束和事务机制,确保数据的一致性和完整性。
DBMS(Database Management System)
DBMS 是 Database Management System 的缩写,中文翻译为“数据库管理系统”。DBMS 是一个软件系统,用于创建、管理和操作数据库。它提供了用户与数据库之间的接口,使用户能够方便地存储、检索、更新和管理数据。特点:
- 数据定义:提供数据定义语言(DDL),用于定义数据库的结构,如创建表、定义索引等。
- 数据操作:提供数据操作语言(DML),用于查询、插入、更新和删除数据。
- 数据控制:提供数据控制语言(DCL),用于控制数据的访问权限和安全性。
- 事务管理:支持事务处理,确保数据的一致性和完整性。
DBS(Database System)
DBS 是 Database System 的缩写,中文翻译为“数据库系统”。数据库系统是一个更广泛的概念,它包括数据库(DB)、数据库管理系统(DBMS)以及相关的应用程序和用户。数据库系统是一个完整的系统,用于管理和操作数据。
组成:
- 数据库(DB):存储数据的集合。
- 数据库管理系统(DBMS):管理和操作数据库的软件系统。
- 应用程序:使用数据库的应用程序,如 Web 应用、桌面应用等。
- 用户:访问和操作数据库的用户,如管理员、开发人员、终端用户等。
1、MySQL简介
MySQL 是一种开源的关系型数据库管理系统(RDBMS),广泛用于各种规模的应用程序,从个人项目到大型企业级系统。MySQL 以其高性能、可靠性和易用性而闻名,是世界上最流行的数据库之一。最早隶属于瑞典的MySQL AB公司,2008年1月,被SUN公司收购,2009年4月,SUN被Oracle收购;其次拥有崭新的开源分支MariaDB,为应付MySQL可能会闭源的风险而诞生,由MySQL原作者Widenius主导开发,与MySQL保持最大程度兼容;
MySQL 的特点:
开源
- 免费使用:MySQL 是开源软件,用户可以免费下载、使用和修改。
- 社区支持:拥有庞大的用户和开发者社区,提供丰富的文档、教程和问题解答。
高性能
- 快速读写:MySQL 优化了查询和数据操作,适用于高并发的读写操作。
- 索引支持:支持多种索引类型(如 B-Tree 索引、哈希索引),提高查询性能。
可靠性
- 事务支持:支持 ACID 事务,确保数据的一致性和完整性。
- 备份和恢复:提供多种备份和恢复机制,确保数据的可靠性和安全性。
易用性
- SQL 支持:完全支持 SQL 标准,用户可以使用熟悉的 SQL 语法进行数据操作。
- 图形化工具:提供多种图形化管理工具(如 MySQL Workbench),方便用户管理和操作数据库。
可扩展性
- 水平扩展:支持分片(Sharding)和复制(Replication),实现水平扩展。
- 垂直扩展:支持多核处理器和多服务器配置,实现垂直扩展。
MySQL 的使用场景:
Web 应用
- 电子商务:存储产品信息、订单数据、用户信息等。
- 社交网络:存储用户信息、帖子、评论等。
- 内容管理系统(CMS):存储文章、页面、用户数据等。
企业应用
- 客户关系管理(CRM):存储客户信息、销售数据、市场活动等。
- 企业资源规划(ERP):存储财务数据、供应链数据、人力资源数据等。
数据分析
- 数据仓库:存储大量历史数据,用于数据分析和报表生成。
- 实时分析:支持实时数据查询和分析,如实时监控、实时报表等。
MySQL 的架构主要包括以下几个组件:
① 客户端
- 命令行工具:如 mysql 命令行工具,用于执行 SQL 命令和管理数据库。
- 图形化工具:如 MySQL Workbench,提供图形化界面进行数据库管理。
- 应用程序:各种编程语言的 MySQL 驱动程序,如 PHP、Python、Java 等。
② 服务器
- MySQL 服务器:负责处理客户端请求,执行 SQL 查询和数据操作。
- 存储引擎:MySQL 支持多种存储引擎,如 InnoDB、MyISAM、Memory 等,不同的存储引擎提供不同的功能和性能。
③ 存储
- 数据文件:存储实际的数据,如表数据、索引数据等。
- 日志文件:存储事务日志、错误日志等,用于数据恢复和故障排查。
2、MySQL 的安装和配置
1)Linux:可以使用包管理器(如 apt、yum)安装 MySQL。
sudo apt-get install mysql-server
2)Windows:可以从 MySQL 官方网站下载安装包,按照向导进行安装。
配置文件:MySQL 的配置文件通常位于 /etc/mysql/my.cnf(Linux)或 C:\ProgramData\MySQL\MySQL Server X.X\my.ini(Windows)。
常用配置项:
- bind-address:指定 MySQL 服务器监听的 IP 地址。
- port:指定 MySQL 服务器监听的端口(默认 3306)。
- datadir:指定数据文件的存储路径。
- log_error:指定错误日志文件的路径。
二、部署MySQL服务
1)MySQL安装准备环境
- 关闭防火墙和SELinux
- 下载MySQL社区软件(教学提供mysql-5.7.17.tar)
官网下载:MySQL :: Download MySQL Community Server
mysql-community-client //客户端应用程序
mysql-community-common //数据库和客户端库共享文件
mysql-community-devel //客户端应用程序的库和头文件
mysql-community-embedded //嵌入式函数库
mysql-community-embedded-compat //嵌入式兼容函数库
mysql-community-embedded-devel //头文件和库文件作为MySQL的嵌入式库文件
mysql-community-libs //mysql数据库客户端应用程序的共享库
mysql-community-libs-compat //客户端应用程序的共享兼容库
mysql-community-minimal-debuginfo
mysql-community-server
mysql-community-test
- 配置网络yum源(为后续实验方便软件下载)
- 启动mysqld服务,首次启动服务,会执行数据初始化
2)相关参数
- 软件安装后自动创建相关目录与文件
3)MySQL初始配置
① 初始密码登录
- 数据库管理员名为root,默认仅允许root本机连接
- 首次登录密码在安装软件是随机生成,随机密码存储在/var/log/mysqld.log日志文件
② 修改root密码
- 使用mysqladmin -u用户名 -p随机密码 password '新密码';
- 使用alter user命令修改登录密码,新密码必须满足密码策略;
4)连接方式
客户端连接MySQL服务的方法
- ① 命令行
- ② web页面
- ③ 安装图形软件(phpMyAdmin)
- ④ 编写脚本(PHP、JAVA、Python)
5)数据存储流程
客户端把数据存储到数据库服务器上的步骤:
- ① 连接数据库服务器
- ② 建库 //类似于文件夹
- ③ 建表 //类似于文件
- ④ 插入记录 //类似于文件内容
- ⑤ 断开连接
附加:修改密码策略
策略名称 |
验证方式 |
0 or LOW |
长度 |
1 or MEDIUM(默认) |
长度;数字,小写/大写,和特殊字符 |
2 os STRONG |
长度;数字,小写/大写和特殊字符; |
mysql> show variables like "%password%"; //查看变量
mysql> set global validate_password_policy=0; //修改密码策略
mysql> set global validate_password_length=6; //修改密码长度
[root@localhost ~]# vim /etc/my.cnf //永久配置
[mysqld]
validate_password_policy=0
validate_password_length=6
案例:构建MySQL服务器
步骤1:环境准备
1&#