数据库深入(学习笔记)

news2024/12/4 1:42:45

多表查询

概述

  • 多表查询:指从多张表中查询数据
  • 笛卡尔积:笛卡尔积是指在数学中,两个集合(A集合,B集合)的所有组合情况。

分类:

  • 连接查询

    • 内连接:相当于查询A、B交集部分数据
    隐式内连接:select 字段列表 from 表1,表2 where 条件...;
    显式内连接:select 字段列表 from 表1[inner] join 表2 on 连接条件...;
    
    # 多表查询
    select * from tb_dept,tb_emp;
    select * from tb_emp,tb_dept where tb_dept.id = tb_emp.dept_id;
    
    # 内连接
    # 查询员工姓名,及所属部门的名称(隐式内连接)
    select tb_emp.name,tb_dept.name  from tb_emp,tb_dept where tb_emp.dept_id = tb_dept.id;
    
    # 查询员工姓名,及所属部门的名称(显式内连接实现)
    select tb_dept.name,tb_emp.name  from tb_emp inner join tb_dept on tb_dept.id = tb_epm.dept_id;
    
    • 外连接
      • 左外连接:查询左表所有数据(包括两张表交集部分数据)
      • 右外连接:查询右表所有数据(包括两张表交集部分数据)
    左外连接: select 字段列表 from 表1 left [outer] join 表2 on 连接条件;
    右外连接: select 字段列表 from 表1 right[outer] join 表2 on 连接条件;
    
    # 外连接
    # 查询所有员工姓名,和对应的部门名称(左外连接)
    select tb_emp.name, tb_dept.name
    from tb_emp
             left join tb_dept on tb_dept.id = tb_emp.dept_id;
    # 查询部门表 所有 部门名称,和对应的员工名称(右外连接)
    select tb_emp.name, tb_dept.name
    from tb_emp
             right join tb_dept on tb_emp.dept_id = tb_dept.id;
    
  • 子查询

    概述:SQL语句中嵌套select语句,称为嵌套查询,又称子查询

    select * from t1 where column1 =(select column 1 from t2....)
    # 子查询外部的语句可以是insetr / update / delete / select 的任何一个,最常见的是select
    

    标量子查询

    • 子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式
    • 常用的操作符: = <> > >= < <=
    # 子查询
    # 查询"教研部"的所有员工信息
        # 查询教研部 的部门ID
    select id from tb_dept where name = '教研部';
        # 再查询该部门ID 下的员工信息
    select * from tb_emp where dept_id = 2;
    select * from tb_emp where dept_id = (select id from tb_dept where name = '教研部');
    # 查询方东白 入职之后的员工信息
    #     查询该员工的入职时间
    select tb_emp.entrydate from tb_emp where name = '方东白';
    #     再查询该员工入职之后的员工信息
    select * from tb_emp where entrydate > '2012-11-01';
    select * from tb_emp where entrydate > (select tb_emp.entrydate from tb_emp where name = '方东白');
    

    列子查询

    • 子查询返回的结果是一列(可以是多行)
    • 常用的操作符: in、not in等
    # 列子查询
    # A.查询教研部和咨询部的所以有员工信息
    # a.查询教研部和咨询部的部门ID
    select tb_dept.id from tb_dept where name = '教研部' or name = '咨询部';
    # b.根据部门ID 查询该部门下的员工信息
    select * from tb_emp where dept_id in(3,2);
    select * from tb_emp where dept_id in(select tb_dept.id from tb_dept where name = '教研部' or name = '咨询部');
    

    行子查询

    • 子查询返回的结果是一行(可以是多列)
    • 常用操作符: = 、 <>、in、not in
    # 行子查询
    # A.查询 韦一笑 的入职信息 及职位信息都相同的员工信息
    # a.查询 韦一笑的入职日期和职位
    select tb_emp.entrydate,job from tb_emp where name = '韦一笑';
    # b。查询与其入职日期及职位都相同的员工信息
    select * from tb_emp where entrydate = '2007-01-01' and job = 2;
    select * from tb_emp where (entrydate,job) = (select entrydate,job  from tb_emp where name = '韦一笑');
    

    表子查询

    • 子查询返回的结果是多行多列,常作为临时表
    • 常用的操作符:in

事务

介绍

概念事物是一组操作的集合,它是一个不可分割的工作单位,事物可会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败

注意事项:默认MySQL的事物是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。

事务控制:

  • 开启事务: start transaction/begin
  • 提交事务:commint;
  • 回滚事务:rollback;

事务的四大特性

  • 原子性:事务是不可分割的最小单元,要么全部成功,要么全部失败
  • 一致性:事务完成时,必须使所有的数据都保持一致状态
  • 隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
  • 持久性:事务一旦提交或回滚,它对数据库中的数据的该表就是永久的。

索引

介绍

索引(index)是帮助数据库高效获取数据数据结构

优点

  • 提高数据查询的效率,降低数据库的IO成本
  • 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗

缺点:

  • 索引会占用存储空间
  • 索引大大提高了查询效率,同时却也降低了insert、update、delete的效率

结构

MySQL数据库支持的索引结构有很多,如Hash索引、B+Tree索引(多路平衡搜索树)、Full-Text索引等。如果没有特别指明,都是默认的B+Tree结构组织的索引。

语法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2252735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何让控件始终处于父容器的居中位置(父容器可任意改变大小)

前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任软件经理&#xff0c;从事C#上位机软件开发8年以上&#xff01;我们在C#开发winform程序的时候&#xff0c;有时候需要将一个控件居中显示&#xff0c…

Python 调用 Umi-OCR API 批量识别图片/PDF文档数据

目录 一、需求分析 二、方案设计&#xff08;概要/详细&#xff09; 三、技术选型 四、OCR 测试 Demo 五、批量文件识别完整代码实现 六、总结 一、需求分析 市场部同事进行采购或给客户报价时&#xff0c;往往基于过往采购合同数据&#xff0c;给出现在采购或报价的金额…

【QT】背景,安装和介绍

TOC 目录 背景 GUI技术 QT的安装 使用流程 QT程序介绍 main.cpp​编辑 Wiget.h Widget.cpp form file .pro文件 临时文件 C作为一门比较古老的语言&#xff0c;在人们的认知里始终是以底层&#xff0c;复杂和高性能著称&#xff0c;所以在很多高性能需求的场景之下…

Linux内核编译流程(Ubuntu24.04+Linux Kernel 6.8.12)

万恶的拯救者&#xff0c;使用Ubuntu没有声音&#xff0c;必须要自己修改一下Linux内核中的相关驱动逻辑才可以&#xff0c;所以被迫学习怎么修改内核&编译内核&#xff0c;记录如下 准备工作 下载Linux源码&#xff1a;在Linux发布页下载并使用gpg签名验证 即&#xff1a…

【阅读笔记】Android广播的处理流程

关于Android的解析&#xff0c;有很多优质内容&#xff0c;看了后记录一下阅读笔记&#xff0c;也是一种有意义的事情&#xff0c; 今天就看看“那个写代码的”这位大佬关于广播的梳理&#xff0c; https://blog.csdn.net/a572423926/category_11509429.html https://blog.c…

linux下Qt程序部署教程

文章目录 [toc]1、概述2、静态编译安装Qt1.1 安装依赖1.2 静态编译1.3 报错1.4 添加环境变量1.5 下载安装QtCreator 3、配置linuxdeployqt环境1.1 在线安装依赖1.2 使用linuxdeployqt提供的程序1.3 编译安装linuxdeployqt 4、使用linuxdeployqt打包依赖1.1 linuxdeployqt使用选…

【PHP】部署和发布PHP网站到IIS服务器

欢迎来到《小5讲堂》 这是《PHP》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言安装PHP稳定版本线程安全版解压使用 PHP配置配置文件扩展文件路径…

视觉经典神经网络学习01_CNN(1)

一、概述 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;是一种专门用于处理具有网格状结构数据的深度学习模型。最初&#xff0c;CNN主要应用于计算机视觉任务&#xff0c;但它的成功启发了在其他领域应用&#xff0c;如自然语言处理等。…

【golang】单元测试,以及出现undefined时的解决方案

单元测试 要对某一方法进行测试时&#xff0c;例如如下这一简单减法函数&#xff0c;选中函数名后右键->转到->测试 1&#xff09;Empty test file 就是一个空文件&#xff0c;我们可以自己写测试的逻辑 但是直接点绿色箭头运行会出问题&#xff1a; 找不到包。我们要在…

DVWA靶场通关——DOM型XSS漏洞

一、DOM型XSS攻击概述 DOM型XSS&#xff08;DOM-based Cross-Site Scripting&#xff0c;DOM XSS&#xff09;是一种跨站脚本攻击&#xff08;XSS&#xff09;的变种&#xff0c;它与传统的反射型XSS&#xff08;Reflected XSS&#xff09;或存储型XSS&#xff08;Stored XSS&a…

【Unity 动画】设置跟运动(Apply Root)模型跟着动画产生位移

一、导入的动画本身必须有跟随动画产生位移或者旋转的效果 二、导入Unity后 在Unity中&#xff0c;根运动&#xff08;Root Motion&#xff09;是指动画中角色根节点的移动和旋转。根节点通常是角色的根骨骼&#xff08;Root Bone&#xff09;&#xff0c;它决定了角色的整体…

Spring AI 框架介绍

Spring AI是一个面向人工智能工程的应用框架。它的目标是将Spring生态系统的设计原则&#xff08;如可移植性和模块化设计&#xff09;应用于AI领域&#xff0c;并推广使用pojo作为AI领域应用的构建模块。 概述 Spring AI 现在(2024/12)已经支持语言&#xff0c;图像&#xf…

C++小问题

怎么分辨const修饰的是谁 是限定谁不能被改变的&#xff1f; 在C中&#xff0c;const关键字的用途和位置非常关键&#xff0c;它决定了谁不能被修改。const可以修饰变量、指针、引用等不同的对象&#xff0c;并且具体的作用取决于const的修饰位置。理解const的规则能够帮助我们…

近几年,GIS专业的五类就业方向!

近二十几年来&#xff0c;地理信息科学毕业生的就业方向在不断发生变化。 早期的地理信息科学技术主要应用于政府部门&#xff0c;因此学生就业主要在高校、交通运输、规划勘测设计、国土、矿业、水利电力、通讯、农林、城市建设、旅游等国家政府部门或事业单位。 随着地理信…

【Maven】继承和聚合

5. Maven的继承和聚合 5.1 什么是继承 Maven 的依赖传递机制可以一定程度上简化 POM 的配置&#xff0c;但这仅限于存在依赖关系的项目或模块中。当一个项目的多个模块都依赖于相同 jar 包的相同版本&#xff0c;且这些模块之间不存在依赖关系&#xff0c;这就导致同一个依赖…

2、Three.js初步认识场景Scene、相机Camera、渲染器Renderer三要素

三要素之间关系&#xff1a; 有了虚拟场景Scene&#xff0c;相机录像Camera&#xff0c;在相机小屏幕上看到的Renderer Scene当前空间 Mesh人在场景 Camera相机录像 Renderer显示器上 首先先描述下Scene&#xff1a; 这个场景为三要素之一&#xff0c;一切需要展示的东西都需…

工厂方法模式的理解和实践

在软件开发中&#xff0c;设计模式是一种经过验证的解决特定问题的通用方案。工厂方法模式&#xff08;Factory Method Pattern&#xff09;是创建型设计模式之一&#xff0c;它提供了一种创建对象的接口&#xff0c;但由子类决定要实例化的类是哪一个。工厂方法让类的实例化推…

Vue教程|搭建vue项目|Vue-CLI2.x 模板脚手架

一、项目构建环境准备 在构建Vue项目之前&#xff0c;需要搭建Node环境以及Vue-CLI脚手架&#xff0c;由于本篇文章为上一篇文章的补充&#xff0c;也是为了给大家分享更为完整的搭建vue项目方式&#xff0c;所以环境准备部分采用Vue教程&#xff5c;搭建vue项目&#xff5c;V…

无人机主控芯片技术与算法详解!

一、无人机主控芯片核心技术 高性能CPU&#xff1a; 无人机需要高性能的CPU来处理复杂的飞行控制算法、图像处理和数据传输等任务。目前&#xff0c;无人机的CPU主要有大疆自研的飞控系统、高通提供的无人机设计平台Snapdragon Flight&#xff0c;以及基于开源平台APM、Px4等…

GaussDB(类似PostgreSQL)常用命令和注意事项

文章目录 前言GaussDB&#xff08;类似PostgreSQL&#xff09;常用命令和注意事项1. 连接到GaussDB数据库2. 查看当前数据库中的所有Schema3. 进入指定的Schema4. 查看Schema下的表、序列、视图5. 查看Schema下所有的表6. 查看表结构7. 开始事务8. 查询表字段注释9. 注意事项&a…