• SQL的语法


    SQL的语法


    • SQL通用语法

      1. SQL语句可以单行或多行书写,以分号(“;”)结尾。

      2. SQL语句可以使用空格或缩进增强可读性。

      3. MySQL数据库的SQL语句不区分大小写(建议关键字大写)。

      4. 注释

        单行注释:

        -- 内容
        # 内容(MySQL特有)

        多行注释:

        /* 内容 */
    • SQL语句分类

      分类 全称 说明
      DDL Data Definition Language 数据定义语言,用于定于数据库对象(数据库、表、字段)
      DML Data Manipulation Language 数据操作语言,用来对数据库表中数据进行增加、删除、修改
      DQL Data Query Language 数据查询语言,用于查询数据库表中的记录
      DCL Data Control Language 数据控制语言,用于创建数据库、操控数据库的访问权限

    数据定义语言


    • 数据库操作 —— 数据定义(DDL)

      1. 查询:

        查询所有数据库:

        show databases;

        查询当前数据库:

        select database();
      2. 创建:

        create database [if not exists] 数据库名称 [default charset 字符集] [collate 排序规则];

        (PS:方括号("[]")内的为可选项;字符集推荐使用utf8mb4;)

        (意义:[if not exists]意义为若数据库内已存在该名称的数据库则不执行;)

      3. 删除:

        drop database [if exists] 数据库名称;

        (PS:方括号("[]")内的为可选项;)

        (意义:[if exists]意义为若数据库存在则执行删除;)

      4. 使用:

        use 数据库名称;
    • 数据库操作 —— 数据定义(DDL)- 查询

      1. 查询当前数据库所以的表:

        show table;
      2. 查询表结构:

        desc 表名;
      3. 查询指定表的建表语句:

        show create table 表名;
    • 数数据库操作 —— 数据定义(DDL)- 创建

      <数据库操作(DDL)- 创建 - 数据库:tb_user>

      create table 表名(
      字段1 字段1的类型 [comment 字段1注释],
      字段2 字段2的类型 [comment 字段2注释],
      字段3 字段3的类型 [comment 字段3注释]
      ) [comment 表注释]

      (PS:方括号("[]")内的为可选项;)

    • 数据库操作 —— 数据定义(DDL)- 数据类型

      <数据库操作(DDL)- 数据类型 - 案例:08案例.txt>

      MySQL主要数据库类型:

      1. 数值类型:

        (PS:DOUBLE需要设置精度、标度;)

        (意义:精度意义为数值总长度;标度意义为小数点位数;)

        (案例:[字段名 TINYINT UNSIGNED] 意义为当前使用的TINYINT数据类型使用的是无符号的;)

      2. 字符串类型:

        (PS:带BLOB的为二进制存储数据类型;CHAR类型若存储没有达到设定的长度则会用空格填充;VARCHARA类型为所占用的长度则为所占用的空间;)

        (案例:[char(10)] 意义为最大长度为10的字符;)

      3. 日期时间类型:

    • 数据库操作 —— 数据定义(DDL)- 修改

      1. 添加字段:

        alter table 表名 add 字段名 类型(长度) [comment 注释] [约束]

        (PS:方括号("[]")内的为可选项;)

      2. 修改数据类型:

        alter table 表名 modify 字段名 新数据类型(长度);
      3. 修改字段名和字段类型:

        alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];

        (PS:方括号("[]")内的为可选项;)

      4. 删除字段:

        alter table 表名 drop 字段名;
      5. 修改表名:

        alter table 表名 rename to 新表名;
    • 数据库操作 —— 数据定义(DDL)- 删除

      1. 删除表:

        drop table [if exists] 表名;

        (PS:方括号("[]")内的为可选项;)

        (意义:[if exists]意义为若数据库存在则执行删除;)

      2. 删除指定表,并重新创建该表:

        truncate table 表名;

    数据操作语言


    • 数据库操作 —— 数据操作(DML)- 添加数据

      1. 给指定字段添加数据:

        insert into 表名(字段1,字段2,字段3) values(值1,值2,值3);
      2. 给全部字段添加数据:

        insert into 表名 values(值1,值2,值3);
      3. 批量给指定字段添加数据:

        insert into 表名(字段1,字段2) values(值1,值2),(值1,值2);
      4. 批量给全部字段添加数据:

        insert into 表名 values(值1,值2),(值1,值2),(值1,值2);

      (PS:添加的数据类型为字符串、日期应该包含在引号('')中;添加的字符串类型大小应该在字段规定的范围内;)

    • 数据库操作 —— 数据操作(DML)- 修改数据

      1. 修改表的数据:

        update 表名 set 字段名1 =1,字段名2 =2,字段名3 =3 [where 条件];

        (PS:方括号("[]")内的为可选项;)

    • 数据库操作 —— 数据操作(DML)- 删除数据

      1. 删除表的数据:

        delete from 表名 [where 条件];

        (PS:方括号("[]")内的为可选项;)

    数据查询语言


    • 数据库操作 —— 数据查询(DQL)

      语法:

      语法: 解释:
      select 字段列表
      from 表名列表
      where 条件列表
      group by 分组字段列表
      having 分组后条件列表
      order by 排序字段列表
      limit 分页参数
    • 数据库操作 —— 数据查询(DQL)- 基本查询

      1. 查询多个字段:

        select 字段1,字段2,字段3 from 表名;
      2. 查询所有字段:

        select * from 表名;

        (PS:在开发中建议不要使用星号“※”;)

      3. 设置别名:

        select 字段1 as 别名1,字段2 as 别名2 from 表名;
      4. 去除重复记录:

        select distinct 字段列表 from 表名;
    • 数据库操作 —— 数据查询(DQL)- 条件查询(where)

      1. 语法:

        select 字段列表 from 表名 where 条件列表;
      2. 条件:

        比较运算符 功能
        > 大于
        >= 大于等于
        < 小于
        <= 小于等于
        = 等于
        <> 或 != 不等于
        detween ... and ... 在某个范围之内(最小值、最大值)
        in(...) 在in之后的列表中的值,多选一
        like 占位符 模糊匹配(“_”匹配单个字符,“%”匹配任意个字符)
        is null 是null
        逻辑运算符 功能
        and 或 && 并且(多个条件同时成立)
        or 或 || 或者(多个条件任意一个成立)
        not 或 ! 非、不是
    • 数据库操作 —— 数据查询(DQL)- 聚合函数(count、max、min、avg、sum)

      1. 介绍:

        将一列数据作为一个整体,进行纵向运算。

      2. 常见的聚合函数:

        函数 功能
        count 统计数量
        max 最大值
        min 最小值
        avg 平均值
        sum 求和
      3. 语法:

        select 聚合函数(字段列表) from 表名;

        (PS:null值不参与聚合函数运算;)

    • 数据库操作 —— 数据查询(DQL)- 分组查询(group by)

      1. 语法:

        select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

        (PS:方括号("[]")内的为可选项;)

      2. where与having的区别:

        执行时间不同:where是分组之前进行过滤(不满足条件的不参与分组),而having是分组之后对结果进行过滤。

        判断条件不同:where不能对聚合函数进行判断,而having可以。

    • 数据库操作 —— 数据查询(DQL)- 排序查询(order by)

      1. 语法:

        select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
      2. 排序方式:

        ASC:升序排序(默认值)。

        DESC:降序排序。

        (PS:若是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序;)

    • 数据库操作 —— 数据查询(DQL)- 分页查询(limit)

      1. 语法:

        select 字段列表 from 表名 limit 起始索引,查询记录数;

        (PS:起始索引从0开始;起始索引=(查询页面 - 1) * 每页显示记录数;分页查询是数据库的方言(limit是MySQL的);)

    • 数据库操作 —— 数据查询(DQL)- 执行顺序

      1. 执行顺序:

        执行顺序: 语法: 解释:
        4 select 字段列表
        1 from 表名列表
        2 where 条件列表
        3 group by 分组字段列表
        5 having 分组后条件列表
        5 order by 排序字段列表
        6 limit 分页参数

    数据控制语言


    • 数据库操作 —— 数据控制(DCL)- 管理用户

      1. 查询用户:

        use mysql;
        select * from user;
      2. 创建用户:

        create user '用户名'@'主机名' identified by '密码';
      3. 修改用户密码:

        alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
      4. 删除用户:

        drop user '用户名'@'主机名';

      (PS:主机名可以使用百分号"%"通配符,来表示任意主机都可以访问;)

    • 数据库操作 —— 数据控制(DCL)- 权限控制

      1. 常用的权限控制:

        权限: 说明;
        all、all privileges 所有权限
        select 查询数据
        insert 插入数据
        update 修改数据
        delete 删除数据
        alter 修改表
        drop 删除数据库、表、视图
        create 创建数据库、表
      2. 查询权限:

        show grants for '用户名'@'主机名';
      3. 授予权限:

        grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
      4. 撤销权限:

        revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

        (PS:多个权限之间要使用逗号(",")分隔;)

  • 相关阅读:
    java-php-python-仁爱公益网站计算机毕业设计
    【微前端开发环境下,加载远程子应用的实战。】
    移除元素(双指针)
    设计模式之访问器模式(Visitor)的C++实现
    包管理器 npm
    android log能在release包里面打印吗
    PyTorch多GPU训练时同步梯度是mean还是sum?
    FPGA可以转行数字IC验证吗?
    说Redis是单线程其实不严谨以及一些思考
    自学Python第十五天-爬虫解析工具 RE 、BS4 和 xpath
  • 原文地址:https://www.cnblogs.com/TeaTracing/p/16366783.html