目录
一、什么是数据库
第一层理解
第二层理解
第三层理解
二、Linux下的数据库
三、基本认识
登录数据库时,
mysql -u root -h 127.0.0.1 -P 3306 -p
-h指定MySql服务器所在主机,若在本地则为回环地址。-P表示目标主机上MySql服务端口号
一般简单写成下面这个样子。
mysql -uroot -p
退出MySql时,输入quit即可。
一、什么是数据库
第一层理解
- 不难知道,由Linux对可执行程序的归类(Linux的指令都在bin和sbin目录下),mysql、mysqld这两条命令都是可执行程序。
- mysqld,带d说明mysqld是一种网络服务。
- 于是,mysql是客户端,mysqld是服务端。
- 总结,数据库就是一种基于C(mysql)-S(mysqld)的一种网络服务。
- 一般服务端的MySql端口号为3306。
第二层理解
理解平时口述的三个概念,它们最常用的一层意义。
- 一般提到mysql,指的是一套网络程序,用来帮助使用者存储数据。
- 数据库一般指,存储在磁盘上的一套管理数据的方案。
- 数据库服务,就是指mysqld。
第三层理解
从文件的角度理解。
文件存储数据的缺点:
文件的安全性问题文件不利于数据查询和管理(增删查改)文件不利于存储海量数据文件在程序中控制不方便
于是,发明了数据库管理:
本质就是对文件的一套存储解决方案(方便增删查改)。因此,提到“数据库”,也可能是在说某个数据库文件。
当使用者增删查改的时候,基于客户端请求数据库(服务器)来完成,具体操作由数据库(数据库文件)完成后,返回给使用者,这个过程就叫数据库,是一套解决方案。
换句话说,是把存储数据的解决方案,由传统的普通文件存储,转换为可以帮助我们增删查改的数据库文件。
二、Linux下的数据库
登录成功后,输入show databases;
注意,MySql语句不同于命令行指令,要加分号。
而在Linux的 /var/lib/mysql目录下,
蓝色的打印信息表示是一个目录,于是,不难总结出一点,建立了一个数据库的本质,就是Linux下的一个目录。
- 建立一个数据库
create database school;
注意不要漏写分号。
- 建立一张学生表
建表之前,指定要在哪个数据库建表。
use school;
建立一张学生表,表中有学号、姓名、性别。
create table student(
id int,
name varchar(32),
gender varchar(2)
);
注意student后面是()而不是{},分号在最后加。
- 在表中插入数据
insert into student(id,name,gender)values(1,'张三','男');
- 查询表中数据
select * from stduent;
以上过程都由服务端的mysqld完成。
三、基本认识
- 主流数据库
- 服务器、数据库、表关系
- MySql三层架构
Connection Pool,链接池:一般做权限管理
词法分析、语法分析。
Storage Engines,存储引擎:MySql一般使用的是InnoDB,支持热插拔,具体的文件操作是由它来完成。
- SQL语句分类
SQL语句大致可以分为三类:
DDL(data definition language),数据定义语言,这种SQL语句用来维护存储数据的结构,比如建库、建表。代表的指令有create、drop、alter。
DML(data manipulation language),数据操作语言,这种SQL语句就是用来操作数据的,代表的指令有insert、delete、update。DML又有一个分支叫DQL,数据查询语言,比如select。
DCL(data control language),数据控制语言,主要用来赋权、减权、事物管理。代表指令有grant、revoke、commit。
- 存储引擎
存储引擎是位于最底层,和数据库文件直接交互的。
存储引擎是数据库管理系统如何存储数据、如何建立索引和如何更新数据、查询数据等技术的具体实现方法。
show engines;