完整版本:https://coderwcb.blog.csdn.net/article/details/121047560

概念

数据库就是用来存储和管理数据的仓库。

通过之前的学习,我们能够使用以下两种方式进行数据存储:

  1. 使用变量、对象、数组、集合存储数据,数据保存在内存(RAM)中;
  2. 使用文件(File)存储数据,保存在硬盘上。

数据库的发展历程

  • 无数据库,使用磁盘文件存储数据;
  • 层次结构数据库:IBM公司IMS(Information Management System)定向有序的树状结构实现存储和访问;
  • 网状结构数据库:美国通用电气公司IDS(Integrated Data Store),以节点形式存储和访问;
  • 关系结构数据库:Oracle、DB2、MySQL、SQL Server,使用二维表格来存储数据;
  • 非关系型数据库ElasticSearch、MongoDB、Redis,多数使用哈希表,表中以键值(key-value)的方式实现特定的键和一个指针指向的特定数据。

常见的关系型数据库产品

  • Oracle(神谕):美国Oracle(甲骨文)公司,主要用在电信,金融领域,下载免费,服务需要收费;
  • DB2:IBM,主要用在金融领域;
  • SQL Server:微软,只能用在微软平台上;
  • MySQL:瑞典MySQL AB公司开发,属于 Oracle旗下产品,分为社区版和收费版,在国内互联网公司使用广泛。

对数据库的理解

我们通常所说的数据库其实是RDBMS(Relational Database Management System,关系型数据库管理系统),其包括两个部分:

  • 管理员,Manager;
  • 仓库,Database。

Database包括:N张表(Table);

Table包括两个部分:

  • 表结构:定义表的列名和列类型(理解成类);
  • 表记录:一行一行的记录(理解成对象)。

sql概述

SQL:Structured Query Language(结构化查询语言),其实就是定义了操作所有关系型数据库的规则,客户端使用SQL来操作数据库,可以应用到所有关系型数据库中。

SQL语言标准由ISO(国际标准化组织)发布,ISO定义了很多SQL标准(例如SQL99)对RDBMS进行统一的操作,相同的语句可以操作Oracle,MySQL。各个数据库厂商有自己的标准,类似于方言,MySQL中的limit。

SQL语法:

  • SQL语句可以在单行或多行书写,以分号结尾;
  • 可使用空格和缩进来增强语句的可读性;
  • MySQL不区分大小写,建议大写。
  • 数据库的注释:
    • 单行注释:-- 注释内容 #注释内容(mysql特有)
    • 多行注释:/* 注释内容 */

经验:通常执行对数据库的“增删改查”,简称C(Create)R(Read)U(Update)D(Delete)。

sql分类

SQL分类

  • DDL(Data Definition Language)数据定义语言

    • 创建、删除、修改库与表结构 => 用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
  • DML(Data Manipulation Language)数据操作语言
    • 用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
  • TPL(Transaction Process Language)事务处理语言:用于对事务进行处理;
  • DQL(Data Query Language)数据查询语言
    • 用来查询数据库中表的记录(数据)。关键字:select, where 等
  • DCL(Data Control Language)数据控制语言(了解)
    • 用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等

MySQL支持多种类型,大致可以分为三类:

  • 数值;
  • 字符串(字符)类型;
  • 日期时间。

DML(Data Manipulation Language)数据操作语言:增、删、改表记录。

# 一次插入多条数据
INSERT INTO 表名(列名1, 列名2, ...) VALUES(列值1, 列值2, ...), (列值1, 列值2, ...), (列值1, 列值2, ...);
# 删除id为1的学生
DELETE FROM stu WHERE id=1;
# WHERE条件是可选的, 如果没有条件, 就修改所有记录, 多数时候我们都加上WHERE条件
UPDATE 表名 SET 列名1=列值1, 列名2=列值2, ...[WHERE 条件]

关于条件:

  • 条件必须是一个boolean类型的值或表达式;
  • 运算符:=、!=、<>、>、<、>=、<=、between…and… 、in(…)、is null、not、or、and;
  • 和后面学习的删除数据及DQL中的条件通用。

约束

用于限制加入表的数据的类型和规范,约束是添加在列上的,用来约束列的

约束 说明 分类
PRIMARY KEY 主键约束 实体完整性约束
PRIMARY KEY AUTO_INCREMENT 主键、自动增长
UNIQUE 唯一约束
NOT NULL 非空约束 域完整性约束
default 默认值
FOREIGN KEY 外键约束 引用完整性约束
FOREIGN KEY ON UPDATE CASCADE 外键级联更新
FOREIGN KEY ON DELETE CASCADE 外键级联删除

DQL

关系结构数据库是以表格(Table)进行数据存储,表格由“行”和“列”组成。

经验:执行查询语句返回的结果集是一张虚拟表。

基本查询 接上图:

# 一般查询所有列时很少会有这种情况,但只查询一列(或几列)时,这种可能就大了
SELECT DISTINCT job FROM emp;

分组查询也可以设置条件,分组后的条件使用HAVING, 分组前的条件使用WHERE

# 查询工资大于15000的员工的工种,以及工种的平均工资
SELECT job, AVG(sal) FROM emp WHERE sal>15000 GROUP BY job;# 查询工资大于15000的员工的工种,以及工种的平均工资,只显示超过两人的工种
SELECT job, AVG(sal) FROM emp WHERE sal>15000 GROUP BY job HAVING COUNT(*)>=2;

TPL

什么是事务

一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

事务要处理的问题,把多个对数据库的操作绑定成一个事务,要么都成功,要么都失败

MySQL中处理事务涉及三个操作:

  • 开启事务
  • 提交事务
  • 回滚
# 1,开启事务
START TRANSACTION;# 多个SQL操作# 提交事务
COMMIT;
# 回滚
ROLLBACK;

在执行SQL语句之前,先执行START TRANSACTION,这就开启了一个事务(事务的起点),然后可以去执行多条SQL语句;

后要结束事务,COMMIT表示提交,即事务中的多条SQL语句所做出的影响会持久化到数据库中,或者ROLLBACK,表示回滚,即回滚到事务的起点,之前做的所有操作都被撤消了;

事务原理

数据库会为每一个客户端都维护一个空间独立的缓存区(回滚段),一个事务中所有的增删改语句的执行结果都会缓存在回滚段中,只有当事务中所有SQL语句均正常结束(COMMIT),才会将回滚段中的数据同步到数据库。否则无论因为哪种原因失败,整个事务将回滚(ROLLBACK)。

事务特性【记忆】

原子性(Atomicity):事务中所有操作作为一个整体,是不可再分割的原子单位。事务中所有操作要么全部执行成功,要么全部执行失败,如果操作失败则不能对数据库有任何影响。。

一致性(Consistency):事务执行后,数据库状态与其它业务规则保持一致。如转账业务,无论事务执行成功与否,参与转账的两个账号余额之和应该是不变的。

隔离性(Isolation):隔离性是指在并发操作中,不同事务之间应该隔离开来,使每个并发中的事务不会相互干扰。

持久性(Durability):一旦事务提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证通过某种机制恢复数据。

四大隔离级别

隔离级别 脏读 不可重复读 幻读
读未提交(READ UNCOMMITTED) 可能 可能 可能
读已提交(READ COMMITTED) 不可能 可能 可能
可重复读(REPEATABLE READ) 不可能 不可能 可能
串行化(SERIALIZABLE) 不可能 不可能 不可能

常用函数

mysql重点知识提取相关推荐

  1. JAVA-MySQL四{MySQL重点DQL查询数据}JAVA从基础开始 --7

    JAVA-MySQL四{MySQL重点DQL查询数据}JAVA从基础开始 --7 DQL查询语句 DQL - Data Query Language:数据查询语言 指定查询字段 1.全查 2.指定字段 ...

  2. linux和mysql重点哪个_重要的MySQL 文档存储知识点扫盲

    MySQL 文档存储 可以跳过底层数据结构创建.数据规范化和其它使用传统数据库时需要做的工作,直接存储数据. MySQL 可以提供 NoSQL JSON 文档存储Document Store 了,这样 ...

  3. 企业面试中关于MYSQL重点的28道面试题解答

    问题1:char.varchar的区别是什么? varchar是变长而char的长度是固定的.如果你的内容是固定大小的,你会得到更好的性能. 问题2: TRUNCATE和DELETE的区别是什么? D ...

  4. mysql text转varchar_关于企业面试中:“ Mysql重点 ”的28道面试题解析!

    问题1:char.varchar的区别是什么? varchar是变长而char的长度是固定的.如果你的内容是固定大小的,你会得到更好的性能. 问题2: TRUNCATE和DELETE的区别是什么? D ...

  5. 《逆袭进大厂》第十二弹之MySQL重点篇27问27答

    大家好,我是阿秀. 我来更新了,本期是 MySQL 第二期,至此 MySQL 部分就全部更新完毕了,下一弹就是 Redis 篇了. 上一篇文章中,小伙伴建议将资料按照更细粒度去整理一番,我觉得是非常不 ...

  6. 无法安装mysql server 2008_Windows Server2008安装mysql5.6出现程序无法正常启动(0xc000007b)...

    下载 到官网下载mysql5.6版本,msi安装包只有32位无64位 移动到指定文件夹下,解压文件 添加环境变量 变量名:MYSQL_HOME 变量值:C:\Program Files\mysql 即 ...

  7. window 自动安装MySQL数据库_windows安装MySQL数据库

    windows安装MySQL数据库 最终效果展示 具体步骤 打开MySQL官网,找到downloads 选择MySQL社区版 选择MySQL Community Server社区器 选择windows ...

  8. mysql dba高级教程_MySQL DBA高级视频教程 博瑞森一线DBA大神亲授

    下载服务器:五号服务器---VIP资料下载八区\数据库专区 游客,如果您要查看本帖隐藏内容请回复 MySQL DBA高级视频教程 这个是我参与培训的,分享给大家学习,真正一线DBA大神亲授 全程高清, ...

  9. 数据库性能测试-mysql篇

    一.数据库主从同步的工作原理 主从复制原理: 上边这张交互图就清楚的标记出了Master节点如何同步到Slave节点 1.首先Master上的修改.删除.新增操作都会被记录到一个叫做binlog的文件 ...

  10. python入门与提高实践 老男孩_跟老男孩学Linux运维:MySQL入门与提高实践

    第10章 MySQL数据库日志知识与企业应用实践 10.1 MySQL常用日志文件知识 10.2 错误日志的介绍与配置 10.3 普通查询日志的介绍与配置 10.4 二进制日志的介绍与配置 10.5  ...

最新文章

  1. Windows10快捷应用指令
  2. 面试造飞机这么能耐,对着调优实战更不能怂啊!
  3. python里感叹号什么意思_仪表盘上的感叹号是什么意思
  4. media player怎么不能拖进度图mp4_榜样力量丨科研路上有难题,学长教你怎么解
  5. Android inline hook手记
  6. 块级元素与行级元素(内联元素)
  7. JavaWeb结合七牛云存储搭建个人相册服务
  8. 7-3 括号匹配 (15 分)
  9. Windows Server 2012 存储 (三)SMB 的高可用性
  10. hihocoder第229周:最大连续字母个数
  11. 如何测一个纸杯_阿薇塔罗——4个吊坠,凭直觉选一个,测你这辈子婚姻状况如何?...
  12. python 定义变量x格式_Python变量
  13. C++ 标准库的双向链表
  14. 3DsMAX树木快速建模
  15. Layui-五星好评
  16. 工作流相关讲解 转载
  17. Getting Started with Boost
  18. 【Pyecharts50例】图表背景颜色设置
  19. 山西大学和太原理工大学哪个计算机专业好,山西大学,太原理工大学和中北大学,这三所大学的综合排名,和在山西人心中的地位排名?...
  20. polyRay v0.4

热门文章

  1. my first d3d application 哈哈哈。
  2. linux 6.5 mongdb php扩展插件,linux下为php添加mongodb扩展
  3. js date 加一天_需要知道的JS的日期的知识,都在这了
  4. 拓端tecdat|R语言投资组合优化求解器:条件约束最优化、非线性规划求解
  5. 【大数据部落】银行信用数据SOM神经网络聚类实现
  6. 拓端tecdat|R语言markov switching model马尔可夫转换分析研究水资源
  7. 操作系统银行家算法(课程设计报告)JAVA实现
  8. python 如何判断字典存在key
  9. Ubuntu Server 命令行下显示中文乱码(菱形)解决办法
  10. 2017.8.22坐标问题