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:多个权限之间要使用逗号(",")分隔;)

posted on 2022-06-11 20:51  TeaTracing  阅读(238)  评论(0编辑  收藏  举报