标签: MySQL入门mysql
人们从古至今都有储存数据的需求,存储方式是按照下边的方式演变的。程序员
好久好久之前,人们把数据存在动物骨头上,后来存到竹片上,再后来存到纸上,直到近代发明了磁带留声机啥的,不过这些都是依赖人工进行整理和保存的,特色就是效率低下、错误率高、查找不方便等等等等。。。sql
后来人们发明了计算机,为了管理各类数据,人们发明了一种叫文件系统的东东,能够方便的经过文件的存储路径和文件名来访问各个文件的内容,计算机程序也能够直接经过文件系统来操做各类文件,比人工管理爽多了。数据库
随着文件中存储的内容愈来愈多,在文件中修改和查找某些数据已经变得很是困难了,因此人们发明了一种专门的软件来管理存储的数据,这些数据依照必定格式保存,经过这个软件能够方便的对数据进行增删改查操做,从而极大的提高了数据管理效率,人们就把这个管理数据的软件叫作数据库管理系统
。安全
咱们平时常常会用表格来存放信息,好比下边的两个表格就存放着学生的一些基本信息和他们的各类科目的考试成绩:bash
学号 | 姓名 | 性别 | 身份证号 | 学院 | 专业 | 入学时间 |
---|---|---|---|---|---|---|
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 |
学号 | 科目 | 成绩 |
---|---|---|
20180101 | 母猪的产后护理 | 78 |
20180101 | 论萨达姆的战争准备 | 88 |
20180102 | 母猪的产后护理 | 100 |
20180102 | 论萨达姆的战争准备 | 98 |
20180103 | 母猪的产后护理 | 59 |
20180103 | 论萨达姆的战争准备 | 61 |
20180104 | 母猪的产后护理 | 55 |
20180104 | 论萨达姆的战争准备 | 46 |
若是咱们想查找史珍香
的《母猪的产后护理》科目的考试成绩怎么办呢?咱们能够先经过学生基本信息表
查找到她的学号,而后再经过她的学号到学生成绩表
里找到该学号对应的《母猪的产后护理》科目的成绩。服务器
表格也简称为表。有一种类型的数据库管理系统就是经过表格来存放数据的,并且不一样的表能够经过某种关系联系起来(例子中成绩表经过学号和基本信息表联系起来),咱们把这种数据库管理系统也称为关系型数据库管理系统
,咱们要唠叨的MySQL
就是一种关系型数据库管理系统
。微信
这种所谓的关系型数据库管理系统
有好多,好比甲骨文的Oracle
,IBM的DB2
,微软的Access
和SQL Server
,开源的PostgreSQL
和MySQL
。。。咱们是来唠叨 MySQL
的,因此瞅瞅它有啥牛逼的地方:架构
免费学习
就是不要钱,有不少数据库管理系统是要花真金白银买的,不过MySQL
随便在网上下载就好喽~
开源
MySQL
的代码都是公开的,网上随便就能下载下来,方便咱们了解它的实现原理。又由于是开源的,因此一旦有bug就会被好多人发现,设计MySQL的大叔们就会当即把bug修复,因此是很是稳定的。
跨平台
MySQL
能够运行在各类主流的操做系统上,各类类Unix系统、Windows系统啥的~
很牛逼
它能够快速、安全、有效地处理大量数据,不牛逼就没人用啦~
以咱们平时使用的微信为例,它实际上是由两部分组成的,一部分是客户端,一部分是服务器。客户端可能有不少种形式,好比手机APP,电脑软件或者是网页版微信,每一个客户端都有一个惟一的用户名,就是你的微信号,另外一方面,腾讯公司在他们的机房里运行着一个服务器软件,咱们平时操做微信其实都是用客户端来和这个服务器来打交道。好比狗哥用微信给猫爷发了一条消息的过程实际上是这样的:
MySQL
的使用过程跟这个是同样的,它有一个服务器程序直接和咱们存储的数据打交道,而后能够有好多客户端程序链接到这个服务器程序,发送增删改查的请求,而后服务器就响应这些请求,从而操做它维护的数据。和微信同样,MySQL
的每一个客户端都须要提供用户名密码才能登陆,登陆以后才能给服务器发请求来操做某些数据。另外,客户端程序和服务器程序能够安装到同一台机器上,也能够安装到不一样的机器上。不过从咱们学习的角度来讲,也不必弄两个电脑,一个当服务器一个当客户端了。因此咱们通常只须要在本身的电脑上把服务器程序和客户端程序都安装上,先开启服务器程序,再打开客户端程序和服务器程序进行交互就行了~
小贴士: `MySQL`的大部分安装包都包含了服务器程序和客户端程序(在Linux下使用RPM包时会有单独的服务器RPM包和客户端RPM包,须要分别安装),可是安装包中自带的客户端程序是在黑框框里使用的,若是你习惯了图形用户界面,能够本身去下载个 `MySQL Workbench` 或者 `Navicat`,这两个客户端软件可让你在图形界面上点点点~ 顺便说一句,做为程序员使用图形界面是否是有点儿low啊~ 也不是单纯为了装逼,使用黑框框的话不少时候会比图形界面更快,更简单~ 因此该用哪一个客户端软件你内心应该有点儿*数吧!
在安装过程当中必定要记住安装路径和用户名密码啊!
个人机器上MySQL
的安装路径是:/usr/local/Cellar/mysql/5.7.21/
。
用户名是:root
。
密码是:123456
。
略~
略~
略~
一般在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`中,咱们下边的操做都默认你们有了这些可执行文件的快捷方式,就再也不使用绝对路径或者切换目录的方式来执行这些文件了。
复制代码
咱们重点关注一下mysql.server
这个可执行文件,这个文件能够帮助咱们启动和关闭服务器。这个可执行文件后边能够携带参数,启动和关闭的参数以下:
启动服务器携带的参数:
mysql.server start
复制代码
关闭服务器携带的参数:
mysql.server stop
复制代码
咱们开启一下服务器,在黑框框里输入mysql.server start
,看到输出结果:
Starting MySQL
. SUCCESS!
复制代码
这就说明启动成功了~
通常把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进阶的一些核心概念,好比记录、索引、页面、表空间、查询优化、事务和锁等,总共的字数大约是三四十万字,配有上百幅原创插图。主要是想下降普通程序员学习MySQL进阶的难度,让学习曲线更平滑一点~