关系型数据库和MySQL概述
关系型数据库概述
- 1. 数据持久化是指将数据存储到可长期保存数据的存储介质中,即便出现掉电等异常情况,数据也不会丢失,从而确保数据的安全性和可复用性,这是数据库最核心的基础功能之一。
- 2. 数据库发展史数据库的发展历程大致可分为五个阶段,依次为:网状数据库、层次数据库、关系数据库、NoSQL数据库、NewSQL数据库。其中,关系数据库的出现是数据库发展史上的重要里程碑。1970年,IBM公司的研究员E.F.Codd在《Communication of the ACM》期刊上发表了题为《A Relational Model of Data for Large Shared Data Banks》的论文,首次提出了关系模型的核心概念,为关系数据库的发展奠定了坚实的理论基础。此后,Codd又陆续发表多篇学术文章,深入阐述了范式理论以及衡量关系系统的12条标准,用严谨的数学理论进一步完善了关系数据库的体系,推动了关系数据库从理论走向实际应用。
- • 理论基础:以关系代数为核心,融合集合论、一阶谓词逻辑和关系运算,确保数据操作的逻辑性和严谨性。
- • 具体表象:采用二维表(包含行和列)的形式组织和存储数据,行代表一条具体的记录,列代表数据的属性,结构清晰、易于理解和操作。
- • 编程语言:统一使用结构化查询语言(SQL),用于执行数据查询、插入、修改、删除等各类操作,通用性强,适用于所有关系型数据库。
- 4. ER模型(实体关系模型)和概念模型图。ER模型,全称为实体关系模型(Entity-Relationship Model),由美籍华裔计算机科学家陈品山先生提出,是一种高层的概念数据模型描述方式,用于清晰梳理数据库中实体、属性以及实体之间的关系,为数据库设计提供核心思路(相关图示可结合实际建模场景补充)。在实际项目开发中,我们通常会借助专业的数据库建模工具(如PowerDesigner)绘制概念数据模型,随后设置好目标数据库系统,将概念模型自动转换为物理模型,最终由工具根据物理模型和目标数据库类型,导出创建二维表的SQL语句,部分工具还支持直接生成数据表,极大提升了数据库设计和开发的效率。
ER模型的核心组成元素及表示方式如下:
- • 实体:用矩形框表示,代表现实世界中具有独立意义的事物,如“用户”“订单”“商品”等。
- • 属性:用椭圆框表示,代表实体的特征或属性,如“用户”的“姓名”“年龄”“手机号”等。
- • 关系:用菱形框表示,代表两个或多个实体之间的关联,如“用户”与“订单”之间的“下单”关系。
- • 重数:用于描述实体之间关系的数量对应关系,主要分为三种:1:1(一对一)、1:N(一对多)、M:N(多对多)。
- • Oracle:目前全球使用最广泛的数据库管理系统,作为通用型数据库,具备完整的数据管理功能;作为关系数据库,它是完备关系的成熟产品;作为分布式数据库,可实现高效的分布式数据处理。在Oracle较新版本中,还引入了多承租方架构,能够轻松部署和管理数据库云,适配企业级大规模数据场景。
- • DB2:由IBM公司研发,主要运行于Unix(含IBM自研的AIX系统)、Linux以及Windows服务器版等操作系统,是一款历史悠久的关系数据库产品,被认为是最早支持SQL语言的数据库之一,拥有强大的商业智能功能,广泛应用于金融、电信等大型企业的核心业务系统。
- • SQL Server:由微软(Microsoft)开发并推广的关系型数据库产品,最初主要适配中小企业的数据管理需求,近年来随着功能的不断完善,应用范围持续扩展,部分大型企业乃至跨国公司也开始基于它构建自身的数据管理系统,其优势在于与Windows系统、微软其他办公及开发工具的兼容性极强。
- • MySQL:开源免费的关系数据库管理系统,任何人都可在GPL(General Public License)许可下下载源码,并根据自身需求进行个性化修改。MySQL凭借高效的运行速度、可靠的稳定性和良好的适应性,成为最流行的开源数据库,广泛应用于各类网站和应用开发场景。
- • PostgreSQL:基于BSD许可证发行的开源关系数据库产品,兼具开源的灵活性和企业级的稳定性,支持多种数据类型和自定义功能,在开源数据库领域占据重要地位,适用于对数据安全性和扩展性有较高要求的场景。
MySQL 简介
MySQL 最早是由瑞典的 MySQL AB 公司开发的一个开放源码的关系数据库管理系统,该公司于2008年被昇阳微系统公司(Sun Microsystems)收购。在2009年,甲骨文公司(Oracle)收购昇阳微系统公司,因此 MySQL 目前也是 Oracle 旗下产品。
MySQL最早由瑞典的MySQL AB公司开发,是一款开源的关系数据库管理系统。2008年,MySQL AB公司被昇阳微系统公司(Sun Microsystems)收购;2009年,甲骨文公司(Oracle)收购昇阳微系统公司,自此MySQL正式成为Oracle旗下的产品。在过去的发展中,MySQL凭借高性能、低成本、高可靠性的核心优势,迅速成为全球最流行的开源数据库,被广泛应用于中小型网站开发。随着MySQL版本的不断迭代和功能的持续成熟,它也逐渐适配大规模网站和企业级应用,维基百科、谷歌(Google)、脸书(Facebook)、百度、淘宝、腾讯、新浪、去哪儿等国内外知名平台,均采用MySQL提供数据持久化服务。
不过,甲骨文公司收购昇阳微系统公司后,大幅上调了MySQL商业版的售价,同时停止支持另一款自由软件项目OpenSolaris的发展,这引发了自由软件社区的广泛担忧——大家担心Oracle会逐步减少对MySQL社区版(MySQL所有发行版本中唯一免费的版本)的支持。为了保障开源数据库的可持续发展,MySQL的创始人麦克尔·维德纽斯以MySQL为基础,创建了MariaDB分支(以他女儿的名字命名)。目前,已有许多原本使用MySQL的企业(如维基百科),陆续完成了从MySQL到MariaDB的迁移,确保自身业务的数据安全和稳定运行。
安装 MySQL
Windows 环境
- 1. 通过官方网站提供的下载链接下载“MySQL社区版服务器”安装程序,如下图所示,建议大家下载离线安装版的MySQL Installer。
4.启动/停止MySQL服务:可在Windows系统的“服务”窗口中,找到对应的MySQL服务,手动启动或停止。
- • 打开 Windows 的“系统”窗口并点击“高级系统设置”。
- • 在“系统属性”的“高级”窗口,点击“环境变量”按钮。
- • 修改PATH环境变量,将MySQL安装路径下的
bin文件夹的路径配置到PATH环境变量中。
- • 配置完成后,可以尝试在“命令提示符”下使用 MySQL 的命令行工具。
Linux环境(以CentOS 7.x + MySQL 5.7.x为例)
Linux环境下安装MySQL需通过命令行操作,以下为详细步骤(若需在其他Linux系统安装其他版本MySQL,可自行查询对应教程):
- 1. 安装 MySQL。可以在 MySQL 官方网站下载安装文件。首先在下载页面中选择平台和版本,然后找到对应的下载链接,直接下载包含所有安装文件的归档文件,解归档之后通过包管理工具进行安装。
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tartar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
如果系统上有 MariaDB 相关的文件,需要先移除 MariaDB 相关的文件。yum list installed | grep mariadb | awk '{print $1}' | xargs yum erase -y
更新和安装可能用到的底层依赖库。yum updateyum install -y libaio libaio-devel
接下来可以按照如下所示的顺序用 RPM(Redhat Package Manager)工具安装 MySQL。rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-devel-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
可以使用下面的命令查看已经安装的 MySQL 相关的包。rpm -qa | grep mysql
- 2. 配置 MySQL。MySQL 的配置文件在
/etc目录下,名为my.cnf,默认的配置文件内容如下所示。cat /etc/my.cnf
# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html[mysqld]## Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.# innodb_buffer_pool_size = 128M## Remove leading # to turn on a very important data integrity option: logging# changes to the binary log between backups.# log_bin## Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2Mdatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid
通过配置文件,我们可以修改 MySQL 服务使用的端口、字符集、最大连接数、套接字队列大小、最大数据包大小、日志文件的位置、日志过期时间等配置。当然,我们还可以通过修改配置文件来对 MySQL 服务器进行性能调优和安全管控。 - 3. 启动 MySQL 服务。可以使用下面的命令来启动 MySQL。
service mysqld start
在 CentOS 7 中,更推荐使用下面的命令来启动 MySQL。systemctl start mysqld
启动 MySQL 成功后,可以通过下面的命令来检查网络端口使用情况,MySQL 默认使用3306端口。netstat -ntlp | grep mysql
也可以使用下面的命令查找是否有名为mysqld的进程。pgrep mysqld
- 4. 使用 MySQL 客户端工具连接服务器。命令行工具:
mysql -u root -p
说明:启动客户端时,-u参数用来指定用户名,MySQL 默认的超级管理账号为root;-p表示要输入密码(用户口令);如果连接的是其他主机而非本机,可以用-h来指定连接主机的主机名或IP地址。
如果是首次安装 MySQL,可以使用下面的命令来找到默认的初始密码。cat /var/log/mysqld.log | grep password
上面的命令会查看 MySQL 的日志带有password的行,在显示的结果中root@localhost:后面的部分就是默认设置的初始密码。进入客户端工具后,可以通过下面的指令来修改超级管理员(root)的访问口令为123456。setglobal validate_password_policy=0;setglobal validate_password_length=6;alteruser'root'@'localhost' identified by'123456';
安全提示: MySQL较新版本默认禁止弱口令,上述操作仅适用于测试环境;生产环境中,严禁使用弱口令(避免被暴力破解),同时需将数据库服务器置于内网,不向公网开放3306端口,妥善保管root账号密码,应用系统访问数据库时,应创建专用账号并分配最小权限,降低数据泄露风险(近年来,数据库被攻击、数据被窃取、勒索比特币的事件频发,需重点做好安全防护)。
图形化客户端工具推荐:实际开发中,为提升操作效率,可使用图形化工具连接MySQL,常用工具包括MySQL Workbench(官方工具,免费开源)、Navicat for MySQL(界面简洁友好,功能强大,适合日常开发)。
macOS环境
macOS环境下安装MySQL操作简单,无需复杂的命令行配置,具体步骤如下:
- 1. 下载安装文件:访问MySQL官方网站,根据自身电脑的芯片类型(Intel芯片或苹果M1/M2芯片),选择对应的DMG格式安装文件下载。
- 2. 运行下载的DMG文件,按照安装向导的提示,逐步完成MySQL的安装(全程下一步即可,无需额外配置)。
- 3. 启动/停止MySQL服务:安装成功后,打开macOS的“系统偏好设置”,找到“MySQL”选项,进入后可手动启动、停止MySQL服务器,同时也可配置MySQL核心文件的存储路径。
备注:macOS环境下的环境变量配置、客户端连接方式,可参考Windows或Linux环境的相关操作,流程基本一致。
MySQL 基本命令
查看命令
show databases;
showcharacter set;
showcollation;
show engines;
showbinary logs;
show tables;
获取帮助
在MySQL命令行工具中,可通过help命令或“?”快速获取相关帮助,解决操作中的疑问:
- 4. 获取数据类型的帮助。
? data types
其他命令
- 1. 新建/重建服务器连接 -
connect / resetconnection。 - 2. 清空当前输入 -
\c。在输入错误时,可以及时使用\c清空当前输入并重新开始。 - 3. 修改终止符(定界符)-
delimiter。默认的终止符是;,可以使用该命令修改成其他的字符,例如修改为$符号,可以用delimiter $命令。 - 4. 打开系统默认编辑器 -
edit。编辑完成保存关闭之后,命令行会自动执行编辑的内容。 - 7. 执行系统命令 -
system。可以将系统命令跟在system命令的后面执行,system命令也可以缩写为\!。 - 8. 执行 SQL 文件 -
source。source命令后面跟 SQL 文件路径。 - 9. 重定向输出 -
tee / notee。可以将命令的输出重定向到指定的文件中。 - 12. 退出命令行 -
quit或exit。备注:所有MySQL命令均需严格区分大小写(关键字建议大写,表名、字段名建议小写,避免出现大小写冲突),末尾需加终止符(默认分号),否则命令不会执行。