数据库基础
root@iZ5waahoxw3q2bZ ~]# which mysql#MySQL的客户端[root@iZ5waahoxw3q2bZ ~]# which mysqld#MySQL的服务端1.mysql它是数据库服务的客户端2.mysqld它是数据库服务的服务器端3.mysql本质:基于C(mysql) S(mysqld)模式的一种网络服务mysql是一套给我提供数据存取的服务的网络程序。
目录
2.在数据库内建立表,本质就是在Linux下创建对应的文件即可!
3.数据库本质其实也是文件!只不过这些文件并不是由程序员直接将操作,而是由数据库服务帮我们进行操作
1.登陆选项的认识
[root@iZ5waahoxw3q2bZ ~]# mysql -h 127.0.0.1 -P 3306 -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.44 MySQL Community Server (GPL)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> quit
Bye
mysql -h 127.0.0.1 -P 3306 -u root -p
mysql:这是 MySQL 的客户端命令,用来连接数据库服务。
-h 127.0.0.1:指定连接的主机 IP。127.0.0.1代表本机(即你现在的阿里云服务器自己)。这明确告诉客户端:“不要去连远程的,就找自己的 MySQL”。
-P 3306:指定端口。3306是 MySQL 的默认端口。
-u root:指定用户名。就是用管理员账号root登录。
-p:提示输入密码。你回车后会看到Enter password:。
[root@iZ5waahoxw3q2bZ ~]# mysql -P 3306 -u root -p
默认连接本地搭建的MySQL服务
[root@iZ5waahoxw3q2bZ ~]# mysql -u root -p
去掉-P会默认是3306的端口
1.目前是免密码登陆的,后面必须设置密码
2.密码输入的时候,是不回显的
2.什么是数据库
[root@iZ5waahoxw3q2bZ ~]# ps ajx | grep mysqld
1 704 703 703 ? -1 Sl 27 0:33 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
25325 3014 3013 25325 pts/1 3013 S+ 0 0:00 grep --color=auto mysqld[root@iZ5waahoxw3q2bZ ~]# which mysql #MySQL的客户端
/usr/bin/mysql
[root@iZ5waahoxw3q2bZ ~]# which mysqld #MySQL的服务端
/usr/sbin/mysqld
1.mysql它是数据库服务的客户端
2.mysqld它是数据库服务的服务器端
3.mysql本质:基于C(mysql) S(mysqld)模式的一种网络服务
[root@iZ5waahoxw3q2bZ ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1149/sshd
tcp6 0 0 :::3306 :::* LISTEN 704/mysqld
mysql是一套给我提供数据存取的服务的网络程序
数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据 -- 将来在磁盘上存储的一套数据库文件方案
数据库服务 -- mysqld
内容
一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据管理能力(用户角度)
数据库本质:对数据内容存储的一套解决方案,你给我字段或者要求,我(数据库)直接给你结果就行
存储解决方案!

存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
数据库存储介质:
- 磁盘
- 内存
为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。
3.见一见数据库
样例:
使用mysql建立一个数据库建立一张表结构,插入一些数据---对比一下mysql在Linux中是如何表现的
启动
mysql -uroot -p

数据库


1.建立数据库,本质就是Linux下的一个目录
建立数据库

通过mysql客户端向mysqld服务端下达了一个创建数据库的请求
查看数据库,会发现多了一个helloworld
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| helloworld |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
同样这边也会多一个helloworld的目录

2.在数据库内建立表,本质就是在Linux下创建对应的文件即可!
选择数据库
mysql> use helloworld;
Database changed
创建表
mysql> create table student(
-> name varchar(32),
-> age int,
-> gender varchar(2)
-> );
Query OK, 0 rows affected (0.01 sec)
varchar 是 Variable Character(可变长度字符)的缩写。
简单来说,它就是用来存文字、字符串的一种数据类型。
[root@iZ5waahoxw3q2bZ mysql]# cd helloworld
[root@iZ5waahoxw3q2bZ helloworld]# pwd
/var/lib/mysql/helloworld
[root@iZ5waahoxw3q2bZ helloworld]# ls
db.opt student.frm student.ibd
多了两个文件student.frm student.ibd
插入数据
insert into student (name,age,gender) values ('张三',20,'男');

select * from student; 查询表中数据
这些工作是谁做的?mysqld服务帮我们做的
3.数据库本质其实也是文件!只不过这些文件并不是由程序员直接将操作,而是由数据库服务帮我们进行操作
4.主流数据库
SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电 商,SNS,论坛。对简单的SQL处理效果好。
PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研 究使用,可以免费使用,修改和分发。
SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库 中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的 低,在嵌入式设备中,可能只需要几百K的内存就够了。
H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
服务器管理
执行 win+r 输入 services.msc
打开服务管理器 通过下图左侧停止,暂停,重启动按钮进行服务管理

5.服务器数据库表之间的关系
所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多 个数据库,一般开发人员会针对每一个应用创建一个数据库。
为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:


清屏
mysql> system clear
6.MySQL架构
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、 Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。

Connection Pool解决安全和链接管理
第二层做词法语法分析以及sql语句优化
Pluggable Storage Engines 来具体完成数据库存储方案
最底下依赖的就是对应的文件系统
7.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
8.存储引擎
存储引擎
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术 的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。
查看存储引擎
show engines;
show engines \G


存储引擎对比
常用的是InnoDB和MyISAM
感谢你的观看,期待我们下次再见!
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)