[MySQL-基础]SQL语句
作者:mmseoamin日期:2023-12-05

目录

 

hello! 这里是欧_aita的频道。

今日语录: 只有放弃才是真正的失败。

祝福语:愿你的代码生活充满注释,逻辑清晰,debug之路畅通无阻。

大家可以在评论区畅所欲言,可以指出我的错误,在交流中共同进步。

欢迎关注我的专栏
数据结构与算法  

C++

 MySQL数据库

SQL

SQL

SQL的特点:

SQL通用语法

SQL分类

DDL

DDL-数据库操作

        DDL-表操作

       查询

       创建

           数据类型

DML

     1.添加数据(INSERT)

      2.修改数据(UPDATE)

      3.删除数据(DELETE)

DQL

DQL-基本操作

查询多个字段

设置别名

去除重复记录

       DQL-语法

条件查询

            (1)条件符号

            (3)聚合函数

            ( 4)常见聚合函数

      2.分组查询     

            (1)语法

            (2)Where和having的区别

            (3)注意事项

      3.排序查询

            (1)语法

            (2)排序方式

       4.分页查询

执行顺序

DCL

 1.DCL-管理用户

      (1)查询用户

        (2)删除用户

        (3)修改用户密码

        (4)创建用户

2.DCL-权限控制

      (1)常用权限

       (2)查询权限

       (3)授予权限

         (4)  撤销权限


SQL

定义:SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系型数据库的标准化语言。它提供了一种简单而强大的方式,使用户能够定义、操作和控制数据库中的数据。

SQL

SQL的特点:

  1. 关系型数据库: SQL主要用于关系型数据库管理系统(RDBMS)。关系型数据库是一种以表格形式组织数据的数据库,其中数据通过表格之间的关系进行连接。

  2. 数据操作: SQL允许用户执行各种数据操作,包括插入(INSERT)、查询(SELECT)、更新(UPDATE)和删除(DELETE)等操作。这些操作使用户能够有效地管理数据库中的数据。

  3. 数据定义: SQL不仅可以用于操作数据,还可以用于定义数据库结构。这包括创建表(CREATE TABLE)、定义索引(CREATE INDEX)和定义约束(如主键、外键等)等。

  4. 数据控制: SQL还提供了对数据访问的控制,通过GRANT和REVOKE等命令可以授予或撤销用户对数据库对象的权限。

  5. 事务控制: SQL支持事务,通过BEGIN TRANSACTION、COMMIT和ROLLBACK等语句,可以确保在数据库操作中的一系列语句要么全部执行成功,要么全部失败。

SQL通用语法

  1. SQL语句单行或多行书写,以分号结尾。
  2. SQL语句可以使用空格/缩进来增强语句的可读性。
  3. MySQL数据库的SQL语句不区分大小写,关键字推荐使用大写。
  4. 注释:

           (1)单行注释:--注释内容 或 #注释内容(MySQL特有)。

           (2)多行注释:/*注释内容*/

SQL分类

  1. DDL   数据定义语言,用来定义数据库对象(数据库,表,字段)。
  2. DML   数据操作语言,用来对数据库表中的数据进行增删改查。
  3. DQL   数据查询语言,用来查询数据库中表的记录。
  4. DCL   数据控制语言,用来创建数据库用户。

DDL

定义:DDL(Data Definition Language,数据定义语言)是用于定义和管理数据库结构的SQL语言部分,包括创建、修改和删除表、索引等数据库对象。

DDL-数据库操作

  •       查询
  •                                          查询所有数据库:SHOW DATABASES;
  • 查询当前数据库:SELECT DATABASE();[MySQL-基础]SQL语句,第1张
  •       创建
  •          CREATE DATABASE[IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则];
  •       [MySQL-基础]SQL语句,第2张
  •        删除
  •            DROP DATABASE[IF EXISTS]数据库名;
  • [MySQL-基础]SQL语句,第3张
  •        使用
  •            USE 数据库名;
  • [MySQL-基础]SQL语句,第4张

            DDL-表操作

           查询
    1. 查询当前数据库所有表:SHOW TABLES;
    2. 查询表结构:DESC表名。
    3. 查询指定表的建表语句:SHOW CREATE TABLE表名;
           创建

                 CREATE TABLE 表名(

                        字段1 字段1类型[COMMENT 字段1注释],

                        字段2 字段2类型[COMMENT 字段2注释],

                        字段3 字段3类型[COMMENT 字段3注释],

                         ……

                        字段n 字段n类型[COMMENT 字段n注释]

    )[COMMENT 表注释];

    创建一个员工表 

    [MySQL-基础]SQL语句,第5张

               数据类型

                    MySQL中的数据类型有很多,主要分三类:数值类型、字符串类型、日期时间类型

               修改

    •               ( 添加 )  ALTER TABLE表名ADD 字段名 类型(长度)[COMMENT 注释][约束];
    •             ( 修改 )ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释][约束];
    •             ( 删除 ) ALTER TABLE 表名 DROP 字段名;
    •               ( 删除并且重新创建个表 ) TRUNCATE TABLE 表名;
    •               ( 重命名 ) ALTER TABLE 表名 RENAME 新表名;

      DML

      定义:DML(Data Manipulation Language,数据操作语言)是SQL的一部分,用于执行数据库中的数据操作,包括插入、更新、删除和查询等操作。

           1.添加数据(INSERT)

               --给指定字段添加数据

             (1)INSERT INTO表名(字段1,字段2,…)VALUES(值1,值2,…);

               --给全部字段添加数据

             (2)INSERT INTO表名VALUES(值1,值2,…);

               --批量添加数据

             (3)INSERT INTO表名(字段1,字段2,…)VALUES(值1,值2,…),(值1,值2,…);

      添加员工信息 

      [MySQL-基础]SQL语句,第6张

             (4)INSERT INTO表名VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…);

            2.修改数据(UPDATE)

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

            3.删除数据(DELETE)

                DELETE FROM 表名[WHERE 条件];

      [MySQL-基础]SQL语句,第7张

      DQL

      定义:DQL(Data Query Language,数据查询语言)是SQL的一部分,专注于执行数据库中的查询操作,主要包括SELECT语句用于检索数据。

      DQL-基本操作

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

      这是取别名的操作 

       [MySQL-基础]SQL语句,第8张

       这是去除重复记录的操作

      [MySQL-基础]SQL语句,第9张

             DQL-语法

      1. 条件查询

                    1. SELECT字段列表FROM表名WHERE条件列表;

       实际应用

      [MySQL-基础]SQL语句,第10张

                  (1)条件符号

        [MySQL-基础]SQL语句,第11张

                  (3)聚合函数
      •       介绍:将一列数据作为整体,进行纵向计算。

                    ( 4)常见聚合函数

        [MySQL-基础]SQL语句,第12张

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

         查询名字为两个字的员工(使用like __下划线占位符)

        [MySQL-基础]SQL语句,第13张

              2.分组查询     
                    (1)语法
        •        SELECT字段列表FROM表名[WHERE条件]GROUP BY分组字段名[HAVING分组后过滤条件];
                      (2)Where和having的区别
          • 判断时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
          • 判断条件不同:where不能对聚合函数进行判断,而having可以。

             [MySQL-基础]SQL语句,第14张

            [MySQL-基础]SQL语句,第15张

                        (3)注意事项
            • 执行顺序:where>聚合函数>having。
            • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
                    3.排序查询
                          (1)语法
              • SELECT 字段列表 FROM 表名 ORDER BY字段1 排序方式1,字段2 排序方式2;
                            (2)排序方式
                • ASC:升序(默认值)
                • DESC:降序

                  [MySQL-基础]SQL语句,第16张

                  注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

                         4.分页查询

                  SELECT字段列表FROM表名LIMIT起始索引,查询记录数;

                         注意:

                  • 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。
                  • 分页查询是数据库的方言,不同数据库有不同的实现,MySQL中是LIMIT。
                  • 如果查询的是第一页数据,起始索引可以忽略,直接简写为limit 10。

                     查询开始的6个员工信息,1页

                    [MySQL-基础]SQL语句,第17张

                    [MySQL-基础]SQL语句,第18张

                    执行顺序
                    1. From 表名列表
                    2. Where 条件列表
                    3. Group by 分组字段列表
                    4. Select 字段列表
                    5. Order by 排序字段列表
                    6. Limit 分页参数
                    7. Having 分组后条件列表

                    DCL

                    定义:DCL(Data Control Language,数据控制语言)是SQL的一部分,用于管理数据库访问权限,包括授予(GRANT)和撤销(REVOKE)用户对数据库对象的权限。

                     1.DCL-管理用户

                          (1)查询用户
                    • USE mysql;
                    • SELECT * FROM user;

                      [MySQL-基础]SQL语句,第19张

                       可以看见对应的数据表呈现出来了[MySQL-基础]SQL语句,第20张

                              (2)删除用户
                      • DROP USER ‘用户名’@’主机名’;

                        [MySQL-基础]SQL语句,第21张

                                (3)修改用户密码
                        • ALTER USER ‘用户名’@’主机名’ IDENTIFIED WITH mysql_native_password BY‘新密码‘;

                           [MySQL-基础]SQL语句,第22张

                          通过终端重新进入看密码是否改为123 

                          [MySQL-基础]SQL语句,第23张

                          成功登录,说明密码成功修改! 

                                  (4)创建用户
                          • CREATE USER ‘用户名’@‘主机名’ IDENTIFIED BY ‘密码’;[MySQL-基础]SQL语句,第24张
                          • USE mysql;[MySQL-基础]SQL语句,第25张
                          • SELECT * FROM user;

                                    注意:

                            •               主机名可以使用%通配。
                            •               这类SQL开发人员操作的比较少,主要是DBA(数据库管理人员)使用。

                              2.DCL-权限控制

                                    (1)常用权限

                              [MySQL-基础]SQL语句,第26张

                                     (2)查询权限
                              •           SHOW GRANTS FOR ‘用户名’@’主机名’;

                                 [MySQL-基础]SQL语句,第27张

                                可以看见itcast用户的权限 

                                [MySQL-基础]SQL语句,第28张

                                       (3)授予权限
                                •           GRANT 权限列表 ON 数据库名.表名 TO ‘用户名’@’主机名’;

                                   [MySQL-基础]SQL语句,第29张

                                           (4)  撤销权限
                                  •            REVOKE 权限列表 ON 数据库名.表名 FROM ‘用户名’@’主机名’;

                                    [MySQL-基础]SQL语句,第30张

                                    注意:

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

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