第二站:数据库基础
1.连接服务器mysql-h127.0.0.1-P3306-u root-p[后面直接跟密码无空格但不推荐]-h:指明登录部署了mysql服务的主机默认连接本地服务器所搭建的mysql服务-P指明我们要访问的端口号默认自定义3306端口号-u:指明登录用户-p:指明需要输入密码2.mysql与mysqld2.1mysql的本质基于C(mysql)S(mysqld)模式的一种网络服务mysql它是数据库服务的客户端 mysqld它是数据库服务的服务器端2.2mysql是一套给我提供数据存取的服务的网络程序注意数据库一般指的是在磁盘或者内存中存储的特定结果组织的数据–将来在磁盘上存储的一套数据库方案数据库服务–mysqld2.3一般的文件确实可以提供数据的存储功能但是文件并没有提供非常好的数据内容管理能力用户角度数据库本质对数据内容存储的一套解决方案你给我字段或者要求我直接给你结果就行数据库的两层定义磁盘中结构化的数据下面整体的一套也叫数据库。狭义磁盘上存储的结构化数据文件数据表、索引等物理文件广义包含客户端、MySQL 服务程序、磁盘数据文件的整套完整系统日常口语里统称 “数据库”。认识数据库总结举例使用mysql创建一个数据库建立一张表结构插入一些数据–对比mysql在Linux中如何表现1.建立数据库本质就是Linux下的一个目录2.在数据库内建立表本质就是在Linux下创建对应的文件即可。步骤1和步骤2都是mysqld服务帮我们做的3.数据库本质就是文件只不过这些文件不是有程序员直接操作而是由数据库服务帮我们进行操作然后给我们返回结果查看mysql中数据库 show databases;在my.cnf中有datadir/var/lib/mysql,表示mysql服务所对应的数据存储的路径 cd/var/lib/mysql #查看MySQL中数据库目录如果进入对应数据库中会看到对应的文件内容创建数据库create database helloworld;显示数据库show databases;进入数据库use helloworld;创建表create tablestudent(namevarchar(32),ageint,gendervarchar(2));插入数据insert into student(name,age,gender)values(张三,20,男);insert into student(name,age,gender)values(梅梅,18,女);常见主流数据库SQL Sever 微软的产品.Net程序员的最爱中大型项目。Oracle 甲骨文产品适合大型项目复杂的业务逻辑并发一般来说不如MySQL。要付费。【银行业务等】MySQL世界上最受欢迎的数据库属于甲骨文并发性好不适合做复杂的业务。主要用在电 商SNS【社交网络如QQ朋友圈等】论坛。对简单的SQL处理效果好。开源的。 【主流】PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库不管是私用商用还是学术研 究使用可以免费使用修改和分发。SQLite 是一款轻型的数据库是遵守ACID的关系型数据库管理系统它包含在一个相对小的C库 中。它的设计目标是嵌入式的而且目前已经在很多嵌入式产品中使用了它它占用资源非常的 低在嵌入式设备中可能只需要几百K的内存就够了。H2 是一个用Java开发的嵌入式数据库它本身只是一个类库可以直接嵌入到应用项目中。服务器数据库和表之间的关系1.所谓安装数据库服务器就是在机器上安装了一个数据库管理系统程序这个管理程序可以管理多个数据库一般开发人员会针对每一个应用创建一个数据库2.为了保存应用中实体的数据一般会在数据库中创建多个表以保存程序中实体的数据数据库服务器数据库和表的关系如下图其中表是普通文件是以二进制方式存储的。MySQL架构第1层 — 客户端连接器用于安全管理和链接管理本质就是 协议翻译层你写 SELECT * FROM student它负责把你的请求打包成 MySQL 通信协议规定的二进制格式发给 Server第2层 — MySQL Server 服务层(类似编译器进行语法分析及SQL语句优化第3层 —可插拔存储引擎被 Server 层调用负责实际的数据增删改查第4层 — 文件系统与日志数据持久化到磁盘SQL分类DDL【data definition language】数据定义语言用来维护存储数据的结构 代表指令: create, drop, alterDML【data manipulation language】数据操纵语言用来对数据进行操作 代表指令 insertdeleteupdate 。DML中又单独分了一个DQL数据查询语言代表指令 selectDCL【Data Control Language】数据控制语言主要负责权限管理和事务 代表指令 grantrevokecommit存储引擎存储引擎定义数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术 的实现方法。查看存储引擎#横着看 show engines;#竖着看每一行 show engines \G;小结数据库是什么如何理解mysql和mysqld数据库在 Linux 下就是一个目录表就是目录下的文件mysqld 是服务进程mysql 是客户端工具【mysql 客户端通过 TCP/IP 或 Socket 连接到 mysqld 服务端 → 服务端直接操作磁盘上的数据文件 → 并将结果返回给客户端。】mysqlmysqld数据库和表之间的逻辑关系mysql客户端发送操作命令给mysqld服务端服务端解析优化后调用存储引擎操作数据文件也就是表中的内容最后将得到的结果返回给客户端。此时一个 mysqld 可以有多个库一个库可以有多个表一个表有多行数据。mysql整体结构是怎样的第一层负责安全管理和链接管理第二层负责语法解析及SQL语句优化第三层匹配存储引擎进行数据存取访问数据库进行增删改查第四层数据持久化到磁盘文件整体架构连接器 → Server层(解析优化) → 存储引擎 → 文件系统层层解耦存储引擎可插拔