基础篇(1) 数据库概述、基本SELECT语句、运算符、排序与分页

157 阅读4分钟

数据库概述

1.为什么要使用数据库

  • 持久化:
    • 数据持久化:将内存的数据保存到硬盘加以固化
    • 主要作用:将内存中的数据存储在关系型数据库

2.数据库与数据库管理系统

  • DB:数据库:本质为一个文件系统
  • DBMS:数据库管理系统:如MySQL
  • SQL:结构化查询语句:与数据库通信的语言

3.RDBMS 与 非RDBMS

3.1 关系型数据库(RDBMS)

  • 把复杂的数据结构归结为简单的 二元关系 (即二维表格)
  • 以 row 和 column 的形式存储数据,一系列 行与列 被称为 table, 一组表组成一个 database
  • 表与表之间的数据记录有 关系
  • 优势
    • 复杂查询:用SQL语句在多表间做复杂的数据查询
    • 事务支持:对于高安全性能的数据访问要求得以实现

3.1 非关系型数据库

  • 基于键值对存储,性能高

4. 关系型数据库设计规则

  • 典型数据结构: 数据表, 其组成都是 结构化

4.1 表、记录、字段

  • E-R(实体-联系)模型中有三个主要概念是: 实体集属性联系集
    • 实体集 对应 表
    • 实体 对应 行(也称为一条记录)
    • 属性 对应 列(也称为一个字段) image.png

4.2 表的关联

4.2.1 一对一
  • 实际场景运用不多,因为可以创建成一张表 image.png
4.2.2 一对多
  • 常见实例场景: 客户表和订单表 , 分类表和商品表 , 部门表和员工表 image.png
4.2.3 多对多

产品-订单 一个订单可以有多个产品,一个产品可以出现在多个订单 image.png

4.2.4 自我引用

image.png

基本SELECT语句

1. 杂谈

1.1 SQL 分类

  • DDL:数据定义语言:CREATE 、 DROP 、 ALTER
  • DML:数据操作语言:INSERT 、 DELETE 、 UPDATE 、 SELECT
  • DCL:数据控制语言:GRANT 、 REVOKE 、 COMMIT 、 ROLLBACK 、 SAVEPOINT

1.2 数据导入指令

source d:\xxx.sql;

1.3 显示表结构

DESC table;

2. 基本SELECT语句

  • 查询语句
    SELECT field1, field2 FROM table1;
    
  • 别名 AS
    SELECT field1 as f1, field2 as f2 FROM table1 as t1;
    
  • 去除重复行 DISTINCT
    SELECT DISTINCT field1, field2 FROM table1 ;
    
    • DISTINCT 需放在所有列名前,对所有列的组合进行去重
  • 空值 null
    • 空值参与运算:运算结果全为null 。
    • null长度为空,但占用空间
  • 常数
    SELECT 'lfd' as constField field1 FROM table1 ;
    
    • 新增一列,列名为 constField, 内容为 lfd

3. 过滤数据

  • WHERE: 紧跟在 FROM

运算符

0. NULL

任何计算、比较 带有 NULL 结果均为 NULL

1. 算数运算符

  • 数值与非数值相加,非数值类型尝试转为数值('1' => 1),转换失败则按0计算
  • 一个数 乘除整数1仍得原数
  • 一个数除以整数 无论是否除尽都变为浮点数
  • 一个数除以0 为 NULL

2. 比较运算符

  • <=> :安全等于运算符:能对 NULL 进行判断

  • 非符号运算符 image.png

    • BETWEEN AND 左右都是闭区间
    • LIKE 运算符的通配符
      • %:匹配0个或多个字符
      • _:只能匹配一个字符
    • ESCAPE :自定义转义字符
      • \:转义字符
      • ESCAPE '$':将 $ 定义为转义字符
        • WHERE job_id LIKE 'IT$_%' escape '$';:转义后匹配 IT_ 加任意数量的任意字符,否则为 IT 加至少一个的任意字符
    • REGEXP 正则表达式
      • ^匹配以该字符后面的字符开头的字符串。
      • $匹配以该字符前面的字符结尾的字符串。
      • .匹配任何一个单字符。
      • [...]匹配在方括号内的任何字符。
        • [abc]匹配“a”或“b”或“c”。
        • 为了命名字符的范围,使用一个-
          • [a-z]匹配任何字母,而
          • [0-9]匹配任何数字。
      • *匹配零个或多个在它前面的字符。
        • x*匹配任何数量的‘x’字符
        • [0-9]*匹配任何数量的数字,
        • *匹配任何数量的任何字符。

3. 逻辑运算符

image.png

  • AND 优先级高于 OR

排序与分页

1. 排序数据

1.1 ORDER BY

  • ASC:升序
  • DESC:降序

多列排序:第一列有相同值后对第二列进行排序

SELECT name, id FROM table ORDER BY field1 DESC, field2 ASC;

2. 分页

SELECT filed FROM table LIMIT 偏移量 , 返回行数;

LIMIT 关键字放在 SELECT 语句最后

  • 偏移量:从哪行开始显示
    • 第一条记录偏移量为0
    • 可不指定,即从第一条记录开始

MySQL8.0 可以使用 LIMIT 3 OFFSET 4 等于 LIMIT 4,3