数据库(MySQL)基础
一、登录数据库
在linux系统中登录数据库的指令
mysql -h 127.48.0.236 -P 3306 -u root -p
- -h:填写IP地址,指明要连接的主机。如果不加该字段表示本地主机
- -P:填写端口号,指明进程。 如果不加该字段会使用默认的端口号。
- -u:指明要以什么用户的身份登录。
- -p:表示密码,可在后面直接加密码,也可以不加,回车后会弹出密码的填写。
quit指令退出数据库。
免密码配置
vim打开配置文件/etc/my.cnf,加入以下选项:
skip-grant-tables
然后重启服务器才能生效,即:
systemctl restart mysqld
虽然做了免密码配置,但在登录时依旧会弹出密码填写框,我们直接回车就行。
二、数据库的理解
数据库服务分为客户端和服务端,分别是mysql和mysqld。
- mysql本质:基于CS(client,server)模式的网络服务,是一种提供数据存取功能的网络服务。
数据库一般指在磁盘或者内存中特定结构组织的数据库方案。文件也是用来存储数据,为什么不用文件呢?
主要在于这几点:
- 文件存在安全性问题。
- 文件不利于数据查询和管理。
- 文件不利于存储海量数据。
- 文件在程序中控制不方便。
而数据库提供一些管理方案,对数据处理时我们直接调用对应的接口就行,不用程序员逐一去处理。
三、MySQL的表现形式
1.登录数据库
2.展示库
show databases;
3.建库
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。