前面提到过,程序本质上是对数据的处理。内存中的数据断电会消失,一些数据肯定是需要存在硬盘中的,比如银行卡信息、聊天记录等等。那么数据应该怎么在硬盘中呢?单凭计算机中的文件系统是不合适的,文件系统只是适合日常使用,对于程序来说并不方便,因此需要对数据按照一定的格式存储起来,这便是数据库。
1. 概述
1.1 什么是数据库?
数据库,英文名字是DataBase,简称DB,是按照一定格式存储数据的文件的组合。顾名思义,数据库是存储数据的仓库,实际上就是一堆文件,具有特定格式的数据。
1.2 什么是数据库管理系统?
数据库管理系统,英文名字是DataBase Management System,简称DBMS。顾名思义,数据库管理系统是用来管理数据库的,即管理数据库中数据的,数据库管理系统可以对数据库中的数据进行增删改查。常见的数据库管理系统:MySQL、Oracle、MS Sqlserver、DB2、sybase等。所以,一般情况下说的数据库,其实说的是数据库管理系统,通过在这个管理系统提供的一些工具(SQL语句等)来对数据库进行操作。
1.3 什么是SQL?
SQL全称是Structured Query Language,即结构化查询语言, 是数据库管理系统提供的接口。程序员通过编写SQL语句,然后DBMS负责执行SQL语句,最终完成数据库中数据的增删改查等操作。
实际上SQL是一套标准,程序员主要学习的就是SQL语句,广义上的SQL是通用的,只不过不同的数据库管理系统针对自己的特点对一些SQL进行了微小的改动。一般情况下,同一条SQL语句既可以在MySQL中使用,也可以在Oracle、DB2中使用。
1.4 DB、DBMS以及SQL的关系
DBMS —执行—>SQL语句—操作—>DB
2. 安装MySQL
数据库管理系统有很多类,本部分先介绍最简单的关系型数据库管理系统MySQL。安装过程以及启动MySQL可参考网上教程,这里省略。
3. 登录数据库
MySQL是客户端/服务器架构,客户端用于向服务器发送指令,而服务器则用于接收指令对数据库进行操作。即用户通过客户端访问服务器执行相关SQL操作。
所以要想执行数据库操作,必须先启动数据库服务器。这里的客户端指的是可以向数据库服务器发送指令的“工具”,可以是命令行窗口,也可以是JDBC等编程语言提供的接口,也可以是Navicat等工具,这里的服务器指的是mysql程序。为了方便学习,先从命令行窗口学习。
标题的登录数据库主要有两种情景,一种是登录客户端连接本地服务器,一种是登录客户端连接远程服务器。登录客户端就是连接数据库服务器(简称为连接数据库)。连接数据库的指令有以下几种方式:
mysql -u用户名 -p密码
连接本地数据库。注意,u和用户名,p和密码之间没有空格。
mysql -u用户名 -p
连接本地数据库。密码在输入本条指令后再输入。
mysql -h IP地址 -u 用户名 -p
连接指定IP地址的数据库(前提是该IP地址开放了对应的端口、且该IP地址的数据库允许该用户外网连接、有权限对数据库做修改)。
4. 数据库基本知识
数据库本质上是以特有的方式管理特定格式的文件。数据库管理系统首先是对数据库(database)进行管理,每个数据库中最基本的单元是表(table),每个表有多行(row),一行称为一条数据或记录,每条数据有多列(column),这些列组合在一起形成了这些数据,一列称为一个字段或属性。每个列都有数据类型,一旦该列的数据类型被确定之后,那么该字段中存放的值必须满足该数据类型。
总体来说,上述关键词的关系如下所示:
数据库管理系统——>数据库——>表——>行(数据、记录)——>列(字段、属性)。
5. SQL语句分类
数据库本质上是按照一定格式整理的文件/数据,可以改变数据的结构、数据的值、数据库的访问权限等等。根据对数据库的操作对象的不同,可以对SQL语句分为以下几类(注意,所有的数据库语句均以分号结尾,不区分大小写):
DDL:Data Definition Language
数据定义语言,这类SQL语句是对数据库的操作,比如创建数据库、创建数据表、删除某个字段等等,操作的对象是数据库以及表的结构,不是对数据操作,典型的关键字有**
create
、drop
、alter
**等。DML:Data Manipulation Language
数据操作语言:这类SQL语句是对数据的操作,比如新增一条数据、删除一条数据、更改数据的值等等,操作的对象是数据,不是数据的结构,典型的关键字有**
insert
、delete
、update
**。DQL:Data Query Language
数据查询语言:这类SQL语句并不是对数据或数据库进行修改,而是读取操作,即查询数据操作,典型的关键字有**
select
**。DCL:Data Control Language
数据控制语言:这类SQL语句是对数据库的权限进行控制,比如对数据库的访问权限、修改权限等进行限制,典型的关键字有**
grant
、revoke
**等。TCL:Transaction Control Language
事务控制语言:这类SQL语句主要涉及到的是数据的事务相关方面的语句,事务的具体含义见后续的文章,典型的关键字有**
commit
、rollback
**。
6. SQL脚本文件
数据库操作,除了在命令行中一条条的执行SQL语句之外,还可以将SQL语句打包成文件,然后在命令行执行该文件,即批量执行SQL语句。打包的文件称为SQL脚本文件。执行SQL脚本文件的命令是:source 脚本文件的绝对路径
,注意该命令是在mysql命令行内执行。简单例子如下图所示(一般情况下,在创建表的时候要):
7. 备注
为了更顺畅的学习MySQL,可以先本地安装数据库,然后学习DDL、DML和DQL等基础的数据库操作语句,至于远程访问、DCL、TCL等权限控制语句以及事务等可以放到最后学习。
参考B站《动力节点》。