SQL语⾔简介
SQL语⾔
SQL语⾔按照功能划分成以下4个部分:
1. DDL(Data Definition Language)数据定义语⾔,它⽤来定义我们的数据库对象,包括数据库、数据表和列。通过使⽤DDL,我们可
以创建,删除和修改数据库和表结构。
2. DML(Data Manipulation Language)数据操作语⾔,我们⽤它操作和数据库相关的记录,如增加、删除、修改数据表中的记录。
3. DCL(Data Control Language)数据控制语⾔,我们⽤它来定义访问极限和安全级别。
4. DQL(Data Query Language)数据查询语⾔,我们⽤它查询想要的记录,它是SQL语⾔的重中之重。实际业务中,我们绝⼤多数情况
下都是在和查询打交道,因此,学会编写正确且⾼效的查询语句,是学习的重点。
SQL是我们与DBMS 交流的语⾔,我们在创建DBMS之前,还需要对它进⾏设计,对于RDBMS来说采⽤的是ER图(Entity Relationship Diagram),即实体-关系图的⽅式进⾏设计。
sql server数据类型ER图评审通过后,我们再⽤SQL语句或都可视化管理⼯具(Navicat)创建数据库表。
实体-关系图有什么⽤呢?
实体-关系图是我们⽤来描述现实世界的概念模型,在这个模型中有3个要素:
实体
属性
关系
SQL⼤⼩写的问题,总结如下:
1. 表名、表别名、字段名、字段别名都⼩写;
2. SQL保留字、函数名、绑定变量等都⼤写。
DB、DBS和DBMS的区别是什么
DBMS 的英⽂全称是 DataBase Management System,数据库管理系列。实际上它可以对多个数据库进⾏管理,所以你可以理解为DBMS = 多个数据库(DB)+ 管理程序。
DB 的英⽂是 DataBase,也就是数据库。数据库是存储数据的集合,你可以把它理解为多个数据表。
DBS 的英⽂是 DataBase System,数据库系统。它是更⼤的概念,包括了数据库、数据库管理系统以及数据库管理⼈员DBA。
Oracle中的 SQL 是如何执⾏的
SQL语句
oracle 中sql执⾏
SQL在Oracle中的执⾏过程:
开源代码可以改了变成我的吗SQL语句在oracle中经历了民以下的⼏个步骤:
1. 语法检查:检查 SQL 拼写是否正确,如果不正确,Oracle 会报语法错误。
2. 语义检查:检查 SQL 中的访问对象是否存在。如SQL语句中表名,列名是否正确。
mysql语句转oracle
3. 权限检查:看⽤户是否具备访问该数据的权限。
4. 共享池检查:共享池(Shared Pool)是⼀块内存池,最主要的作⽤是缓存SQL语句和该语句的执⾏计划。Oracle 通过检查共享池是
否存在SQL语句的执⾏计划,来判断进⾏软解析,还是硬解析。怎么解理软解析和硬解析呢?
在共享池中,Oracle⾸先对SQL语句进⾏Hash运算,然后根据 Hash 值在库缓存(Library Cache)中查,如果存在SQL语句的执⾏计划,就直接拿来执⾏,直接进⼊“执⾏器”的环节,这就是软解析。
如果没有到 SQL 语句和执⾏计划,Oracle 就需要创建解析树进⾏解析,⽣成执⾏计划,进⼊“优化器”这个步骤,这就是硬解析。
5. 优化器:优化器中就是要进⾏硬解析,也就是决定怎么做,⽐如创建解析树,⽣成执⾏计划。
6. 执⾏器:当有了解析树和执⾏计划之后,就知道了SQL该怎么被执⾏,这样就可以在执⾏器中执⾏语句了。
共享池是Oracle中的术语,包括了库缓存,数据字典缓冲区等。
库缓存:我们上⾯已经讲到了库缓存区,它主要缓存SQL语句和执⾏计划。
数据字典缓冲区:存储的是 Oracle 中的对象定义,⽐如表、视图、索引等对象。当对SQL语句进⾏解析的时候,如果需要相关的数据,会从数据字典缓冲区中提取。
库缓存这⼀个步骤,决定了SQL语句是否需要进⾏硬解析。为了提升SQL的执⾏效率,我们应该尽量避免硬解析,因为在SQL的执⾏过程中,创建解析树,⽣成执⾏计划是很消耗资源的。
MySQL 中的 SQL 是如何执⾏的vue实现todolist
⾸先 MySQL 是典型的 C/S 架构,即 Client/Server架构,服务器端程序使⽤的 mysqld。整体的 MySQL 流程如下图所⽰:
这些是教程英文可以看到 MySQL 由三层组成:
1. 连接层:客户端和服务器端建⽴连接,客户端发送 SQL ⾄服务器端;
2. SQL 层:对SQL语句进⾏查询处理;
3. 存储引擎层:与数据库⽂件打交道,负责数据的存储和读取。reeper插件
其中SQL 层与数据库⽂件的存储⽅式⽆关,我们来看下 SQL 层的结构:
1. 查询缓存: Server如果在查询缓存中发现了这条SQL语句,就会直接将结果返回给客户端;如果没有,就进⼊到解析器阶段。需要说
明的是,因为查询缓存往往效率不⾼,所以在MySQL8.0之后注抛弃了这个功能。
2. 解析器:在解析器中对SQL 语句进⾏语法分析、语义分析。
3. 优化器:在优化器中会确定 SQL 语句的执⾏路径,⽐如是根据全表检索,还是根据索引来检索等。
4. 执⾏器:在执⾏之前需要判断该⽤户是否具备权限,如果具备权限就执⾏SQL 查询并返回结果。在MySQL8.0以下的版本,如果设置
了查询缓存,这时将查询结果进⾏缓存。。
与Oracle 不同的是,MySQL的存储引擎采⽤了插件的形式,每个存储引擎都⾯向⼀种特定的数据库应⽤环境。同时开源的MySQL 还允许开发⼈员设置⾃⼰的存储引擎,下⾯是⼀些常见的存储引擎:
1. InnoDB 存储引擎: 它是 MySQL 5.5 版本之后默认的存储引擎,最⼤的特点是⽀持事务、⾏级锁定、外键约束等。
2. MyISAM 存储引擎:在 MySQL 5.5 版本之前是默认的存储引擎,不⽀持事务,也不⽀持外键,最⼤的特点就是速度快,占⽤资源
少。
3. Memory存储引擎:使⽤系统内存作为存储介质,以便得到更快的响应速度。不过如果mysqld进程崩溃,则会导致所有的数据丢失,
因此我们只有当数据是临时的情况下才使⽤Memory存储引擎。
4. NDB存储引擎:也叫做 NDB Cluster存储引擎,主要⽤于 MySQL Cluster分布式集环境,类型于Oracle的RAC集。
5. Archive 存储引擎:它有很好的压缩机制,⽤于⽂件归档,在请求写⼊时会进⾏压缩,所以也经常来⽤做仓库。
既然⼀条SQL 语句会经历不同的模块,那我们来看⼀下,在不同的模块中,SQL执⾏所使⽤的资源(时间)是怎样的。下⾯我来教你如何在 MySQL中对⼀条 SQL语句的执⾏时间进⾏分析。
⾸先查看⼀下 profiling是否开启,开启它可以让 MySQL收集在 SQL执⾏时所使⽤的资源情况,命令如下:
select @@profiling;
profiling=0 代表关闭,我们需要把 profiling打开,即设置为1:
select profiling =1;
然后我们执⾏⼀个 SQL 查询(执⾏任何⼀个):
select*from scc_patient;
查看当前会话所产⽣的所有 profiles:
show profiles;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。