ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

01-MySQL数据库基础

01-MySQL数据库基础 目录为什么需要数据库主流数据库一览安装、连接与管理 MySQL 服务器世界观服务器、数据库、表的三层结构实操建库→建表→插数据→查询的完整闭环数据的逻辑存储行与列MySQL 架构一条 SQL 的旅行路线SQL 分类DDL / DML / DQL / DCL存储引擎MySQL 的 “可插拔硬盘大脑”复习专区速查表、要点串讲与自测题1.为什么需要数据库 ⭐1.1 用文件存数据不行吗很多人第一反应是存数据写个 txt / csv 文件不就行了课件给出的回答是文件保存数据有四个缺点。很多人第一反应是存数据写个 txt / csv 文件不就行了课件给出的回答是文件保存数据有四个缺点。为了解决这些问题专家们设计出了数据库——它能更有效地管理数据。特别强调一句数据库的水平是衡量一个程序员水平的重要指标。数据库把数据存放在什么介质上两个答案磁盘数据持久化存放的地方断电不丢这是数据库的仓库内存用于缓存、索引等加速手段这是数据库的工作台。1.2 数据库 vs 数据库管理系统先把名词掰清楚日常我们说MySQL 是数据库严格说 MySQL 是数据库管理系统DBMS一个管理数据的程序而数据库是它管理起来的那一堆有组织的数据。“所谓安装数据库服务器只是在机器上安装了一个数据库管理系统程序”。2. 主流数据库一览 我的见解选型记忆口诀——大厂互联网业务选 MySQL传统大型复杂业务选 Oracle微软技术栈选 SQL Server手机里/设备里选 SQLite3. 安装、连接与管理 MySQL 服务器 3.1 安装这里下载大家可以参照网上当作锻炼大家的动手能力CentOS 6.5 下编译安装 MySQL 5.6.14CentOS 7 通过 yum 安装 MariaDBMySQL 的开源分支Windows 下安装 MySQL 5.7课件给了专门链接也是初学者主路线。beginner 建议直接走 Windows 安装包路线一路下一步记住自己设置的 root 密码和端口号默认 3306后面连接要用。3.2 连接服务器 ⭐课件给出的连接命令mysql-h127.0.0.1-P3306-uroot-p链接成功后显示的内容怎么读这段输出Commands end with ; or \g每条 SQL 语句要以分号 ; 结尾才执行——这是后面所有实操的前提Server version: 5.7.21-log告诉你连上的服务器版本最后的 mysql 是命令提示符看到它说明你已经进了数据库的大门之后输入的都是 SQL。 动手练连接成功后先敲两条命令感受环境show databases;-- 列出服务器上所有数据库selectversion();-- 查看版本号3.3 服务器管理Windows 服务视角大家也可以在windows上部署mysql课件操作路径Win R → 输入 services.msc → 回车打开服务管理器在列表里找到 MySQL 服务用工具栏的停止 / 暂停 / 重启按钮管理它。4. 世界观服务器、数据库、表的三层结构 ⭐1.安装数据库服务器 机器上装了一个数据库管理系统程序2.这个管理程序可以管理多个数据库一般开发人员会针对每一个应用创建一个数据库3.为保存应用中实体的数据会在数据库中创建多个表以保存程序中实体的数据。它们的关系5. 实操建库→建表→插数据→查询的完整闭环 ⭐第 1 步创建数据库create database helloworld;语法结构create database 库名;说明在服务器上新开一个房间名字叫helloworld。结尾的分号不能少。验证拓展show databases;列表里应出现helloworld。 易错点库名重复会报database exists可先drop database helloworld;删掉再建危险命令练完记得重建。第2 步使用数据库use helloworld;说明告诉服务器我接下来的操作都默认针对这个库。不 use 就建表会报No database selected。验证拓展select database();返回当前所在库名。 类比use就是走进房间并关上门之后你说表服务器就知道是这个房间里的表。第 3 步创建表create table student(idint, name varchar(32), gender varchar(2));语法结构create table 表名( 列名 类型, 列名 类型, ... );——最后一列后面没有逗号括号外以分号结束。验证拓展show tables;看到studentdesc student;查看表结构列名、类型。 易错点列之间用逗号分隔、语句结尾用分号把varchar(32)的括号写成中文括号会直接语法报错。第 4 步插入数据insert into student(id, name, gender)values(1,张三,男);insert into student(id, name, gender)values(2,李四,女);insert into student(id, name, gender)values(3,王五,男);语法结构insert into 表名 (列1, 列2, 列3) values (值1, 值2, 值3);——括号里的列和 values 里的值一一对应顺序、个数、类型都要匹配。 易错点字符串必须用单引号张三写成双引号或不加引号都会报错数字不加引号。 动手变体把三条 insert 里的名字换成你自己和你同学的名字再执行一遍体会列值对应。第 5 步查询数据select* from student;语法结构select 列清单 from 表名;其中*是通配符表示所有列。预期输出注意是 6 行因为演示时把三条 insert执行了两遍。这恰好暴露一个重要事实——数据库默认不会帮你去重插两次就有两份一模一样的数据。6 rows in set (0.00 sec)的意思是结果集 6 行耗时 0 秒。 由此引出一个后续课题如何防止重复答案是给表加主键 / 唯一约束比如把 id 设为主键这里先埋个伏笔。 动手变体拓展只查部分列select name, gender from student;体会列清单的作用。6. 数据的逻辑存储行与列 ⭐课件 1.3.6 用一张select * from student;的结果截图标注了两个概念列Column竖着看的一竖条如gender那一列——代表一个字段/属性行Row横着看的一条如id3 王五 男那一横条——代表一条记录。7. MySQL 架构一条 SQL 的旅行路线课件指出MySQL 是可移植的数据库几乎能在所有操作系统上运行Unix/Linux、Windows、Mac、Solaris各平台底层实现不同但物理体系结构保持一致。架构图从上到下分为这些部分如何记呢把这张图读成一条 SQL 的旅行路线就好记了旁路的Services utilities备份恢复、安全、复制、集群、分区、Workbench是运维侧工具基础阶段知道存在即可。8. SQL 分类DDL / DML / DQL / DCL ⭐.一般把SQL语句分为四类如何记忆DDL 动结构建表、删表、改表结构——对应第 5 章的create database/create tableDML 动内容增删改数据——对应insertDQL 只看不改select因为查询太重要太常用所以单独拎成一类DCL 管人和秩序谁能干什么grant 授权 / revoke 收权、事务提交commit。9. 存储引擎MySQL 的可插拔硬盘大脑 ⭐9.1 什么是存储引擎课件定义存储引擎是数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。MySQL 的核心就是插件式存储引擎支持多种存储引擎。翻译成人话SQL 是点菜的语言存储引擎是后厨的做法。同一句select * from student;交给不同引擎数据在磁盘上的组织方式、加锁方式、崩溃后的恢复方式都不一样。9.2 查看存储引擎 show engines;这里了解即可三个核心概念的场景化讲解① 事务Transactions——“要么全做要么全不做”。例子张三给李四转账 100 元数据库要做两件事张三账户 -100、李四账户 100。如果扣了钱之后服务器断电加钱没执行钱就蒸发了。支持事务的引擎InnoDB能把这两步捆成一个事务中途失败就rollback 回滚当作没发生过成功后commit 提交永久生效。不支持事务的引擎MyISAM做不到这种保证。② 锁粒度表锁 vs 行锁——“关门 vs 只按住一个座位”。例子演唱会开票1 万人同时抢座。表锁MyISAM相当于一个人下单时整张座位表锁住其余 9999 人排队干等行锁InnoDB只锁被操作的那一行座位记录抢 A 区的人和抢 B 区的人互不影响并发能力天差地别。这就是课件说 MySQL默认 InnoDB并发性好的底层原因之一。③ Memory 引擎——数据放在内存里Hash 组织速度极快但重启/断电数据即丢失所以课件注释说它 “useful for temporary tables”适合临时表不能当主存储。其余引擎一句话扫盲Archive 擅长压缩归档历史数据存储成本 Very Low、批量插入 Very HighNDB 用于集群场景Blackhole 是黑洞写进去的数据直接消失用于特殊复制拓扑CSV 把表存成 csv 文件。复习专区速查表、要点串讲与自测题10.1 命令速查表10.2 要点串讲文件存数据有四大缺点不安全、难查询、难海量、难程序控制 → 所以需要数据库数据落磁盘索引进内存。六大主流库SQL Server微软/.Net、Oracle大型复杂、MySQL流行/并发好/电商 SNS 论坛、PostgreSQL伯克利/免费自由、SQLite嵌入式几百 K、H2Java 类库。连接命令四参数-h -P -u -p默认本地 3306SQL 以分号结尾MySQL 是后台服务关窗口≠关服务。三层结构服务器 → 数据库一应用一库→ 表一实体一表。最小闭环五步create database → use → create table → insert → select。行 记录、列 字段查改删动行定义结构动列。架构路线连接器 → 连接池 → SQL 接口 → 解析器 → 优化器 → 存储引擎 → 文件/日志引擎可插拔。SQL 四类DDL(create/drop/alter)、DML(insert/delete/update)、DQL(select)、DCL(grant/revoke/commit)。存储引擎 存储/索引/更新查询数据的实现方法show engines;看清单InnoDB 是 DEFAULTInnoDB 胜在事务、行锁、外键、聚簇索引MyISAM 胜在批量插入与低存储成本。10.3 自测题先答后对文件保存数据的四个缺点是什么mysql -h 127.0.0.1 -P 3306 -u root -p中-P和-p分别是什么不写-h和-P时默认连哪里服务器、数据库、表三者是什么关系一般按什么原则建库、建表写出建库 hw → 使用它 → 建一张只有 id(int) 和 title(varchar(64)) 的表 → 插入一条数据 → 查全部的完整 SQL。课件 select 结果截图为什么是 6 行这说明数据库默认会去重吗行和列分别对应什么概念delete from student where id3;操作的是行还是列一条 SQL 从客户端到落盘经过哪些组件把create / insert / select / grant / update / drop / commit / delete归入 DDL、DML、DQL、DCL。什么是存储引擎用哪条命令查看默认引擎是哪个InnoDB 相对 MyISAM 的四个核心优势转账场景为什么必须用支持事务的引擎参考答案安全性问题不利于查询和管理不利于存储海量数据程序中控制不方便。-P端口大写、-p密码提示小写默认连接本地、默认 3306 端口。一个服务器管理多个数据库一个数据库含多个表一般一个应用建一个库一个实体建一张表。create database hw; use hw; create table t(id int, title varchar(64)); insert into t (id, title) values (1, hello); select * from t;因为三条 insert 被执行了两遍说明数据库默认不去重需要主键/唯一约束保证后续内容。行 一条记录列 一个字段delete 按条件删除记录操作的是行。连接器 → 连接池认证→ SQL 接口 → 解析器 → 优化器 → 存储引擎 → 文件系统/日志。DDLcreate、dropDMLinsert、update、deleteDQLselectDCLgrant、commit。存储引擎是 DBMS 存储数据、建索引、更新查询数据等技术的实现方法show engines;默认 InnoDBSupport 列 DEFAULT。事务、行级锁、外键、聚簇索引另有 MVCC转账涉及扣款加款两步事务保证要么全部成功要么全部回滚避免中途故障导致资金丢失。
返回列表