首页 > 数据库 >MySQL第一阶段:多表查询、事务

MySQL第一阶段:多表查询、事务

时间:2024-07-26 18:25:02浏览次数:17  
标签:事务 多表 -- 连接 查询 MySQL tb id 第一阶段

        继续我的MySQL之旅,继续上篇的DDL、DML、DQL、以及一些约束,该到了多表查询和事务的学习总结,以及相关的案例实现,为未来的复习以及深入的理解做好知识储备。

目录

多表查询

连接查询

内连接

外连接

子查询

事务 

事务简介

事务操作

事务四大特征


多表查询

多表查询分为连接查询和子查询

连接查询

连接查询分为内连接与外连接

内连接

MySQL里把inner join 称为等值连接,就是需要指定出来等值的连接条件inner  join划分在一起

  • 必须有等值条件;
  • 内连接可能会丢失信息;(内连接是从结果表中删除与其他被连接表中没有匹配行的所有行)
  • 重点:内连接,只会查询出来匹配行。
// 第一种只包含where    隐式内连接
select 字段列表 from 表1,表2... where 条件;
// 第二种:join…on
SELECT * FROM table1 a JOIN table2 b on a.id=b.id;
// 显式内连接  inner join ……on
SELECT * FROM table1 a inner join table2 b on a.id=b.id;
-- 多表查询
-- 笛卡尔积
SELECT
	tb_goods.id,
	tb_order.id,
	tb_goods.title,
	tb_goods.price 
FROM
	tb_goods
	CROSS JOIN tb_order;-- 连接查询--内连接
-- 隐式内连接     相当于查询两个集合的交集
-- select 字段列表 from 表1,表2…… where 条件;
SELECT
	tb_goods.id,
	tb_order.id,
	tb_goods.title,
	tb_goods.price 
FROM
	tb_goods
	CROSS JOIN tb_order 
WHERE
	tb_goods.id = tb_order.id;-- 显示内连接
-- select 字段列表 from 表1 [INNER] join 表2 on 条件
SELECT
	* 
FROM
	tb_goods a
	INNER JOIN tb_order b ON a.id = b.id;

外连接

1. 左外连接 left inner join

左边为主表,左边所有数据都显示,右边显示相关联,剩余的显示不关联的 null

-- 外连接
-- 左外连接
select * from tb_goods a left join tb_order b on a.id = b.id;

右外连接,right inner join

右边为主表右边所有数据都显示,左边显示相关联,剩余的显示不关联的 null


-- 右外连接
SELECT * from tb_goods a right join tb_order b on a.id = b.id;

子查询

        概念 :

                查询中嵌套查询,称嵌套查询为子查询

        子查询根据查询结果不同,作用不同:

                单行单列、多行单列、多行多列几类

        实质:

                查询之中嵌套着一个查询,这个嵌套进去的查询

事务 

数据库中的一种特性

事务简介

数据库的事务是一种机制、一个操作序列,包含了一组数据库操作命令

事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败

事务是一个不可分割的工作逻辑单元

python 中事务的提交不是自动的,MySQL 的事务是自动提交的

事务操作

一共三个操作

-- 开启事务
start transaction;
// 或者   begin
-- 提交事务
commit;
-- 回滚事务
rollback;

事务四大特征

A C I D四大特性

原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败

一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态

隔离性(lsolation):多个事务之间,操作的可见性,多个事件的独立性

持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

-- 1.查询事务的默认提交方式,默认值为1自动提交,手动为0
select @@autocommit;
-- 2.修改事务的提交方式为手动提交,则执行下方修改代码后不会提交,即是不存在永久改变
set @@autocommit = 0;
-- 3.李四金额-500
update account set money = money - 500 where name = '李四';

标签:事务,多表,--,连接,查询,MySQL,tb,id,第一阶段
From: https://blog.csdn.net/2301_80304567/article/details/140637211

相关文章

  • MySQL索引、事务(数据库管理与高可用)
    一、索引的概念索引:排序的列表,对数据进行快速的查询;针对不同的产品需求,或者不同的数据库结构,会创建不同的索引;1:普通索引(默认索引)2:唯一索引(可以多个)3:主键索引(只能一个)4:组合索引(最左查询)5:全文索引oracle:B树索引将表一份为二进行查询;701--3536--701--1718--35先把......
  • 【MySQL进阶之路 | 高级篇】表级锁之S锁,X锁,意向锁
    1.从数据操作的粒度划分:表级锁,页级锁,行锁为了尽可能提高数据库的并发度,每次锁定的数据范围越小越好,理论上每次只锁定当前操作的数据的方案会得到最大的并发度,但是管理锁是很耗资源的事情(涉及获取、检查、释放锁等动作)。因此数据库系统需要在高并发响应和系统性能两方面进行......
  • 【MySQL进阶之路 | 高级篇】行锁之记录锁和间隙锁
    1.InnoDB的行锁行锁(rowlock)也称为记录锁。顾名思义,就是锁住某一行(某个记录row)。需要注意的是,MySQL服务层并没有行锁机制,行级锁只在存储引擎层实现。优点:锁定力度小,发生锁冲突概率低,可以实现的并发度高。缺点:对于锁的开销比较大,加锁会比较慢,容易出现死锁的情况。InnoDB与M......
  • MySQL 学习笔记 进阶(索引 下)
    索引 索引-分类 在InnoDB中存储引擎中,根据索引的存储形式,又可以分为以下几种: 聚集索引选取规则:如果存在主键,主键索引就是聚集索引。如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏......
  • Fatal error: Call to undefined function mysql_connect() in …
    错误记录:Fatalerror:Calltoundefinedfunctionmysql_connect()in…错误原因:运行环境问题解决方案:你的PHP不支持mysql_connect()函数。PHP是一种模块化的设计,除了核心的内容,其他都是可选的。之所以不支持,是因为在编译PHP时没有加入对MYSQL数据库的支持。原因2:......
  • MySQL数据库安装及使用
    MySQL安装在线安装ubuntusudoapt-getinstallmysql-server#服务器sudoapt-getisntallmysql-client#客户端sudoapt-getinstalllibmysqlclient-dev#开发接口redhatyuminstallmysql-serveryuminstallmysql-clientyuminstalllibmy......
  • Rocky Linux 8安装MySQL8
    先去mysql官网:https://downloads.mysql.com/archives/community/选择对应的版本下载,然后上传到Linux机器上或者直接在linux上wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-8.4.0-1.el8.x86_64.rpm-bundle.tar下载资源使用tar-xvfmysql-8.4.0-1.......
  • mysql8: 新建账号和权限操作
    一,允许从任何ip访问时,用%CREATEUSER'myusername'@'%'IDENTIFIEDBY'my_password';GRANTALLPRIVILEGESON`mybase`.*TO'myusername'@'%';FLUSHPRIVILEGES;注意:这种做法在生产环境中不要使用,不够安全,     只用于内部开发时工程师共同访问的内部环境二,......
  • MySql 字段类型长度问题理解
    mysql中字段长度理解字符长度设计表中设置的是字符长度,任意字符都占一个字符长度,使用char_length函数获取char_length(`name`)字节长度字节长度和数据表的字符集有关。length获取字节长度。length(`name`)在mysql中如果是latin1字符集下,一个中文汉字占2个字节数;......
  • windows中MySQL迁移数据存放盘符位置
    由于刚开始安装mysq时都选择了默认安装,数据存放在了c盘,后面数据量过大c盘不堪重负,所以迁移数据到D盘windows中MySQL迁移数据存放盘符位置参考:https://blog.csdn.net/ZYX121799/article/details/136474869查看MySQL的数据存放位置showglobalvariableslike"%datadir%"......