SQL语句

SQL语句

SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾
  2. SQL语句可以使用空格 / 缩进来增强语句的可读性
  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
  4. 注释:
    1. 单行注释: -- 注释内容 或 # 注释内容(MySQL特有)
    2. 多行注释 : /* 注释内容 */

SQL分类

分类全称说明
DDLData Definition Langusge数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限

DDL语句
  1. DDL - 数据库操作
    查询
        查询所有数据库
        SHOW DATABASES;
        查询当前数据库
        SELECT DATABASE();
    创建
    CREATE DATABASE [IF NOT EXISTS] 数据库名 [DRFAULT CHARSET 字符集] [COLLATE 排序规则];
    删除
    DROP DATABASE [IF EXISTS] 数据库名;
    使用
    USE 数据库名;

  2. DDL - 表操作
    1. -查询
      查询当前数据库所有表
      SHOW TABLES;
      查询表结构
      DESC 表名;
      查询指定表的建表语句
      SHOW CREATE TABLE 表名;

    2.  创建
      CREATE TABLE 表名(
          字段1 字段1类型[COMMENT 字段1注释],
          字段2 字段2类型[COMMENT 字段2注释],
          字段3 字段3类型[COMMENT 字段3注释]
      )[COMMENT 表注释];

    3. 修改
      添加字段
      ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
      修改数据类型
      ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
      修改字段名和字段类型
      ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
      删除字段
      ALTER TABLE 表名 DROP 字段名;
      修改表名
      ALTER TABLE 表名 RENAME TO 新表名;
      
    4. 删除
      删除表
      DROP TABLE [IF EXISTS ] 表名;
      删除指定表,并重新创建该表
      TRUNCATE TABLE 表名;
DML语句
  1. 添加数据

    给指定字段添加数据
    INSERT INTO 表名 (字段名1,字段名2,...) VALUES(值1,值2,...);
    给全部字段添加数据
    INSERT INTO 表名 VALUES(值1,值2,...);
    批量添加数据
    INSERT INTO 表名 (字段名1,字段名2,...) VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);
    INSERT INTO 表名 VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);

     注意;

    1. 插入数据时,指定的字段顺序需要与值的顺序是一 一 对应的。

    2. 字符串和日期型数据应该包含在引号中。

    3. 插入数据的大小,应该在字段的规定范围内。

  2. 修改数据

    UPDATE 表名 SET 字段名1=值1,字段名2=值2,... [WHERE 条件];

    注意;修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据

  3. 删除数据
    DELETE FROM 表名 [WHERE 条件]

    注意:

    1. DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据

    2. DELETE语句不能删除某一个字段的值可以使用(UPDATE)。

DQL语句
  1. 语法
    SELECT
        字段列表
    FROM
        表名列表
    WHERE
        条件列表
    GROUP BY
        分组字段列表
    HAVING
        分组后条件列表
    ORDER BY
        排序字段列表
    LIMIT
        分页参数
  2. 基本查询

    查询多个字段
    SELECT 字段1,字段2,字段3... FROM 表名;
    SELECT * FROM 表名;
    
    设置别名
    SELECT 字段1 [AS 别名1],字段2[AS 别名2]... FROM 表名;
    去除重复记录
    SELECT DISTINCT 字段列表 FROM 表名;

     

  3. 条件查询
    1. 语法
      SELECT 字段列表 FROM 表名 WHERE 条件列表;
      
       
    2. 条件
      比较运算符功能
      >大于
      >=大于等于
      <小于
      <=小于等于
      =等于
      <> 或  !=不等于
      BETWEEN... AND...在某个范围之内(左边最小值、右边最大值,含最小值)
      IN(...)在in之后的列表中的值,多选一
      LIKE 占位符模糊匹配( _   匹配单个字符, % 匹配任意个字符)
      IS NULL是NULL
      逻辑运算符功能
      AND 或 &&并且(多个条件同时成立)
      OR 或 ||或者(多个条件任意一个成立)
      NOT 或 !非,不是
    3. 聚合函数

      1. 聚合函数:将一列数据作为整体,进行纵向计算
      2. 常见的聚合函数
        函数功能
        count统计数量
        max最大值
        min最小值
        avg平均值
        sum求和
      3. 语法
        SELECT 聚合函数(字段列表) FROM 表名;

        注意:  null值不参与所有聚合函数计算

  4. 分组查询

    1. 语法

      SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后的过滤条件];
      

    2. where 和 having  的区别
      1. 执行时机不同:where 是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
      2. 判断条件不同:where 不能对聚合函数进行判断,而 having 可以。
    3. 注意:
      1. 执行顺序: where > 聚合函数 > having
      2. 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
    4. 排序查询
      1. 语法
        SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式,字段2 排序方式2;
        

      2. 排序方式
        1. ASC : 升序(默认值)
        2. DESC : 降序
      3. 注意:如果是多个字段,当第一个字段值相同时,才会根据第二个字段进行排序。 
  5.   分页查询
    1. 语法
      SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
       
    2. 注意
      1. 起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数
      2. 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
      3. 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。 
  6. DQL-执行顺序:FROM ---> WHERE ---> GROUP BY ---> SELECT ---> ORDER BY  ----> LIMIT 
DCL语句
  1. 查询用户
    USE mysql;
    SELECT * FROM user;

  2. 创建用户
    CREATE USER '用户名'@'主机名' IFENTIFIED BY '密码';

  3. 修改用户密码
    ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';

  4. 删除用户
    DROP USER '用户名'@'主机名'; 
  5. 注意:

    1. 主机名可以使用 % 通配。

    2. 这类SQL开发人员操作比较少,主要是DBA (Database Administrator 数据库管理员)使用。

  6. DCL - 控制权限
    权限说明
    ALL, ALL PRIVILEGES所有权限
    SELECT查询数据
    INSERT插入数据
    UPDATE修改数据
    DELETE删除数据
    ALTER修改表
    DROP删除数据库/表/视图
    CREATE创建数据库/表

    1. 查询权限
      SHOW GRANTS FOR '用户名'@'主机名';
    2. 授予权限

      GRANT 权限列表 ON 数据库.表名 TO '用户名'@'主机名';
    3. 撤销权限

      REVOKE 权限列表 ON 数据库.表名 FROM '用户名'@'主机名';
    4. 注意:

      1. 多个权限之间,使用逗号分隔。

      2. 授权时,数据库名和表名可以使用 * 进行通配,代表所有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值