当前位置: 首页 > news >正文

【黑马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语句

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

分类全程说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCL(DBA,数据库管理员控制)Data Control 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

表结构-创建

  • 操作语法:

    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)* 每页展示记录数

多表设计


多表查询


事务

相关文章:

  • 服务器日志监控与分析:提前发现黑客攻击迹象
  • 基于SpringBoot+Vue的社区医院信息平台设计与实现
  • Redis淘汰策略
  • 如何使用CAMEL框架来搭建一个简单实用的**旅游出行规划助手**
  • AI架构分层原则
  • Flask-SQLAlchemy数据库查询:query
  • DataX 的大概简单介绍(与Kettle做对比介绍)
  • 华为云Astro前端页面数据模型选型及绑定IoTDA物联网数据实施指南
  • fpga-编程线性序列机和状态机
  • 六、【前端启航篇】Vue3 项目初始化与基础布局:搭建美观易用的管理界面骨架
  • Claude 4 在 SWE-Bench 上得分 72.7%:对编程的意义
  • 亚马逊跨境电商合规风暴:从美国儿童背带召回事件看行业变革
  • 用 3D 可视化颠覆你的 JSON 数据体验
  • 单元测试学习笔记
  • 开发指南118-背景渐变特效
  • 三步快速部署一个本地Windows/Linux大语言模型ChatGLM(环境配置+权重下载+运行)
  • Spring Boot集成Resilience4j实现微服务容错机制
  • 深入探索 CSS 中的伪类:从基础到实战​
  • 分享|16个含源码和数据集的计算机视觉实战项目
  • 聚铭安全管家平台2.0重磅发布——大模型智驱高效降本新方向
  • 句容网站建设/什么关键词可以搜到那种
  • 建设旅游网站/搜外网友情链接
  • 日照网站网站建设/成人职业培训学校
  • 网站做app的软件叫什么/怎么样把广告做在百度上
  • 注册网站要百度实名认证安不安全/郑州seo优化哪家好
  • 网站制作的基本步骤/2023年8月新闻热点事件