mysql

简介: mysql

访问数据库

程序运行的时候,数据都是在内存中的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。

而如何定义数据的存储格式就是一个大问题。如果我们自己来定义存储格式,比如保存一个班级所有学生的成绩单:

image.png

Michael,99
Bob,85
Bart,59
Lisa,87

你还可以用JSON格式保存,也是文本文件:

[
    {"name":"Michael","score":99},
    {"name":"Bob","score":85},
    {"name":"Bart","score":59},
    {"name":"Lisa","score":87}
]

你还可以定义各种保存格式,但是问题来了:

存储和读取需要自己实现,JSON还是标准,自己定义的格式就各式各样了;

不能做快速查询,只有把数据全部读到内存中才能自己遍历,但有时候数据的大小远远超过了内存(比如蓝光电影,40GB的数据),根本无法全部读入内存。

为了便于程序保存和读取数据,而且,能直接通过条件快速查询到指定的数据,就出现了数据库(Database)这种专门用于集中存储和查询的软件。

数据库软件诞生的历史非常久远,早在1950年数据库就诞生了。经历了网状数据库,层次数据库,我们现在广泛使用的关系数据库是20世纪70年代基于关系模型的基础上诞生的。

关系模型有一套复杂的数学理论,但是从概念上是十分容易理解的。举个学校的例子:

假设某个XX省YY市ZZ县第一实验小学有3个年级,要表示出这3个年级,可以在Excel中用一个表格画出来:

image.png

image.png

根据某个年级的ID就可以查找所有班级的行,这种查询语句在关系数据库中称为SQL语句,可以写成:

SELECT * FROM classes WHERE grade_id = '1';

结果也是一个表:

---------+----------+----------
grade_id | class_id | name
---------+----------+----------
1        | 11       | 一年级一班
---------+----------+----------
1        | 12       | 一年级二班
---------+----------+----------
1        | 13       | 一年级三班
---------+----------+----------


类似的,Class表的一行记录又可以关联到Student表的多行记录:

image.png

由于本教程不涉及到关系数据库的详细内容,如果你想从零学习关系数据库和基本的SQL语句,请参考 SQL教程。

NoSQL

你也许还听说过NoSQL数据库,很多NoSQL宣传其速度和规模远远超过关系数据库,所以很多同学觉得有了NoSQL是否就不需要SQL了呢?千万不要被他们忽悠了,连SQL都不明白怎么可能搞明白NoSQL呢?

数据库类别

既然我们要使用关系数据库,就必须选择一个关系数据库。目前广泛使用的关系数据库也就这么几种:

付费的商用数据库:

Oracle,典型的高富帅;

SQL Server,微软自家产品,Windows定制专款;

DB2,IBM的产品,听起来挺高端;

Sybase,曾经跟微软是好基友,后来关系破裂,现在家境惨淡。

这些数据库都是不开源而且付费的,最大的好处是花了钱出了问题可以找厂家解决,不过在Web的世界里,常常需要部署成千上万的数据库服务器,当然不能把大把大把的银子扔给厂家,所以,无论是Google、Facebook,还是国内的BAT,无一例外都选择了免费的开源数据库:

MySQL,大家都在用,一般错不了;

PostgreSQL,学术气息有点重,其实挺不错,但知名度没有MySQL高;

sqlite,嵌入式数据库,适合桌面和移动应用。

作为一个JavaScript全栈工程师,选择哪个免费数据库呢?当然是MySQL。因为MySQL普及率最高,出了错,可以很容易找到解决方法。而且,围绕MySQL有一大堆监控和运维的工具,安装和使用很方便。

安装MySQL

为了能继续后面的学习,你需要从MySQL官方网站下载并安装 MySQL Community Server 5.6,这个版本是免费的,其他高级版本是要收钱的(请放心,收钱的功能我们用不上)。MySQL是跨平台的,选择对应的平台下载安装文件,安装即可。

安装时,MySQL会提示输入root用户的口令,请务必记清楚。如果怕记不住,就把口令设置为password。

在Windows上,安装时请选择UTF-8编码,以便正确地处理中文。

在Mac或Linux上,需要编辑MySQL的配置文件,把数据库默认的编码全部改为UTF-8。MySQL的配置文件默认存放在/etc/my.cnf或者/etc/mysql/my.cnf:

[client]
default-character-set = utf8
[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci


重启MySQL后,可以通过MySQL的客户端命令行检查编码:

$ mysql -u root -p
Enter password:  
Welcome to the MySQL monitor...
...
mysql> show variables like '%char%';
+--------------------------+--------------------------------------------------------+
| Variable_name            | Value                                                  |
+--------------------------+--------------------------------------------------------+
| character_set_client     | utf8                                                   |
| character_set_connection | utf8                                                   |
| character_set_database   | utf8                                                   |
| character_set_filesystem | binary                                                 |
| character_set_results    | utf8                                                   |
| character_set_server     | utf8                                                   |
| character_set_system     | utf8                                                   |
| character_sets_dir       | /usr/local/mysql-5.1.65-osx10.6-x86_64/share/charsets/ |
+--------------------------+--------------------------------------------------------+
8 rows in set (0.00 sec)
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
前端开发
Window对象提示框、确认框、输入框、弹窗详解
本文目录 1. 背景 2. alert提示框 3. confirm确认框 4. prompt输入框 5. showModalDialog弹窗 6. 小结
2126 0
Window对象提示框、确认框、输入框、弹窗详解
|
1月前
|
存储 弹性计算 固态存储
阿里云服务器租用价格表2026年10月最新:一年/按月/按小时收费明细,一文看懂
2026年10月阿里云服务器最新报价:轻量应用服务器低至38元/年(200M峰值带宽),ECS经济型e实例99元/年;支持包年包月、按量付费及抢占式实例;含CPU内存、带宽(1–5Mbps起)、ESSD云盘等分项计费明细。
432 0
|
2月前
|
SQL 人工智能 自然语言处理
AI+BI融合元年,智能分析领域BI产品哪家好?
2026年是AI与BI深度融合元年。阿里云瓴羊Quick BI推出AI-native架构的AIPro版本,以“智能小Q”为核心,实现自然语言问数、自动归因、报告生成与业务系统联动,构建从“问数→归因→报告→行动”的完整分析闭环,助力企业降本增效。
|
8月前
|
人工智能 运维 自然语言处理
AI原生·轻量化集成:开源知识库核心竞争力解析
在企业数字化转型与研发效率提升的双重驱动下,传统静态Wiki系统已难以适配复杂知识管理需求。基于大模型的开源知识库平台,以AI原生设计、富文本协同、多源导入与轻量化集成为核心,为技术文档、产品手册、FAQ与内部知识库提供全链路解决方案,本文结合技术特性、部署实践与真实场景案例,展开深度解析。
|
4月前
|
人工智能 运维 供应链
AI算力爆发,液冷CDU成刚需!核心原理、成本拆解、头部玩家全盘点
本文深度解析液冷CDU行业:随GB200/Rubin集群落地,单柜功耗超100kW,液冷成智算中心刚需。CDU作为液冷“心脏”,技术壁垒高、供需缺口大。全面梳理英维克、申菱等国产龙头及Vertiv等海外巨头的核心技术、客户生态与差异化优势,助力IDC与算力建设方决策。(239字)
|
6月前
|
IDE 前端开发 开发工具
Google 的 IDE 演进小史
本文回顾Google IDE演进史:从工程师各用所爱(Vim/Emacs/IntelliJ/VS Code),到因超大规模代码库(google3)催生云端IDE Cider,再升级为融合VS Code前端的Cider V。其核心不是统一工具,而是以云化语言服务重构开发体验,将IDE升维为连接代码库、构建、审查与AI的工程杠杆。
466 0
Google 的 IDE 演进小史
|
7月前
|
存储 监控 安全
基于零信任架构的企业级数据防泄密系统技术实现研究 ——以互成软件文档安全管理系统为例
本文剖析互成文档安全管理系统核心技术:基于国密SM4的透明加密引擎、程序级行为管控、加密网关部署及细粒度密级权限体系,融合零信任理念,实现文档“使用态”全生命周期防护,兼顾合规性、自主可控与业务友好性。(239字)
|
11月前
|
Web App开发 Linux 数据安全/隐私保护
Apple Safari 26.2 发布 - macOS 专属浏览器 (独立安装包下载)
适用于 macOS Sequoia 和 macOS Sonoma 的 Safari 浏览器 26
737 0
Apple Safari 26.2 发布 - macOS 专属浏览器 (独立安装包下载)
|
自动驾驶 5G 网络性能优化
5G标准化背后的江湖:技术规范如何塑造未来通信
5G标准化背后的江湖:技术规范如何塑造未来通信
1190 19
|
监控 安全 算法
龙蜥衍生版KeyarchOS国密应用、eBPF安全技术实践介绍|龙蜥大讲堂107期
龙蜥衍生版KeyarchOS国密应用及eBPF安全技术实践介绍。本次分享由浪潮信息的霍文和甄鹏主讲,涵盖全栈国密、国密密钥证书、国密通信等内容,并介绍了基于eBPF技术的新一代零侵入安全防御组件KSecure。通过实际案例展示了敏感信息传输加密、虚拟机热迁移等应用场景,以及如何利用eBPF实现进程注入检测等安全功能。该技术方案有效提升了操作系统的安全性与合规性,为服务器提供了强大的安全保障。
707 12
龙蜥衍生版KeyarchOS国密应用、eBPF安全技术实践介绍|龙蜥大讲堂107期

热门文章

最新文章