了解SQL SQL的两个重要标准是SQL92和SQL99. SQL语言的划分 DDL,也叫Data Definition Language,也就是数据定义语言,用来定义数据库对象,包括数据库.数据表和列. 通过DDL,可以创建.删除和修改数据库和表结构 DML,也叫Data Manipulation Language, 数据操作语言,用它来操作和数据库相关的记录,包括了增加.删除.修改数据表中的记录. DCL,也叫Data Control Language,数据控制语言,用来定义访问权限和安全级…
MySQL中的SQL是如何执行的 MySQL是典型的C/S架构,也就是Client/Server架构,服务器端程序使用的mysqld.整体的MySQL流程如下图所示: MySQL是有三层组成: 连接层: 负责客户端与服务器端建立连接,客户端发送SQL至服务端; SQL层: 对SQL语句进行查询处理; 存储引擎层: 与数据库文件打交道,负责数据的存储和读取. 其中,SQL层与数据库文件的存储方式无关,我们来看下SQL层的架构: 查询缓存: Server如果在查询缓存中发现了这条SQL语句,就会直接…
1.基础架构:一条sql查询语句是如何执行的? mysql> select * from T where ID=10: 2.基础架构:一条sql更新语句是如何执行的? mysql> update T set c=c+1 where ID=2; redo log (1)存储引擎的日志,InnoDB特有的: (2)物理日志 (3)循环写,空间固定会用完: binlog (1)server端日志,所有引擎都有: (2)逻辑日志 (3)追加写,文件写到一定大小,切换下一个,并不会覆盖之前的日志: re…
数据过滤 SQL的数据过滤, 可以减少不必要的数据行, 从而可以达到提升查询效率的效果. 比较运算符 在SQL中, 使用WHERE子句对条件进行筛选, 筛选的时候比较运算符是很重要. 上面的比较运算符, 并不是说每个DBMS都支持, 这里主要说MySQL, 不支持(!>)和(!<)等. WHERE子句的基本格式是: SELECT .....(列名) FROM ......(表名) WHERE ......(子句条件) 举几个例子: SELECT name, hp_max FROM heros…
1.并发 分工:如何高效地拆解任务并分配给线程 同步:线程之间如何协作 互斥:保证同一时刻只允许一个线程访问共享资源 Fork/Join 框架就是一种分工模式,CountDownLatch 就是一种典型的同步方式,而可重入锁则是一种互斥手段. 2.可见性.原子性.有序性 (1)可见性:缓存导致 (2)原子性:线程切换 count+=1 (3)有序性:编译优化 3.java内存模型 (1)可见性:缓存导致-----按需禁用缓存 (2)有序性:编译优化-----按需禁用 volatile int x…
查询语句 首先, 准备数据, 地址是: https://github.com/cystanford/sql_heros_data, 除了id以外, 24个字段的含义如下: 查询 查询分为单列查询, 多列查询, 全部查询等等: SELECT name FROM heros; // 单列查询 SELECT name, hp_max, mp_max, attack_max, defense_max FROM heros; // 多列查询 SELECT * FROM heros; // 全部查询 学习阶…
DDL DDL是DBMS的核心组件,是SQL的重要组成部分. DDL的正确性和稳定性是整个SQL发型的重要基础. DDL的基础语法及设计工具 DDL的英文是Data Definition Language,也就是数据定义语言.定义了数据库的结构和数据表的结构.常用的功能急救室增删改,对应的命令分别是CREATE.DROP和ALTER. 对数据库进行定义 CREATE DATABASE nba; // 创建名为nba的数据库 DROP DATABASE nba; // 删除名为nba的数据库 对数…
Mysql实战45讲 极客时间 读书笔记 Mysql实战45讲 极客时间 读书笔记 笔记体会: 根据加锁范围:MySQL里面的锁可以分为:全局锁.表级锁.行级锁 一.全局锁:对整个数据库实例加锁.MySQL提供加全局读锁的方法:Flush tables with read lock(FTWRL)这个命令可以使整个库处于只读状态.使用该命令之后,数据更新语句.数据定义语句和更新类事务的提交语句等操作都会被阻塞.使用场景:全库逻辑备份.风险:1.如果在主库备份,在备份期间不能更新,业务停摆2.如果在…
极客时间 Mysql实战45讲 04讲深入浅出索引(下)极客时间 笔记体会: 回表:回到主键索引树搜索的过程,称为回表覆盖索引:某索引已经覆盖了查询需求,称为覆盖索引,例如:select ID from T where k between 3 and 5在引擎内部使用覆盖索引在索引K上其实读了三个记录,R3~R5(对应的索引k上的记录项),但对于MySQL的Server层来说,它就是找引擎拿到了两条记录,因此MySQL认为扫描行数是2最左前缀原则:B+Tree这种索引结构,可以利用索引的"最左前…
提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务.最经典的例子就是转账,你要给朋友小王转100块钱,而此时你的银行卡只有100块钱. 转账过程具体到程序里会有一系列的操作,比如查询余额.做加减法.更新余额等,这些操作必须保证是一体的,不然等程序查完之后,还没做减法之前,你这100块钱,完全可以借着这个时间差再查一次,然后再给另外一个朋友转账,如果银行这么整,不就乱了么?这时就要用到“事务”这个概念了. 简单来说,事务就是要保证一组数据库操作,要么全部成功,要么全部失败.在MySQ…