• 数据库分类

    关系型数据库

    行列,

    列如Mysql,oracle

    通过表和表之间,行和列之间的关系进行数据的存储

    非关系型数据库:

    Redis,MongDb

    以对象存储,同过对象的自身属性来决定

    表与表的关系

    一对一,一对多,多对多

外键特点

从表外键的值是对主表主键的引⽤。

从表外键类型,必须与主表主键类型⼀致。

声明外键约束语法

alter table 从表 add [constraint][外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);

SQL联合查询(内联,左联,右联,全联)

内联inner join,左联 left outer join,右联right outer join,全联,full outer join

建立临时表,

临时表只在当前链接可见,关闭连接时候,会自动删除并释放所有控件‘

此表可供你当次链接的操作里查询.

create temporary table 临时表名称

select 表字段名称 from 表名称

分页查询

limit 0,3: 从0开始查,查三条

约束:对表中的数据进行限定从而保证数据的有效性和完整性。

分类:主键约束:primary key

非空约束:not Null

唯一约束:unique

外键约束:foreign key

非空约束:

自动增长:使用auto_increment,可以来完成值的自动增长

添加主键约束并且完成,主键的自动增长。

多表之间的关系
一对一
一对多
多对多
数据库设计的范式
概念:设计数据库时候,需要遵循的一次要求
第一范式:每一列都是不可分割的原子数据项
第二范式:第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。 第三范式:需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。



内连接查询

​ 查询员工表的名称,性别,部门表的名称

select
t1.name,--员工表姓名
t1.sex,
t2.name--部门表的姓名
from empt1,dept t2
where
t1.deptid = t2.id

显示内连接

  1. ​ 语法:select 字段列表 from 表1 inner join 表2 on 条件

    外连接查询

    左外连接

    ​ 语法:select 字段列表 from 表1 left join 表2 on 条件

    ​ 查询的是左表所有的所有数据以及其交集部分

    右外连接:

    语法:select 字段列表 from 表1 left join 表2 on 条件

    ​ 查询的是左表所有的所有数据以及其交集部分

    子查询

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

    子查询的不同情况

    1.子查询的结果是单行单列

    子查询可以作为条件,运用运算符去判断

    2.子查询的结果是多行单列

    ​ 子查询可以作为为条件,使用运算符in来判断

    select * from emp where dep_id in(select id from dept where name = '财务部' or name = '市场部');

    3.子查询的结果是多行多列

    ​ 子查询可以作为一张虚拟表

事务

1.事务的基本介绍

​ 1.概念:

​ 如果一个包含多个步骤的业务操作,被事务管理,要么同时成功,要么失败

​ 可以确保数据的操作安全

​ 2.操作

​ 1.开启事务:start transaction

​ 2.事务回滚:rollbsck(事务出现问题就回滚)

​ 3.事务提交:commit(事务没有问题就提交)

​ 4.MySQL数据库中的事务是默认自动提交

​ 一条DML(增删改)语句会自动提交一次事务

​ 事务提交的两种方式,

​ 1.自动提交

​ MySQL就是自动提交的

​ 一条DML语句会自动提交一次事务

​ 2.手动提交

​ 需要先开启事务,再提交

​ *修改事务的默认提交方式

​ 查看当前事务的默认提交方式:

select @@autocommit;--- 1代表自动提交,0代表手动提交
修改默认提交方式
set @@autocommit = 0/1

​ 2.事务的四大特征:

​ 1.原子性:是不可分割的最小操作单位;

​ 2.持久性:如果事务一旦提交或者回滚之后数据库会发生持久化的保存数据

​ 3.隔离性:多个事务之间,相互独立.

​ 4.一致性:事务操作前后,数据总量不变.

​ 事务的隔离级别:

​ 概念:多个事务之间隔离的,相互独立的,但是如果多个事务操作同一批数据,则会英法一些问题,设置不同的隔离级别就可以解决问题.

​ 存在问题:

​ 1.脏读:一个事务,读取到另外一个事务中没有提交的数据

​ 2.不可重复读(虚读):同一个事物中,两次读取到的数据不一样

​ 3.幻读:一个事务操作数据表所有记录,另一个事务添加了一条数据,则第一个事务查询不到到自己的修改

​ 隔离级别:

​ 1.read uncommitted:读未提交

​ 产生的问题:脏读,不可重复读,幻读

​ 2.read committed:读已提交(Oracle)

​ 产生的问题,脏读,不可重复读,幻读

​ 3.repeatable read :可重复读(Mysql 默认)

​ 产生的问题:幻读

​ 4.serializable:串行化

​ 可以解决所有问题

​ 注意:隔离级别从小到大安全性越来越高,但是效率越来越低

今年面试时候被问到数据库事务是什么,一脸懵逼,重新补习一下

  结合以上,数据库事务就是多个数据库表的操作被一个事务管理要么同时成功,要么同时失败。

数据库事务的四大特性:原子性(不可分割的最小操作单位),隔离性(事务之间相互独立),持久性(修改后就一直保存在磁盘当中),一致性(事务操作前后数据总量不变)

MySql学习---数据库基本类型,事务,多表查询的更多相关文章

  1. MYSQL - 外键、约束、多表查询、子查询、视图、事务

    MYSQL - 外键.约束.多表查询.子查询.视图.事务 关系 创建成绩表scores,结构如下 id 学生 科目 成绩 思考:学生列应该存什么信息呢? 答:学生列的数据不是在这里新建的,而应该从学生 ...

  2. MySQL创建数据库 easyShopping,包括area表、goods表、customer表、orders表、ordersdetall表、test表

    MySQL创建数据库 easyShopping,包括area表.goods表.customer表.orders表.ordersdetall表.test表 商品表表结构: 字段名 说 明 类 型 长 度 ...

  3. 百万年薪python之路 -- MySQL数据库之 MySQL行(记录)的操作(二) -- 多表查询

    MySQL行(记录)的操作(二) -- 多表查询 数据的准备 #建表 create table department( id int, name varchar(20) ); create table ...

  4. 五、Django学习之基于对象的跨表查询

    五.Django学习之基于对象的跨表查询 正向与反向查询 关键在于ForeignKey字段写的位置.例如下面这段代码, 关系属性(字段)写在哪个类(表)里面,从当前类(表)的数据去查询它关联类(表)的 ...

  5. 高性能MySql学习笔记——锁、事务、隔离级别(转)

    为什么需要锁? 因为数据库要解决并发控制问题.在同一时刻,可能会有多个客户端对Table1.rown进行操作,比如有的在读取该行数据,其他的尝试去删除它.为了保证数据的一致性,数据库就要对这种并发操作 ...

  6. MySQL学习之——锁(行锁、表锁、页锁、乐观锁、悲观锁等)

    转载. https://blog.csdn.net/mysteryhaohao/article/details/51669741 锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具.在计算机中,是 ...

  7. 一、TCL事务控制语言 二、MySQL中的约束 三、多表查询(重点) 四、用户的创建和授权 五、MySQL中的索引

    一.TCL事务控制语言###<1>事务的概念 事务是访问并可能更新数据库中各种数据项的执行单元. 事务是一条SQL语句,一组SQL语句,或者整个程序. 事务是恢复和并发控制的基本单位. 事 ...

  8. MySQL数据库(4)- 多表查询、可视化工具Navicat的使用、设计模式MVC

    一.多表查询 准备工作:创建两张表,部门表(department).员工表(employee),代码和表格如下: # 创建表 create table department( id int, name ...

  9. mysql数据库补充知识2 查询数据库记录信息之单表查询

    一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键 ...

随机推荐

  1. Codeforces Round #656 (Div. 3) B. Restore the Permutation by Merger (模拟)

    题意:有两个完全相同的排列,将其中一个的元素按相对顺序插入另外一个排列中,给你操作完的排列,求原排列. 题解:感觉看看样例就能直接写了啊,直接遍历,用桶存数字个数,如果桶为空,直接输出即可. 代码: ...

  2. 微服务架构学习Day01-SpringBoot入门

    基本概念 SpringBoot的优点: 可以创建独立的Spring应用 SpringBoot嵌入Tomcat,Jetty和Unsertow, 不需要部署war文件 根据需要通过maven获取start ...

  3. 根据直方图 histogram 进行简单的图像检索

    https://github.com/TouwaErioH/Machine-Learning/tree/master/image%20identification/Histogram%20retrie ...

  4. POJ 1742 Coins 【可行性背包】【非原创】

    People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony ...

  5. React Testing All in One

    React Testing All in One React 测试 https://reactjs.org/docs/testing.html jest 26.4 https://jestjs.io/ ...

  6. vue & components & props & methods & callback

    vue & components & props & methods & callback demo solution 1 & props & data ...

  7. NGK发力社区 打造三大社群模式

    当人们谈论区块链.数字货币的时候,常常会提到这样一些词汇:社区.社群,社区对区块链项目乃至于整个区块链行业的重要性已经形成了基本的行业共识,几乎每个项目方都在想尽办法营造社区.激发社区活力. 为什么区 ...

  8. 「NGK每日快讯」2021.1.7日NGK第65期官方快讯!

  9. JUnit5学习之二:Assumptions类

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  10. 漫画 | C语言哭了,过年回家,只有我还没对象

    C语言回家过年,遇到不少小伙伴. 大家都在外地打拼,一年难得见面,聚到一起吃饭,都非常高兴. 听Java提到TIOBE, 正在喝酒的C语言激动起来. 自己常年在那里排名第二,人类用自己写的程序可真不少 ...