首页 > 数据库 >MySQL-基础

MySQL-基础

时间:2024-01-29 19:23:36浏览次数:36  
标签:事务 基础 外键 dept emp MySQL id select

1.DQL语句完整语法和执行顺序
select ... from ... where ... group by ... having ... order by ... limit ...
顺序:5123467

2.添加外键
alter table emp add constraint f_key foreign key (dept_id) references dept(id) on update cascade on delete cascade;
dept为父表,id为主键字段;emp为子表,dept_id为外键字段;f_key为外键名称;cascade是一种同步跟新的级联行为
删除外键:alter table emp drop foreign key f_key;

3.多表查询
(1)一对多
案例:部门与员工的关系
关系:一个部门对应多个员工,一个员工对应一个部门。实现:在多的一方建立外键,指向一的一方的主键
(2)多对多
案例:学生与课程的关系
关系:一个学生可以选修多门课程,一门课程也可以供多个学生选择实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

(3)一对一
案例:用户与用户详情的关系
关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率
实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)

4.内连接
隐式:select * from emp, dept where emp.dept_id=dept.id;
显式:select * from emp inner join dept on emp.dept_id=dept.id;

5.左/右外连接
select * from emp e, dept d left/right join on e.dept_id=d.id;

6.自连接(必须取表的别名)
案例:查询员工及其所属领导的名字
select a.name, b.name from emp a, emp b where a.id=b.managerid;
a查领导名字,b查员工名字

7.联合查询
案例:将薪资低于5000的员工,和年龄大于50 岁的员工全部查询出来
select * from emp where salary<5000
union all
select * from emp where age>50;

8.子查询(嵌套查询)
SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2 );

9.事务 :
(1)概念
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
就比如:张三给李四转账10oo块钱,张三银行账户的钱减少1000,而李四银行账户的钱要增加1000。这一组操作就必须在一个事务的范围内,要么都成功,要么都失败。

(2)事务操作
查看事务:select @@autocommit;
关闭事务自动提交:set @@autocommnit=0;
开启事务:start transaction/begin;
提交事务:commit;
回滚事务:rollback;
(3)事务四大特性(ACID)
原子性(Atomicity)︰事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
一致性(consistency)︰事务完成时,必须使所有的数据都保持一致状态。
隔离性(Isolation)︰数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
持久性(Durability)︰事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

10.并发事务问题
(1)赃读:一个事务读到另外一个事务还没有提交的数据。
(2)不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。
(3)幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了 "幻影"。

11.事务隔离级别

查询事务隔离级别:select @@transaction_isolation;
设置事务隔离级别:set session/global transaction isolation level 级别;

参考B站课程:MySQL数据库入门到精通

标签:事务,基础,外键,dept,emp,MySQL,id,select
From: https://www.cnblogs.com/fly-smart/p/17995118

相关文章

  • MySQL迁移人大金仓kingbase
    前言:前段时间接到一个任务,说是数据库要由mysql改成人大金仓,项目代码也需要修改适配(另一个同事负责),而我则是负责数据库的迁移工作,期限是七天(2024-01-26已上线),在这之前我甚至都没听过人大金仓这个名词,而且也没有相关文档的交接更没有技术人员支撑,起初我还让项目负责人去跟集团的DBA......
  • MySQL金额数字转为大写中文
    MySQL版本:5.7.34-log*通过创建函数的方法,目前可以实现整数金额的转换,网上暂未找到MySQL版本的故自己参照其他数据库版本的改编了一下,*仅供参考!!!使用方法:selectrmb(10000)CREATEDEFINER=`root`@`%`FUNCTION`rmb_upper`(jeint)RETURNSvarchar(200)DETERMINISTICBE......
  • 配置mysql (Redhat)
    前提准备:MySQL下载 https://dev.mysql.com/downloads/mysql/ 当前安装版本5.71.检查是否安装mysql:rpm-aq|grepmysql 如果有输出则先停止服务:servicemysqldstart批量删除包rpm-eXXX--nodeps2.检查mariadb:rpm-qa|grepmariadb如果有输出则删除相关包 rpm-e......
  • 【MYSQL】4、mysql中的Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests
    原文链接:https://blog.csdn.net/qq_35462323/article/details/1318115931、Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests的含义?Innodb_buffer_pool_readsInnodb_buffer_pool_readsThenumberoflogicalreadsthatInnoDBcouldnotsatisfyfromthebuffer......
  • 解决MySQL设置时区时的错误Unknown or incorrect time zone: 'Asia/Shanghai'
    问题描述:在trino中配置了mysql.properties文件,但是通过trino客户端,执行命令showschemasfrommysql;查看数据库信息时报错:Errorlistingschemasforcatalogmysql:java.sql.SQLNonTransientConnectionException:Couldnotcreateconnectiontodatabaseserver.Attempted......
  • Golang学习--基础语法
    Golang学习Golang的优势极简单部署方式-可直接编译成机器码-不依赖其他库-直接运行即可部署静态类型语言-编译的时候能够检查出隐藏的大多数问题语言层面的并发-天生的基因支持-充分的利用多核强大的标准库-runtime系统调度机制-高效的GC垃圾回收-丰富的标准......
  • React-Navigation基础知识
    ReactNavigation在App中创建导航结构Web浏览器中,可以通过a链接到不同的页面,当用户按下后退按钮,浏览器从访问记录堆栈中弹出项目RN无法像浏览器一样管理访问路由,需要通过ReactNavigation实现ReactNavigation的本机堆栈导航器为App提供一种在屏幕之间转换和管理导航历史记录......
  • MySQL 常用工具
    系统数据库MySQL数据库安装完成后,自带了以下四个数据库,具体作用如下: 常用工具mysql该mysql不是指mysql服务,而是指mysql的客户端工具 mysqladminmysqladmin是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前状态、创建并删除数据库等。 my......
  • 5分钟快速入门GIS(GIS基础)(GIS当中常见数据)
    5分钟快速入门GIS(GIS基础)(GIS当中常见数据):https://blog.csdn.net/xiaopeixiaojun/article/details/117574745?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170651063316800227413988%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170......
  • GaussDB(for MySQL)剪枝功能,让查询性能提升70倍!
    作者,祝青平,华为云数据库内核高级工程师。擅长数据库优化器内核研发,9年数据库内核研发经验,参与多个TP以及AP数据库的研发工作。近日,华为云数据库社区下面有这样一条用户提问留言:请问,如何通过MySQL提升DISTINCT,尤其是多表连接下DISTINCT的查询效率?在回答这个问题之前,我们先了解一......