数据库一般是指:在磁盘或者内存中存储的特定结构组织的数据。
其本质可以理解为:对数据内容存储的一套解决方案,对数据库提供要求或字段,它会给用户返回结果
MySQL是一套给用户提供数据存取的服务,是一种网络程序
那么在系统中会存在mysql和mysqld,如何区分两者:
mysql 是数据库服务的客户端
mysqld 是数据库服务的服务器端
而MySQL的本质是基于C(mysql)S(mysqld)模式的一种网络服务
既然存储数据有文件了,那么为什么还需要有数据库呢?
首先对于文件而言:在用户角度文件虽然可以提供数据的存储能力,但是并没有提供很好的数据内容管理能力,并不方便用户的操作。其次文件的安全性并不能保证,更不利于存储海量的数据
为了能够更加利于管理数据,因此就有了数据库的诞生。
数据库本质上也是文件,只不过不是由用户直接操作,而是由数据库服务的服务端去操作的
mysql -h 127.0.0.1 -P 3306 -u root -p
其中,-h后面表示连接的主机,-P后面表示连接的端口,-u后面表示连接的用户名,-p后面表示当前用户的密码
-h不指明则默认连接本机
-P不指明默认为3306端口
show databases;
mysql数据的存放路径在 my.cnf 配置文件里的:datadir
create database XXX;
所谓的创建数据库本质上就是:在Linux下创建一个新的目录
use XXX;
进入到某个数据库中
create table XXX(
//表里的属性(属性名 类型),
//属性(属性名 类型)
);
创建成功之后,在当前的数据库目录中就会生成两个以表名为名称的文件
所谓的在数据库内建立表,本质就是在Linux下创建对应的文件
insert into XXX(XXX, XXX, XXX) values(XXX, XXX, XXX)
select * from XXX;
所谓安装数据库服务器,本质上就是在机器上安装一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般会对每一个应用去创建一个数据库。
而表是在数据库中保存程序实体数据的。
在mysql中是以行列式的逻辑存储结构呈现的,每一列为一个属性,每一行为一个数据对象。插入的操作对应的就是插入一个数据对象,对象的每个属性对应了表中的每一个属性
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
DDL(data definition language):数据定义语言,用来维护存储数据的结构,例如:create,drop
DML(data manipulation language):数据操纵语言,用来对数据进行操作,例如:insert,delete
DQL(data query language):数据查询语言,用来查询数据,例如:select
DCL(data control language):数据控制语言,负责权限管理和事务,例如:grant,revoke
存储引擎:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法
MySQL的核心就是插件式存储引擎,并且指出多种存储引擎。
对于MySQL实际上真正对数据进行操作就是通过存储引擎,不同的存储引擎会有不同或相同的功能。最常用的就是 InnoDB 和 MyISAM 这两种
查看存储引擎的语句为:
show engines \G