标签: MySQL入门
存储数据方式演变
人们从古至今都有储存数据的需求,存储方式是按照下边的方式演变的。
人工管理阶段
很久很久以前,人们把数据存在动物骨头上,后来存到竹片上,再后来存到纸上,直到近代发明了磁带留声机啥的,不过这些都是依赖人工进行整理和保存的,特点就是效率低下、错误率高、查找不方便等等等等。。。
文件系统阶段
后来人们发明了计算机,为了管理各种数据,人们发明了一种叫文件系统的东东,可以方便的通过文件的存储路径和文件名来访问各个文件的内容,计算机程序也可以直接通过文件系统来操作各种文件,比人工管理爽多了。
数据库阶段
随着文件中存储的内容越来越多,在文件中修改和查找某些数据已经变得非常困难了,所以人们发明了一种专门的<span style="color:red">软件</span>来管理存储的数据,<span style="color:red">这些数据依照一定格式保存,通过这个软件可以方便的对数据进行增删改查操作,从而极大的提升了数据管理效率</span>,人们就把这个管理数据的软件叫做数据库管理系统
。
MySQL简介
关系型数据库管理系统
我们平时经常会用表格来存放信息,比如下边的两个表格就存放着学生的一些基本信息和他们的各种科目的考试成绩:
<center>学生基本信息表</center>
学号 | 姓名 | 性别 | 身份证号 | 学院 | 专业 | 入学时间 |
---|---|---|---|---|---|---|
20180101 | 杜子腾 | 男 | 158177199901044792 | 计算机学院 | 计算机科学与工程 | 2018-09-01 |
20180102 | 杜琦燕 | 女 | 151008199801178529 | 计算机学院 | 计算机科学与工程 | 2018-09-01 |
20180103 | 范统 | 男 | 17156319980116959X | 计算机学院 | 软件工程 | 2018-09-01 |
20180104 | 史珍香 | 女 | 141992199701078600 | 计算机学院 | 软件工程 | 2018-09-01 |
20180105 | 范剑 | 男 | 181048200008156368 | 航天学院 | 飞行器设计 | 2018-09-01 |
20180106 | 朱逸群 | 男 | 197995199801078445 | 航天学院 | 电子信息 | 2018-09-01 |
<center>学生成绩表</center>
学号 | 科目 | 成绩 |
---|---|---|
20180101 | 母猪的产后护理 | 78 |
20180101 | 论萨达姆的战争准备 | 88 |
20180102 | 母猪的产后护理 | 100 |
20180102 | 论萨达姆的战争准备 | 98 |
20180103 | 母猪的产后护理 | 59 |
20180103 | 论萨达姆的战争准备 | 61 |
20180104 | 母猪的产后护理 | 55 |
20180104 | 论萨达姆的战争准备 | 46 |
如果我们想查找史珍香
的《母猪的产后护理》科目的考试成绩怎么办呢?我们可以先通过学生基本信息表
查找到她的学号,然后再通过她的学号到学生成绩表
里找到该学号对应的《母猪的产后护理》科目的成绩。
表格也简称为表。有一种类型的数据库管理系统就是通过表格来存放数据的,而且不同的表可以通过某种关系联系起来(例子中成绩表通过学号和基本信息表联系起来),我们把这种数据库管理系统也称为关系型数据库管理系统
,我们要唠叨的MySQL
就是一种关系型数据库管理系统
。
MySQL的优势
这种所谓的关系型数据库管理系统
有好多,比如甲骨文的Oracle
,IBM的DB2
,微软的Access
和SQL Server
,开源的PostgreSQL
和MySQL
。。。我们是来唠叨 MySQL
的,所以瞅瞅它有啥牛逼的地方:
-
免费
就是不要钱,有很多数据库管理系统是要花真金白银买的,不过
MySQL
随便在网上下载就好喽~ -
开源
MySQL
的代码都是公开的,网上随便就能下载下来,方便我们了解它的实现原理。又因为是开源的,所以一旦有bug就会被好多人发现,设计MySQL的大叔们就会立即把bug修复,所以是非常稳定的。 -
跨平台
MySQL
可以运行在各种主流的操作系统上,各种类Unix系统、Windows系统啥的~ -
很牛逼
它可以快速、安全、有效地处理大量数据,不牛逼就没人用啦~
客户端/服务器架构
以我们平时使用的微信为例,它其实是由两部分组成的,一部分是客户端,一部分是服务器。客户端可能有很多种形式,比如手机APP,电脑软件或者是网页版微信,每个客户端都有一个唯一的用户名,就是你的微信号,另一方面,腾讯公司在他们的机房里运行着一个服务器软件,我们平时操作微信其实都是用客户端来和这个服务器来打交道。比如狗哥用微信给猫爷发了一条消息的过程其实是这样的:
- 消息被客户端包装了一下,添加了发送者和接受者信息,然后从狗哥的微信客户端传送给微信服务器;
- 微信服务器从消息里获取到它的发送者和接收者,根据消息的接受者信息把这条消息送达到猫爷的微信客户端,猫爷的微信客户端里就显示出狗哥给他发了一条消息。
MySQL
的使用过程跟这个是一样的,<span style="color:red">它有一个服务器程序直接和我们存储的数据打交道,然后可以有好多客户端程序连接到这个服务器程序,发送增删改查的请求,然后服务器就响应这些请求,从而操作它维护的数据</span>。和微信一样,MySQL
的每个客户端都需要提供用户名密码才能登录,登录之后才能给服务器发请求来操作某些数据。另外,<span style="color:red">客户端程序和服务器程序可以安装到同一台机器上,也可以安装到不同的机器上</span>。不过从我们学习的角度来说,也没必要弄两个电脑,一个当服务器一个当客户端了。所以我们一般只需要在自己的电脑上把服务器程序和客户端程序都安装上,先开启服务器程序,再打开客户端程序和服务器程序进行交互就好了~
小贴士:
`MySQL`的大部分安装包都包含了服务器程序和客户端程序(在Linux下使用RPM包时会有单独的服务器RPM包和客户端RPM包,需要分别安装),但是安装包中自带的客户端程序是在黑框框里使用的,如果你习惯了图形用户界面,可以自己去下载个 `MySQL Workbench` 或者 `Navicat`,这两个客户端软件可以让你在图形界面上点点点~
顺便说一句,作为程序员使用图形界面是不是有点儿low啊~ 也不是单纯为了装逼,使用黑框框的话很多时候会比图形界面更快,更简单~ 所以该用哪个客户端软件你心里应该有点儿*数吧!
安装MySQL
在安装过程中一定要<span style="color:red">记住安装路径和用户名密码啊</span>!
我的机器上MySQL
的安装路径是:/usr/local/Cellar/mysql/5.7.21/
。
用户名是:root
。
密码是:123456
。
Windows下安装
略~
Mac下安装
略~
Linux下安装
略~
MySQL命令
MySQL中的可执行文件
通常在MySQL
安装目录下有个bin
目录,看一下在我的机器中bin
目录下的部分文件:
.
├── mysql
├── mysql.server -> ../support-files/mysql.server
├── mysqladmin
├── mysqlbinlog
├── mysqlcheck
├── mysqld
├── mysqld_multi
├── mysqld_safe
├── mysqldump
├── mysqlimport
├── mysqlpump
... (省略其他文件)
0 directories, 40 files
这些都是可执行文件
,也就是说只要我们在黑框框里输入这些文件的路径(绝对路径、相对路径都可以)就可以执行它们。其实这些文件就相当于图形界面中的软件图标,鼠标双击就可以运行,只不过在黑框框里不能用鼠标,必须把这些文件的路径输入到黑框框里才能执行它们。比方我想运行mysql
这个文件,那就可以在黑框框里输入:
/usr/local/Cellar/mysql/5.7.21/bin/mysql
或者把当前目录切换到/usr/local/Cellar/mysql/5.7.21/bin/
,使用相对路径也可以运行,就像这样:
cd /usr/local/Cellar/mysql/5.7.21/bin/
mysql
如果你觉得输入绝对路径或者切换当前目录太麻烦,可以考虑把这些可执行文件添加个快捷方式。Windows里可以把bin
目录的路径添加到系统变量PATH
中,Linux或者Mac用户就不用管了,在安装过程中已经默认把这些命令设置为快捷方式了,你只需要直接输入命令名称就好了。
使用Windows的小伙伴赶紧把`bin`目录的路径添加到系统变量`PATH`中,我们下边的操作都默认大家有了这些可执行文件的快捷方式,就不再使用绝对路径或者切换目录的方式来执行这些文件了。
服务器相关的可执行文件
类UNIX系统
我们重点关注一下mysql.server
这个可执行文件,这个文件可以帮助我们启动和关闭服务器。这个可执行文件后边可以携带参数,启动和关闭的参数如下:
-
启动服务器携带的参数:
mysql.server start
-
关闭服务器携带的参数:
mysql.server stop
我们开启一下服务器,在黑框框里输入mysql.server start
,看到输出结果:
Starting MySQL
. SUCCESS!
这就说明启动成功了~
Windows系统
一般把MySQL
注册为Windows的服务,然后调用net start MySQL
和net stop MySQL
来启动和关闭服务器。
客户端相关的可执行文件
在服务器程序启动之后,就可以使用mysql
这个可执行文件来启动客户端并连接该服务器了,这个可执行文件需要一些参数,格式如下:
mysql -h主机名 -u用户名 -p密码
各个参数的意义如下:
参数名 | 含义 |
---|---|
-h |
表示启动服务器程序的计算机的域名或者IP地址,如果服务器程序就运行在本机的话,可以省略这个参数,也可以填localhost 或者127.0.0.1 。也可以写作 --host=主机 的形式。 |
-u |
表示用户名,如果你是刚刚使用MySQL ,则用户名是root 。也可以写作 --user=用户名 的形式。 |
-p |
表示密码,如果你在安装过程中设置了密码,那就用你设置的密码,否则密码为空。也可以写作 --password=密码 的形式。 |
比如我这样执行下边这个可执行文件(用户名密码按你的实际情况填写),就可以启动MySQL
客户端,并且连接到服务器了。
mysql -hlocahhost -uroot -p123456
也可以这么写:
mysql --host=localhost --user=root --password=123456
我们看一下连接成功后的界面:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.21 Homebrew
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
最后一行的mysql>
是一个客户端的提示符,之后客户端发送给服务器的命令都需要写在这个提示符后边。
如果我们想断开客户端与服务器的连接并且关闭客户端的话,可以在mysql>
提示符后输入下边任意一个命令:
quit
exit
\q
比如我们输入quit
试试:
mysql> quit
Bye
输出了Bye
说明客户端程序已经关掉了。注意注意注意,这是关闭客户端程序的方式,不是关闭服务器程序的方式,怎么关闭服务器上一节里唠叨过了。
如果你愿意,你可以多打开几个黑框框,每个黑框框都使用mysql -hlocahhost -uroot -p123456
来运行多个客户端程序,每个客户端程序都是互不影响的。如果你有多个电脑,也可以试试把它们用局域网连起来,在一个电脑上启动MySQL
服务器程序,在另一个电脑上执行mysql
命令时使用IP
地址作为主机名来连接到服务器。
连接注意事项
-
最好不要在一行命令中输入密码。
我们直接在黑框框里把密码敲出去被别人看到咋办,这和你当别人的面输入银行卡密码没啥区别,所以我们在执行
mysql
连接服务器的时候可以不显式的写出密码,就像这样:mysql -hlocahhost -uroot -p
点击回车之后才会提示你输入密码:
Enter password:
不过这回你输入的密码不会被显示出来,心怀不轨的人也就看不到了,输入完成点击回车就成功连接到了服务器。
-
如果你非要在显式的把密码熟出来,那密码值和
-p
之间不能有空白字符,其他参数名之间可以有空白字符,就像这样:mysql -h localhost -u root -p123456
如果加上了空白字符就是错误的,比如这样:
mysql -h localhost -u root -p 123456
-
mysql
的各个参数的摆放顺序没有硬性规定,也就是说你也可以这么写:mysql -p -u root -h localhost
-
如果你的服务器和客户端安装在同一台机器上,
-h
参数可以省略,就像这样:mysql -u root -p
-
如果你使用的是类Unix系统,并且省略
-u
参数后,会把你登陆操作系统的用户名当作MySQL
的用户名去处理。比方说我用登录操作系统的用户名是
wangqingfeng
,那么在我的机器上下边这两条命令是等价的:mysql -u wangqingfeng -p
mysql -p
对于Windows系统来说,默认的用户名是
ODBC
,你可以通过设置环境变量USER
来添加一个默认用户名。
总结
传统的数据存储方式有这样那样的弊端,所以使用数据库管理系统可以更方便的管理数据。
MySQL
是一种关系型数据库管理系统,使用表来存储数据。它免费、开源、跨平台很牛逼,是居家旅行的不二之选。MySQL
是使用客户端/服务器架构组织的软件,服务器程序用来统一管理真实数据,客户端软件可以连接到服务器并且向服务器发送各种操作数据的请求。安装好的
MySQL
通常都会携带服务器程序和客户端程序。类Unix系统通常使用
mysql.server
来开启和关闭服务器,Windows系统通常将服务器程序注册为一个Windows
服务,可以通过net start|stop mysql
来开启或关闭服务器程序。-
通常使用
mysql
来启动客户端程序并连接到服务器,需要携带的参数如下:-
-h
:表示主机名 -
-u
:表示用户名 -
-p
:表示密码
-
小册
本系列专栏都是MySQL入门知识,想看进阶知识可以到小册中查看:MySQL是怎样运行的链接 。小册的内容主要是从小白的角度出发,用比较通俗的语言讲解关于MySQL内核的一些核心概念,比如记录、索引、页面、表空间、查询优化、事务和锁等,总共的字数大约是三四十万字,配有上百幅原创插图。主要是想降低普通程序员学习MySQL进阶的难度,让学习曲线更平滑一点~