前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小面试官教你 MySQL——简介和功能

小面试官教你 MySQL——简介和功能

原创
作者头像
amc
修改2020-12-01 11:28:33
1.5K0
修改2020-12-01 11:28:33
举报
文章被收录于专栏:后台全栈之路后台全栈之路

MySQL 是我们作为后台开发中非常重要的软件。前段时间作为面试官,面试了几位后台开发的候选人——MySQL 的知识由浅入深一路问下去,并没有人能够完整地回答出来。

于是我突发灵感,决定整理一下 MySQL 的应用中需要了解的知识,做一个概要性的介绍,供后台开发的读者参阅。

首先是第一篇:MySQL 简介和操作

本篇内容非常基础,可能很多读者都已经了解了,可以直接跳过。


SQL 和 MySQL 是什么?

SQL

SQL 的全称是 "Structured Query Language",即 “结构化查询语言”,简称的读音在中文程序员圈子中经常被读作 "[sə: kwəl]",不过实际上,应该读作 "[si: kwəl]"。

SQL 定义了一系列数据查询的语法、函数定义等,构成了一套完整的数据库操作交互语法。SQL 在1986年成为 ANSI 的一项标准,并于次年成为 ISO 的标准。在这之后,开始出现大量基于 SQL 语法实现的数据库。

目前主流的几大 SQL 数据库有:

  • MySQL、MariadDB、Percona Server: 最经典、使用最广泛的开源分布式数据库
  • PostgreSQL(读作 "post-gress-Q-L",中文开发者喜欢简称 PG): 个人认为是第二著名的开源数据库,曾经在地理信息系统数据存储中独领风骚
  • Oracle Database: 甲骨文公司推出的关系型数据库,在早期政府项目中几乎是唯一指定采购的数据库软件。个人建议:互联网从业者就不用学了,现在至少国内都在去IOE化,而这其中的 O 指的就是 Oracle。
  • Windows SQL Server: 一看到 Windows 打头的,后台开发同学也可以不用学了。

在 Wikipedia 中说得很夸张:虽然有这一标准的存在,但大部分的SQL代码在不同的数据库系统中并不具有完全的跨平台性。

应该说标准的 SQL 规范和各家 SQL 数据库的实现均不完全一致,因此如果使用到了某一数据库稍微进阶一点的 SQL,就无法迁移到另一个数据库上了。这一点需要留意。

MySQL

MySQL 最早是在 1995 年由瑞典 MySQL AB 公司开发的开源的关系型数据库系统。现在 MySQL 及其分支者 MariaDB 已经是互联网中使用最为广泛的分布式关系型数据库系统,没有之一。

说到 MySQL 就不得不讲 MariaDB: 2008 年 Sun 收购了 MySQL AB;2009 年 Sun 又被 Oracle 收购。是的,就是前文我说 “不用学了” 的 Oracle。目前 Oracle 公司依然维护着 MySQL 社区版。但是 Oracle 毕竟是一家逐利的公司,出于对 MySQL 未来的担忧,MySQL 的创始人将 MySQL fork 了出来,这就是 MariaDB

需要注意的是,MariaDB 和 MySQL 分家的版本点是 MySQL 5.6,在这个版本之前,两者基本上是兼容的。但是从 MySQL 5.7 开始,MariaDB 就不再完全跟随 MySQL 的脚步了。因此 MySQL 5.7 和 MariaDB 的功能开始有了分歧。比如 MySQL 5.7 开始支持 JSON,而 MariaDB 并没有支持。


MySQL 简要概念

database 和 table

概念

说明

database

在 MySQL 中,数据存储的最高单位是 database,一个 database 下面由若干个 table 组成。database 也是对数据库账户进行权限控制的常用维度。

table

一个 table 是一组相同类型的数据的集合。在一个 table 中需要定义数据的命名、格式,以及数据的索引等信息。本文暂时不解释索引,后续文章再说明。

line

“行” 代表的是一个 table 中的一条条目

column

“列” 一般指的是一个 table 中的一个数据字段

我们以一个 struct 来类比:

代码语言:txt
复制
typedef struct _person {
    char   name[64];
    int8_t sex;
} person;

那么 table 就是 char *person[],line 就是 *person

数据类型

所有的 MySQL 都支持以下数据类型:

名称

类型定义

备注

TINYINT(n)

单字节整型

n 表示具体展示出来的数字精度。括号中的数字不实际影响数据的存储,只影响展示。对于所有数字类型都是这样的

SMALLINT(n)

双字节整型

即 “字”

INT(n)

四字节整型

BIGINT(n)

八字节整型

BOOL(n)

布尔型

在 MySQL 中实际上是使用 SMALLINT 来实现的

CHAR(n)

定长的字符串类型

n表示长度。实际占用存储的大小由编码格式决定

VARCHAR(n)

变长的字符串类型

n表示最长长度。实际占用存储的大小由编码格式决定

TEXT

变长的字符串类型

TEXT 和 VARCHAR(65535) 很类似,但是实际上是无法达到 65535 的。如果读者有兴趣,可以进一步阅读相关资料

FLOAT(m,d)

四字节浮点型

其中 m 表示有效位数,d表示小数点后的位数。括号中的数字不实际影响数据的存储,只影响展示

DOUBLE(m,d)

八字节浮点数

DECIMAL(m,b)

定点数

在 MySQL 中,定点数实际上是使用 string 的模式来存储的

所有的整型数据类型默认为有符号类型,均可以在后面加上 UNSIGNED 修饰符变成无符号类型。


MySQL 操作

MySQL 的常用操作我在之前的一篇文章中作为笔记记了一下,读者可以参阅:MySQL/MariaDB 语句速查笔记


参考资料


本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

原作者: amc,欢迎转载,但请注明出处。

原文标题:小面试官教你 MySQL——简介和功能

发布日期:2020-11-03

原文链接:https://cloud.tencent.com/developer/article/1739780

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SQL 和 MySQL 是什么?
    • SQL
      • MySQL
      • MySQL 简要概念
        • database 和 table
          • 数据类型
          • MySQL 操作
          • 参考资料
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档