MySQL学习之SQL语法及SQL解析顺序

MySQL学习之SQL语法及SQL解析顺序

一、SQL语法

SQL是Structured Query Language的缩写,是一种用于管理关系型数据库的计算机语言。在MySQL中,SQL是进行数据库操作最基础也最常用的语言。

SQL语法主要包含以下几个部分:

1. DDL(数据定义语言)

DDL用于定义数据库中各个元素,例如数据库本身、表、列、约束等。

常用的DDL操作有:

创建数据库

CREATE DATABASE <数据库名>;

创建表

CREATE TABLE <表名> (
    <列名1> <数据类型> <NULL或NOT NULL>,
    <列名2> <数据类型> <NULL或NOT NULL>,
    <列名3> <数据类型> <NULL或NOT NULL>,
    ...
);

修改表

ALTER TABLE <表名> <操作>;

删除表

DROP TABLE <表名>;

2. DML(数据操作语言)

DML用于对表中的数据进行增删改查操作。

常用的DML操作有:

插入数据

INSERT INTO <表名> (<列名1>, <列名2>, <列名3>, ...) VALUES (<值1>, <值2>, <值3>, ...);

更新数据

UPDATE <表名> SET <列名1>=<值1>, <列名2>=<值2>, ... WHERE <条件>;

删除数据

DELETE FROM <表名> WHERE <条件>;

查询数据

SELECT <列名1>, <列名2>, ... FROM <表名> WHERE <条件> ORDER BY <排序方式>;

3. DCL(数据控制语言)

DCL用于对数据库、表、用户权限等进行控制。

常用的DCL操作有:

创建用户

CREATE USER <用户名>@<主机名> IDENTIFIED BY '<密码>';

授权用户

GRANT <权限> ON <表名> TO <用户名>@<主机名>;

撤销权限

REVOKE <权限> ON <表名> FROM <用户名>@<主机名>;

二、SQL解析顺序

当执行一条SQL语句的时候,MySQL会先对该语句进行解析,然后生成执行计划。SQL解析顺序包括以下几个步骤:

  1. 词法分析:将SQL语句拆分成多个标记(token)。
  2. 语法分析:将拆分后的标记按照SQL语法规则进行分析,生成语法树。
  3. 语义分析:对语法树进行语义检查,例如表名、列名是否正确,是否有访问权限等。
  4. 查询优化:对查询语句进行优化,生成执行计划。
  5. 执行计划:按照执行计划执行语句。

以下通过一个简单的示例来说明SQL解析顺序:

SELECT id, name FROM users WHERE age > 18 ORDER BY id DESC;
  1. 将该语句拆分成多个标记,例如SELECT、id、name、FROM、users等。
  2. 对标记按照SQL语法规则进行语法分析,生成语法树。
  3. 对语法树进行语义分析,例如检查users表是否存在、id、name是否是该表的合法列名等。
  4. 对查询语句进行优化,例如判断是否需要使用索引,生成执行计划。
  5. 按照执行计划执行语句,例如先使用age列的索引查询符合条件的行,然后按照id列降序排序,最后返回id和name两列的值。

三、示例说明

1. 创建表

下面是一个创建users表的示例:

CREATE TABLE users (
    id int NOT NULL AUTO_INCREMENT,
    name varchar(20) NOT NULL,
    age int NOT NULL,
    gender enum('male', 'female') NOT NULL,
    PRIMARY KEY (id)
);

该语句使用DDL去定义一个名为users的表,该表包含四个列:id、name、age、gender,其中id是自增的主键。

2. 查询数据

下面是一个查询users表中所有符合条件的行,并按照id列降序排序的示例:

SELECT id, name, gender FROM users WHERE age > 18 ORDER BY id DESC;

该语句使用DML去查询users表中符合条件age > 18的行,并只返回id、name、gender三列,按照id列降序排序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL学习之SQL语法及SQL解析顺序 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • windows上安装mysql5.7

    安装前准备: 系统:windows7-x64 MySql:mysql5.7.19-X64-windows压缩包 安装步骤: 在windows上安装mysql有两种方式,一种是安装mysql压缩包,一种是图形化的安装,只要是配置好my.ini配置文件,压缩包安装比图形化更快更简单。这篇文章主要说明mysql压缩包的安装步骤。 一、新建数据库文件存放目录 将my…

    MySQL 2023年4月12日
    00
  • sql注入之新手入门示例详解

    下面我将详细讲解“sql注入之新手入门示例详解”的完整攻略。 简介 SQL注入是一种常见的Web攻击技术,攻击者通过将恶意的SQL语句注入到Web应用程序的数据输入中,成功地绕过应用程序的安全措施,实现对应用程序非法的访问和操作。本文将以新手入门为目的,详细介绍SQL注入的基础知识和实践方法。 前置条件 在开始学习本文之前,您需要具备以下先决条件: 1.对W…

    database 2023年5月21日
    00
  • 破解mysql root密码的几种方法

    以下是详细的攻略。 破解mysql root密码的几种方法 当我们在使用 MySQL 时,连接数据库需要输入 root 账户的用户名和密码,如果我们忘记了密码或是想要破解密码,可以使用以下几种方法: 1.使用配置文件跳过密码验证 可以通过修改 MySQL 的配置文件,在连接 MySQL 数据库时不需要输入密码,具体步骤如下: 打开 MySQL 的配置文件。L…

    database 2023年5月22日
    00
  • SQL SERVER 里的错误处理(try catch)

    SQL SERVER 中的错误处理机制基于 TRY…CATCH 块,可用于处理 SQL Server 数据库中遇到的错误和异常。TRY…CATCH 语句块允许开发人员在代码中捕获和处理错误,以便让程序更加健壮、容错、友好。 下面是基于 TRY…CATCH 捕获和处理 SQL SERVER 错误的完整攻略,包含以下步骤: 步骤 1:开始一个 TRY…

    database 2023年5月21日
    00
  • SQL 在WHERE子句中引用别名列

    在SQL查询中,给列或表起一个别名是十分常见的。当然,在查询的过程中经常会使用WHERE子句来过滤数据,那么如何在WHERE子句中引用已经起了别名的列呢?下面是详细的攻略: 使用别名多次引用 当我们使用别名给列或表起名字时,WHERE子句可以轻松使用这个别名来过滤数据。例如,我们有一个名为“students”的表格,其中包含“student_id”和“nam…

    database 2023年3月27日
    00
  • Perl访问MSSQL并迁移到MySQL数据库脚本实例

    一、准备工作 在进行Perl访问MSSQL并迁移到MySQL数据库脚本实例之前,需要进行一些准备工作,具体如下: 安装Perl、DBI、DBD::ODBC模块 在开发环境中,需要安装Perl语言环境,并通过Perl模块管理器(如cpanm、ppm)安装DBI和DBD::ODBC模块。 安装Microsoft ODBC驱动程序 在连接MSSQL数据库时,需要安…

    database 2023年5月22日
    00
  • SpringBoot中Mybatis + Druid 数据访问的详细过程

    下面是SpringBoot中Mybatis + Druid数据访问的详细步骤: 1. 添加依赖 在pom.xml文件中引入Mybatis和Druid的依赖,如下: <dependencies> <!– Mybatis依赖 –> <dependency> <groupId>org.mybatis.spring…

    database 2023年5月21日
    00
  • 查看修改mysql编码方式让它支持中文(gbk或者utf8)

    要将MySQL编码方式修改为支持中文,需要开发人员做如下操作: 1. 确定当前MySQL服务器默认编码方式 首先需要确定当前MySQL服务器默认编码方式,可以输入以下命令查看: mysql> SHOW VARIABLES LIKE ‘character_set_%’; 执行上述命令后可以看到一系列的字符编码,其中比较重要的有: character_se…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部