mysql重点知识提取
完整版本:https://coderwcb.blog.csdn.net/article/details/121047560
概念
数据库就是用来存储和管理数据的仓库。
通过之前的学习,我们能够使用以下两种方式进行数据存储:
- 使用变量、对象、数组、集合存储数据,数据保存在内存(RAM)中;
- 使用文件(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重点知识提取相关推荐
- JAVA-MySQL四{MySQL重点DQL查询数据}JAVA从基础开始 --7
JAVA-MySQL四{MySQL重点DQL查询数据}JAVA从基础开始 --7 DQL查询语句 DQL - Data Query Language:数据查询语言 指定查询字段 1.全查 2.指定字段 ...
- linux和mysql重点哪个_重要的MySQL 文档存储知识点扫盲
MySQL 文档存储 可以跳过底层数据结构创建.数据规范化和其它使用传统数据库时需要做的工作,直接存储数据. MySQL 可以提供 NoSQL JSON 文档存储Document Store 了,这样 ...
- 企业面试中关于MYSQL重点的28道面试题解答
问题1:char.varchar的区别是什么? varchar是变长而char的长度是固定的.如果你的内容是固定大小的,你会得到更好的性能. 问题2: TRUNCATE和DELETE的区别是什么? D ...
- mysql text转varchar_关于企业面试中:“ Mysql重点 ”的28道面试题解析!
问题1:char.varchar的区别是什么? varchar是变长而char的长度是固定的.如果你的内容是固定大小的,你会得到更好的性能. 问题2: TRUNCATE和DELETE的区别是什么? D ...
- 《逆袭进大厂》第十二弹之MySQL重点篇27问27答
大家好,我是阿秀. 我来更新了,本期是 MySQL 第二期,至此 MySQL 部分就全部更新完毕了,下一弹就是 Redis 篇了. 上一篇文章中,小伙伴建议将资料按照更细粒度去整理一番,我觉得是非常不 ...
- 无法安装mysql server 2008_Windows Server2008安装mysql5.6出现程序无法正常启动(0xc000007b)...
下载 到官网下载mysql5.6版本,msi安装包只有32位无64位 移动到指定文件夹下,解压文件 添加环境变量 变量名:MYSQL_HOME 变量值:C:\Program Files\mysql 即 ...
- window 自动安装MySQL数据库_windows安装MySQL数据库
windows安装MySQL数据库 最终效果展示 具体步骤 打开MySQL官网,找到downloads 选择MySQL社区版 选择MySQL Community Server社区器 选择windows ...
- mysql dba高级教程_MySQL DBA高级视频教程 博瑞森一线DBA大神亲授
下载服务器:五号服务器---VIP资料下载八区\数据库专区 游客,如果您要查看本帖隐藏内容请回复 MySQL DBA高级视频教程 这个是我参与培训的,分享给大家学习,真正一线DBA大神亲授 全程高清, ...
- 数据库性能测试-mysql篇
一.数据库主从同步的工作原理 主从复制原理: 上边这张交互图就清楚的标记出了Master节点如何同步到Slave节点 1.首先Master上的修改.删除.新增操作都会被记录到一个叫做binlog的文件 ...
- python入门与提高实践 老男孩_跟老男孩学Linux运维:MySQL入门与提高实践
第10章 MySQL数据库日志知识与企业应用实践 10.1 MySQL常用日志文件知识 10.2 错误日志的介绍与配置 10.3 普通查询日志的介绍与配置 10.4 二进制日志的介绍与配置 10.5 ...
最新文章
- Windows10快捷应用指令
- 面试造飞机这么能耐,对着调优实战更不能怂啊!
- python里感叹号什么意思_仪表盘上的感叹号是什么意思
- media player怎么不能拖进度图mp4_榜样力量丨科研路上有难题,学长教你怎么解
- Android inline hook手记
- 块级元素与行级元素(内联元素)
- JavaWeb结合七牛云存储搭建个人相册服务
- 7-3 括号匹配 (15 分)
- Windows Server 2012 存储 (三)SMB 的高可用性
- hihocoder第229周:最大连续字母个数
- 如何测一个纸杯_阿薇塔罗——4个吊坠,凭直觉选一个,测你这辈子婚姻状况如何?...
- python 定义变量x格式_Python变量
- C++ 标准库的双向链表
- 3DsMAX树木快速建模
- Layui-五星好评
- 工作流相关讲解 转载
- Getting Started with Boost
- 【Pyecharts50例】图表背景颜色设置
- 山西大学和太原理工大学哪个计算机专业好,山西大学,太原理工大学和中北大学,这三所大学的综合排名,和在山西人心中的地位排名?...
- polyRay v0.4
热门文章
- my first d3d application 哈哈哈。
- linux 6.5 mongdb php扩展插件,linux下为php添加mongodb扩展
- js date 加一天_需要知道的JS的日期的知识,都在这了
- 拓端tecdat|R语言投资组合优化求解器:条件约束最优化、非线性规划求解
- 【大数据部落】银行信用数据SOM神经网络聚类实现
- 拓端tecdat|R语言markov switching model马尔可夫转换分析研究水资源
- 操作系统银行家算法(课程设计报告)JAVA实现
- python 如何判断字典存在key
- Ubuntu Server 命令行下显示中文乱码(菱形)解决办法
- 2017.8.22坐标问题