【黑马JavaWeb+AI知识梳理】后端Web基础03 - MySQL概述

MySQL概述

数据库:DataBase(DB),存储和管理数据的仓库

数据库管理系统:DataBase Management System(DBMS),操纵和管理数据库的大型软件

SQL:Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。

安装

连接

  • 语法:mysql -u用户名 -p密码 [-h数据库服务器IP地址 -p端口号]

数据模型

  • 关系型数据库(RDBMS):建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

  • 特点:

    • 使用表存储数据,格式统一,便于维护

    • 使用SQL语言操作,标准统一,使用方便,可用于复杂查询

  • 数据库 -> 表 -> 数据(记录)


SQL语句

操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准

分类 全程 说明
DDL D ata D efinition Language 数据定义语言,用来定义数据库对象(数据库,表,字段)
DML D ata M anipulation Language 数据操作语言,用来对对数据库表中的数据进行增删改
DQL D ata Q uery Language 数据查询语言,用来查询数据库中表的记录
DCL(DBA,数据库管理员控制) D ata C ontrol Language 数据控制语言,用来创建数据库用户、控制数据库的访问权限

DDL

数据库

  • 操作语法

    下文中的database,也可以替换成schema,如:create schema db01; MySQL8版本中,默认字符集为utf8mb4

    • 查询所有数据库

      show databases;

    • 查询当前数据库

      select database();

    • 使用/切换数据库

      use 数据库名;

    • 创建数据库

      create database [if not exists] 数据库名 [default charset utf8mb4];

    • 删除数据库

      drop database [if exists] 数据库名;

  • MySQL

表结构-创建

  • 操作语法:

    sql 复制代码
    create table user(
    	id int [] comment '',
        username varchar(10) [] comment ''
    ) comment '';
    • 约束:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
      • not null
      • unique
      • primary key
      • default
      • foreign key
    • 目的:保证数据库中数据的正确性、有效性和完整性。
    • 实现主键自增:定义主键时指定关键字 auto_increment
    • 一个字段可以添加多个约束,但约束间要用空格分开
  • 数据类型:在满足业务需求的前提下,尽可能选择占用磁盘空间小的数据类型

    • 数值类型(unsigned:无符号,只能取0及正数)

      • 整数

      • 浮点数

        float(5,2):(整个数字长度,小数位个数)

      • 小数

    • 字符串类型:char定长(性能高);varchar变长(节约磁盘空间)

    • 日期时间类型:date、datetime

    • 基础字段:id、create_time、update_time

表结构-查询、修改、删除

  • 查询:show tables、desc emp、show create table emp;
  • 修改:
    • alter table emp add qq varchar(13) comment '';
    • alter table emp modify qq ...
    • alter table emp change qq qq_num varchar(15) comment 'QQ号码';
    • alter table emp drop column 字段名;
    • alter table emp rename to employee
  • 删除:drop table employee

DML

Data Manipulation Language(数据操作语言),用来对数据库中的数据记录进行增、删、改操作。

  • 添加数据(insert):insert into 表名 values 值
    • 插入数据时,指定字段顺序需要与值的顺序是一一对应的。
    • 字符串和日期型数据应该包含在引号中(单双均可,推荐单引号)。
    • 插入的数据大小/长度,应该在字段的规定范围内。
  • 修改数据(update):update 表名 set 字段名 = 值, 字段名 = 值, ...[where 条件];
  • 删除数据(delete):delete from 表名 [where 条件];

注意:

DQL

Data Query Language(数据查询语言),用来查询数据库表中的记录。

关键字:SELECT

select:字段列表

from:表名列表

where:条件列表

group by:分组字段列表

having:分组后条件列表

order by:排序字段列表

limit:分页参数

基本查询:查多个、查所有(*,开发中少用,不直观且影响效率)、设置别名(as)、去除重复(distinct)

条件查询:where 条件列表(与其他语法有区别的是:between ... and ... / in(...) / like 占位符(_:单个字符; % 任意个) / is (not) null)

and / or 组装多个查询条件

分组查询

分组之后,select后的字段列表不能随意书写,能写的一般是分组字段 + 聚合函数:select gender, count(*) from ...

执行顺序:where > 聚合函数 > having

  • 聚合函数(不统计null值):将一列数据作为一个整体,进行纵向计算:count / max / min / avg / sum

    count(*)(最推荐) count(字段) count(常量)(效率和*差不多)

  • select 字段列表 from 表名 [where 条件列表] group by 分组字段名 [having 分组后过滤条件];

    where与having的区别:

    • 执行时机:where在分组之前,不满足则不参与分组;having是对分组后的结果进行过滤
    • 判断条件:having可以对聚合函数进行判断

排序查询:select 字段列表 from 表名 [where 条件列表] [group by 分组字段名 having 分组后过滤条件] order by 排序字段 排序方式;

  • 方式:升序(asc),降序(desc);默认为升序asc,可以不写
  • 如果是多字段排序,当第一个字段相同时,会根据第二个字段进行排序

分页查询

select 字段列表 from 表名 [where 条件列表] [group by 分组字段名 having 分组后过滤条件] [order by 排序字段 排序方式] limit 起始索引, 查询记录数;

  • 起始索引从0开始
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
  • 如果起始索引为0,起始索引可以省略,直接简写为limit 10
  • 注意:项目开发中,前端传递过来的是页码,需要转换为起始索引
  • 公式:(页码-1)* 每页展示记录数

多表设计


多表查询


事务

相关推荐
文牧之3 分钟前
Oracle 的 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH 命令
运维·数据库·oracle
数据库幼崽17 分钟前
MySQL 8.0 OCP 1Z0-908 191-200题
数据库·mysql·ocp
萤火夜43 分钟前
MYSQL之复合查询
数据库·mysql
JWenzz144 分钟前
Redis删除策略
java·数据库·redis·缓存
肥肠可耐的西西公主1 小时前
前端(小程序)学习笔记(CLASS 2):WXML模板语法与WXSS模板样式
前端·学习·小程序
江畔柳前堤2 小时前
PyQt学习系列07-数据库操作与ORM集成
数据库·学习·算法·机器学习·架构·pyqt
逆袭的菜鸟X2 小时前
RxJS 高阶映射操作符详解:map、mergeMap 和 switchMap
前端
bubiyoushang8882 小时前
HTML5的新语义化标签
前端·html·html5
观无2 小时前
腾讯云Mysql实现远程链接
数据库·mysql
SmartSoftHelp开发辅助优化3 小时前
SmartSoftHelp 之 SQL Server 数据库安全备份与安全还原详解---深度优化版:SmartSoftHelp DeepCore XSuite
数据库·安全·oracle