什么是MySQL?

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 这篇文章介绍了MySQL,一个流行的开源数据库系统,用于Web应用。MySQL基于客户机/服务器架构,允许多用户并发访问并提供安全控制。它支持SQL标准,包括数据类型如数值、字符串和日期,以及内置函数。查询语言SQL是其核心,强调非过程化编程,简化数据操作。示例展示了如何用SQL选择特定记录。

640.png


本文介绍MySQL的体系结构和查询语言。
# 01、MySQL简介
MySQL是目前最流行的关系数据库管理系统之一,由瑞典MySQL AB公司开发,目前属于Oracle 旗下产品。在Web应用方面,MySQL是最好的关系数据库管理系统支撑软件之一。MySQL将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,表之间通过外键建立关联,这样就增加了数据存取的速度并提高了数据操作的灵活性。MySQL使用最常用的标准化SQL定义、访问和操作数据库。其社区版的性能卓越,搭配PHP和Apache即可组建良好的开发环境。MySQL软件体积小、运行速度快、总体拥有成本低,特别是开放源码这一特点,一般中小型Web应用程序的开发都选择MySQL作为支撑数据库。
# 02、MySQL的体系结构



MySQL采用的是客户机/服务器(Client/Server)体系结构,因此,在使用MySQL存取数据时,必须至少使用两个或者两类程序。

(1) 在数据服务器上的数据库服务程序(对应Server端)。数据库服务程序监听从网络上传过来的客户机请求并根据这些请求访问数据库,并将结果返回给客户机以响应它们的请求。

(2) 连接到数据库服务器的客户机程序(对应Client端)。这些程序是用户和服务器交互的工具,负责将用户需求进行加工并传递到服务器以及将服务器返回的信息告知用户。

MySQL的分发包由服务器和几个客户机程序组成。程序员可以根据具体的需求来选择使用客户机。最常用的客户机程序为mysql,这是一个交互式的客户机程序,它能发布查询并看到结果。此外,其他的客户机程序有mysqldump和mysqlimport,分别导出表的内容到某个文件或将文件的内容导入某个表;mysqladmin用来查看服务器的状态并完成管理任务,如告诉服务器关闭、重启、刷新缓存等。如果现有的客户机程序不满足需要,MySQL还提供了一个客户机开发库,可以编写自己的程序。开发人员可以直接调用开发库中的C语言程序,如果希望使用其他语言,还有几种其他的接口可用。

MySQL的客户机/服务器体系结构具有如下优点。

(1) 服务器提供并发控制,使两个用户不能同时修改相同的记录。所有客户机的请求都通过服务器处理,服务器分类辨别谁准备做什么、何时做。如果多个客户机希望同时访问相同的表,它们不必互相裁决和协商,只要发送自己的请求给服务器并让它仔细确定完成这些请求的顺序即可。

(2) 不必在数据库所在的机器上注册。MySQL可以非常出色地在互联网上工作,因此用户可以在任何位置运行一个客户机程序,只要此客户机程序能够连接到网络上的服务器即可。当然,不是任何人都可以通过网络访问你的MySQL服务器。MySQL含有一个灵活而又有高效的安全系统,只允许有权限的人访问数据,而且可以保证用户只能够做允许的事情。
# 03、MySQL的查询语言

MySQL使用结构化查询语言(Structured Query Language,SQL)与服务器通信。MySQL系统使用的SQL基本上符合SQL 92的标准,但其对SQL 92标准既有扩展又有未实现的地方。

##表、列和数据类型

表是数据在一个MySQL数据库中的存储单元。如表8-1所示,它是一张二维表,包含一组固定的列。表中的列描述该表所表示的实体的属性,每列都有一个名字及各自的特性。列由两部分组成:数据类型(Data Type)和长度(Length)。

■ 表1 MySQL中的表结构


image.png


MySQL常用的数据类型有数值类型、字符串类型及日期类型等。表2中给出了MySQL的基本数据类型及其描述。

■ 表2 常用的数据类型


image.png

函数

函数(Function)是存储在数据库中的代码块。程序员可以根据需要创建不同的函数,并直接在SQL语句中调用。函数可以把计算的结果直接返回给调用的SQL。例如,MySQL提供一个SUBSTRING函数来执行字符串上的“取子串”操作,如果创建一个叫作MYSUB的函数来执行一个自定义的取子串操作,就可以在一个SQL命令中调用它。如:

select mysub("This is a test", 6, 2)
SQL语句

SQL是一种典型的非过程化程序设计语言。这种语言的特点是:只指定哪些数据被操纵,至于对这些数据要执行哪些操作,以及这些操作是如何执行的,则未被指定。非过程化程序设计语言的优点在于简单易学,因此SQL已经成为关系数据库访问和操纵数据的标准语言。

与SQL对应的是过程化程序设计语言,各种高级程序设计语言都属于这一范畴。该语言的特点是:一条语句的执行是与其前后的语句和控制结构(如条件语句、循环语句等)相关的。与SQL相比,这些语言显得比较复杂,但优点是使用灵活,数据操纵能力非常强大。

这些过程化的程序设计语言在访问数据库时一般不允许按照某种特定的顺序来读取表的记录,因为这样做会降低DBMS读取记录的效率。而使用SQL只能按查询条件来读取记录。当考虑如何从表中取出记录时,自然会想到按记录的位置读取它们。例如,也可以通过循环逐个记录地扫描,来选出特定的记录。但在使用SQL读取记录时,要尽量避免这种操作思路。

假如想选出所有名字是Tom的记录,如果使用传统的编程语言,可能会构造一个循环,逐个查找表中的记录,看名字字段内容是否匹配Tom。这种选择记录的方法是可行的,但是效率非常低。而用SQL时,只要说“选择所有名字域等于Tom的记录”,SQL就会筛选出所有符合条件的记录。SQL会确定实现查询的最佳方法。

例如,从表teachers中取出id为1的数据:

select * from teachers where id=1

实现相同的功能,如果用普通的高级语言,也许需要一个复杂的循环。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
mysql
```sql 使用MySQL查询比数学系所有学生年龄大的学生姓名和所在系。代码如下: use teachingdb; SELECT sname, sdept, birthday FROM student WHERE birthday < ALL (SELECT birthday FROM student WHERE sdept = '数学'); ``` 摘要:该任务是查询比数学系学生年龄大的所有学生信息,包括姓名和所在系。通过在SQL中使用ANY/ALL操作符与子查询结合,这里选用ALL与MAX()函数等效,找出比数学系学生最晚出生日期还要早的所有学生。
17 0
|
1月前
|
SQL 关系型数据库 MySQL
初学mysql
本文档介绍了MYSQL中的表格与键的概念,包括列、行、主键和外键。接着,展示了SQL语法基础,如创建、查看、删除数据库及操作表格。讨论了不同数据类型,如decimal、varchar、blob等。通过示例说明如何添加、删除列,插入、更新和删除数据,以及查询技巧,如使用WHERE、ORDER BY和LIMIT子句。
22 0
|
1月前
|
存储 关系型数据库 MySQL
什么是MySQL
什么是MySQL
36 0
|
8月前
|
存储 缓存 关系型数据库
mysql总结(下)
mysql总结
27 0
|
9月前
|
存储 关系型数据库 MySQL
mysql为什么不推荐用空
mysql为什么不推荐用空
66 0
|
SQL 关系型数据库 MySQL
盘点一下Mysql中的一些小知识(二)
盘点一下Mysql中的一些小知识(二)
67 0
|
关系型数据库 MySQL
07_mysql中having的使用_having与where的对比
mysql中having的使用 having与where的对比
153 0
07_mysql中having的使用_having与where的对比
|
SQL 关系型数据库 MySQL
Mysql
笔记
110 1
|
SQL 存储 自然语言处理
mysql总结
mysql总结
168 0
|
存储 SQL 关系型数据库
Mysql(三)
Mysql(三)
130 0
Mysql(三)