数据库(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。
相关推荐
marsjin11 分钟前
如何使用Python从MySQL数据库导出表结构到Word文档
数据库·python·mysql
西阳未落1 小时前
Linux(9)——进程(控制篇——下)
linux·运维·服务器
百度智能云技术站1 小时前
Redis 数据恢复的月光宝盒,闪回到任意指定时间
数据库·redis
~央千澈~1 小时前
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
java·前端·数据库
快乐肚皮2 小时前
深入解析MySQL日志模块 - Undo Log(回滚日志)与MVCC机制
java·mysql
水番丘山2 小时前
Linux防火墙firewalld——基础命令与实战
linux
dessler2 小时前
Web服务器-一代经典LNMP
linux·运维·nginx
茶本无香2 小时前
数据库查询性能优化:深入理解与应用物化视图
数据库·性能优化·查询·物化视图
huangyuchi.3 小时前
【Linux】vim编辑器
linux·运维·笔记·编辑器·vim
2401_858286113 小时前
OS9.【Linux】基本权限(下)
linux·运维·服务器