数据库(MySQL)基础

一、登录数据库

在linux系统中登录数据库的指令

bash 复制代码
mysql -h 127.48.0.236 -P 3306 -u root -p
  • -h:填写IP地址,指明要连接的主机。如果不加该字段表示本地主机
  • -P:填写端口号,指明进程。 如果不加该字段会使用默认的端口号。
  • -u:指明要以什么用户的身份登录。
  • -p:表示密码,可在后面直接加密码,也可以不加,回车后会弹出密码的填写。

quit指令退出数据库。

免密码配置

vim打开配置文件/etc/my.cnf,加入以下选项:

bash 复制代码
skip-grant-tables

然后重启服务器才能生效,即:

bash 复制代码
systemctl restart mysqld

虽然做了免密码配置,但在登录时依旧会弹出密码填写框,我们直接回车就行。

二、数据库的理解

数据库服务分为客户端和服务端,分别是mysql和mysqld。

  • mysql本质:基于CS(client,server)模式的网络服务,是一种提供数据存取功能的网络服务。

数据库一般指在磁盘或者内存中特定结构组织的数据库方案。文件也是用来存储数据,为什么不用文件呢?

主要在于这几点:

  • 文件存在安全性问题。
  • 文件不利于数据查询和管理。
  • 文件不利于存储海量数据。
  • 文件在程序中控制不方便。

而数据库提供一些管理方案,对数据处理时我们直接调用对应的接口就行,不用程序员逐一去处理。

三、MySQL的表现形式

1.登录数据库

2.展示库

cpp 复制代码
show databases;

3.建库

bash 复制代码
create databases 库名; 

打开配置文件/etc/my.cnf可以查看数据被保存在那个目录下:

如:datadir=/var/lib/mysql选项。我们查找/var/lib/mysql目录下的文件:

可以发现多了一个test目录,所以可以知道

  • 库的本质:目录。

接下来我们创建表结构:

查看/var/lib/mysql/test的变化:

我们发现新增了一些文件。

  • 表的本质:对应库目录下的一个普通文件。

数据库本质就是文件,只不过由数据库服务帮我们管理。

主流的数据库

  • SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
  • Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
  • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
  • PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
  • SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
  • H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

服务器、数据库、表之间的关系:

四、MySQL架构

MySQL构架分为三层:

  • 第一层:连接池。主要做连接管理,权限管理,安全管理等。
  • 第二层:主要做client指令分析,即解析器、优化器、缓存等。
  • 第三层:存储引擎(类似操作系统的驱动程序),直接与操作系统打交道。使用show engines指令可查看,如下:

五、语句分类

  • DDL【data definition language】 数据定义语言,用来维护存储数据的结构,代表指令: create, drop, alter。
  • DML【data manipulation language】 数据操纵语言,用来对数据进行操作,代表指令: insert,delete,update。
  • DML中又单独分了一个DQL,数据查询语言,代表指令: select。
  • DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务,代表指令: grant,revoke,commit。
相关推荐
sunshineine7 分钟前
jupyter notebook运行简单程序
linux·windows·python
怀君18 分钟前
Flutter——数据库Drift开发详细教程(四)
数据库·flutter
万能程序员-传康Kk18 分钟前
中国邮政物流管理系统(Django+mysql)
python·mysql·django
O。o.尊都假都34 分钟前
UDP协议
linux·服务器·网络·网络协议·udp
pqq的迷弟44 分钟前
Redis的过期设置和策略
数据库·redis
JhonKI1 小时前
【MySQL】存储引擎 - CSV详解
android·数据库·mysql
天夏已微凉1 小时前
1.3.1 Linux音频框架alsa详细介绍
linux·音视频
惜.己1 小时前
linux中的常用命令(一)
linux·运维·服务器
闪电麦坤951 小时前
SQL:MySQL函数:字符串函数
数据库·mysql
不剪发的Tony老师1 小时前
Redis 8.0正式发布,再次开源为哪般?
数据库·redis