文章目录
- 数据库基础
- 1.什么是数据库
- 2.主流数据库
- 3.MySQL数据库是什么?
- LInux下数据库的本质
- 一、MySQL的基本使用
- 连接服务器
- 服务器、数据库、表关系
- 使用demo
- 二、MySQL架构
- SQL分类
- 存储引擎
数据库基础
1.什么是数据库
在LInux系统下,文件就能够存储数据,为什么还需要数据库来专门存放数据呢?
- 一般的文件确实提供了数据的存储功能,但在用户角度来看,文件并没有提供非常好的数据管理能力。如进行数据查找时需要遍历整个文件,效率低下,且存在安全问题。
- 数据库能更有效的管理数据----提供了一套对数据内容存储管理的解决方案。
2.主流数据库
- SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目
- Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
- MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
- SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
- H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
3.MySQL数据库是什么?
- mysql是一套给我提供数据存取的服务的网络程序
- 数据库一般指在磁盘或者内存中存储的特定结构组织的数据
- 数据库服务端–mysqld
- 数据库客户端–mysql
LInux下数据库的本质
- 建立数据库,本质就是在Linux下创建一个目录
- 在数据库内建表,本质就是在Linux对应数据库目录下创建一个对应的二进制文件
- 上述操作都是mysqld帮我们做的
一、MySQL的基本使用
连接服务器
输入:
mysql-h127.0.0.1-P3306-u root-p输出:
Enter password:****Welcome to the MySQL monitor.Commands end with;or\g.Your MySQL connection id is12Server version:8.4.7MySQL Community Server-GPLCopyright(c)2000,2025,Oracleand/orits affiliates.Oracle is a registered trademark of Oracle Corporationand/orits affiliates.Other names may be trademarks of their respective owners.Type'help;'or'\h'forhelp.Type'\c'to clear the current input statement.注意:
如果没有写-h 127.0.0.1默认是连接本地。
如果没有写-P 3306默认是连接3306端口号(这具体取决于你的配置文件)
服务器、数据库、表关系
- 安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
- 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
使用demo
- 创建数据库
mysql>create database db1 Query OK,1rowaffected(0.00sec)在对应的mysql数据目录下,我们看到确实创建了一个db1目录
- 查看所有数据库
mysql>show databases;+--------------------+|Database|+--------------------+|db1||helloworld||information_schema||mysql||performance_schema||sys|+--------------------+6rows inset(0.00sec)- 使用数据库
mysql>use db1;Database changed- 创建数据库表
mysql>create tablestudent(namevarchar(32),ageint,gendervarchar(2));Query OK,0rowsaffected(0.01sec)在db1目录下确实创建了对应的文件
- 表中插入数据
mysql>insert intostudent(name,age,gender)values('张三',21,'男');Query OK,1rowaffected(0.00sec)mysql>insert intostudent(name,age,gender)values('李四',21,'男');Query OK,1rowaffected(0.00sec)mysql>insert intostudent(name,age,gender)values('王五',88,'男');Query OK,1rowaffected(0.00sec)- 查询表中的数据
mysql>select*from student;+--------+------+--------+|name|age|gender|+--------+------+--------+|张三|21|男||李四|21|男||王五|88|男|+--------+------+--------+3rows inset(0.00sec)二、MySQL架构
- MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
-
SQL分类
- DDL【data definition language】数据定义语言,用来维护存储数据的结构代表指令:create, drop, alter
- DML【data manipulation language】数据操纵语言,用来对数据进行操作代表指令:insert,delete,update
- DML中又单独分了一个DQL,数据查询语言,代表指令:select
- DCL【Data Control Language】数据控制语言,主要负责权限管理和事务代表指令:grant,revoke,commit
存储引擎
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。是真正直接与OS打交道的地方
MySQL的核心就是插件式存储引擎,支持多种存储引擎。
查看存储引擎
mysql>show engines;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+|Engine|Support|Comment|Transactions|XA|Savepoints|+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+|ndbcluster|NO|Clustered,fault-tolerant tables|NULL|NULL|NULL||MEMORY|YES|Hash based,stored in memory,usefulfortemporary tables|NO|NO|NO||InnoDB|DEFAULT|Supports transactions,row-level locking,andforeign keys|YES|YES|YES||PERFORMANCE_SCHEMA|YES|Performance Schema|NO|NO|NO||MyISAM|YES|MyISAM storage engine|NO|NO|NO||FEDERATED|NO|Federated MySQL storage engine|NULL|NULL|NULL||ndbinfo|NO|MySQL Cluster system information storage engine|NULL|NULL|NULL||MRG_MYISAM|YES|Collection of identical MyISAM tables|NO|NO|NO||BLACKHOLE|YES|/dev/null storageengine(anything you write to it disappears)|NO|NO|NO||CSV|YES|CSV storage engine|NO|NO|NO||ARCHIVE|YES|Archive storage engine|NO|NO|NO|+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+11rows inset(0.00sec)- 存储引擎对比