数据库基础

一、数据库的基本知识

  1. 数据库:存储数据的仓库,数据是有组织的进行存储(DB)
  2. 数据库管理系统:操作和管理数据库的大型软件(DBMS)
  3. SQL:操作关系型数据库的一门编程语言,定义了一套关系型数据库的统一标标准(SQL)
  4. 关系型数据库:建立在关系模型基础之上,由多张相互连接的二维表组成的数据库。
    • 使用表存储数据,格式统一便于维护
    • 使用SQL语言操作,标准统一,使用方便
  5. mysql数据库的数据模型
    mysql数据库的数据模型

二、SQL

  1. SQL通用语法

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

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

三、DDL语句

  1. DDL语句——数据库操作

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

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

    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE 表名(
    字段1 字段1类型[COMMENT 字段1注释],
    字段2 字段2类型[COMMENT 字段2注释],
    字段3 字段3类型[COMMENT 字段3注释],
    字段4 字段4类型[COMMENT 字段4注释],
    ....
    字段n 字段n类型[COMMENT 字段n注释]
    )[COMMENT 表注释];
  4. DDL——表操作——数据类型

    • MySQL中的数据类型,主要分为三类:数值类型,字符串类型,日期时间类型;
      数据类型
  5. DDL——表操作——修改

    • 添加字段
      1
      ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
    • 修改字段名和字段类型
      1
      ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
    • 删除字段
      1
      ALTER TABLE 表名 DROP 字段名;
    • 修改表名
      1
      ALTER TABLE 表名 RENAME TO 新表名
  6. DDL——表操作——删除

    • 删除表
      1
      DROP TABLE [IF EXISTS] 表名;
    • 删除指定表,并重新创建该表
      1
      TRUNCATE TABLE 表名;

四、DML语句

  1. DML语句的操作

    • 添加数据:INSERT
    • 删除数据: UPDATE
    • 修改数据: DELETE
  2. DML——添加数据

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

    • 修改数据库数据
      1
      UPDATA 表名 SET 字段名1=1,字段名2=2,...[WHERE 条件];
    • DML——删除数据(不带条件删除全部)
      1
      DELETE FROM 表名 [WHERE 条件]

      五、DQL语句

  4. 查询关键字SELECT

  5. DQL——语法

    1
    2
    3
    4
    5
    6
    7
    SELECT 字段列表 
    FROM 表名列表
    WHERE 条件列表
    GROUP BY 分组字段列表
    HAVING 分组后条件列表
    ORDER BY 排序字段列表
    LIMIT 分页参数
  6. 查询分类

    • 基本查询
    • 条件查询(WHERE)
    • 聚合查询(count、max、min、avg、sum)
    • 分组查询(GROUP BY)
    • 排序查询(ORDER BY)
    • 分页查询(LIMIT)
  7. DQL——基本查询

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

    • 语法
      1
      SELECT 字段列表 FROM 表名 WHERE 条件列表;
    • 条件
      条件查询的条件
  9. DQL——聚合函数(注:null值不参与所有聚合函数的运算)

    • 介绍:将一列数据作为一个整体,进行纵向计算。
    • 常见的聚合函数
      函数 功能
      count 统计数量
      max 最大值
      min 最小值
      avg 平均值
      sum 求和
    • 语法:
      1
      SELECT 聚合函数(字段列表) FROM 表名;
  10. DQL——分组查询

    • 语法:
      1
      SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
    • WHEREHAVING的区别
      • 执行机制不同:where是分组之前进行过滤,不满住where条件,不参与分组。而having是分组后对结果进行过滤。
      • 判断条件不同:where不能对聚合函数进行判断,而having可以。
    • 注意:
      • 执行顺序:where > 聚合函数 > having ;
      • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无意义。
  11. DQL——排序查询

    • 语法:
      1
      SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;
    • 排序方式:
      • ASC:升序(默认值,可以省略)
      • DESC:降序
    • 注:如果多字段排序,当第一个字段相同时,才会根据第二个字段进行排序。
  12. DQL——分页查询

    • 语法:
      1
      SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
    • 注:
      • 起始索引从0开始,其实索引=(查询页码-1)*每页显示记录数。
      • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
      • 如果要查询的是第一页数据,起始索引可以省略,直接写 limit 10
  13. DQL——执行顺序

    • FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT;

六、DCL语句

  1. DCL语句的基本使用

    • 查询用户
      1
      2
      USE mysql;
      SELECT * FROM user;
    • 创建用户
      1
      CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
    • 修改用户密码
      1
      ALTER  USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
    • 删除用户
      1
      DROP BY '用户名'@'主机名';
    • 注:
      • 主机名可以使用 % 通配;
      • 这类SQL开发人员操作得比较少,主要是DBA(Database Administrator 数据库管理员)使用;
  2. DCL——权限控制

    • 查询权限
      1
      SHOW GRANTS FOR '用户名'@'主机名';
    • 授予权限
      1
      GRANTS 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'; 
    • 撤销权限
      1
      REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';