• 数据库分类

    关系型数据库

    行列,

    列如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. POJ - 1654 利用叉积求三角形面积 去 间接求多边形面积

    题意:在一个平面直角坐标系,一个点总是从原点出发,但是每次移动只能移动8个方向的中的一个并且每次移动距离只有1和√2这两种情况,最后一定会回到原点(以字母5结束),请你计算这个点所画出图形的面积 题解 ...

  2. 洛谷-P1439 【模板】最长公共子序列 (DP,离散化)

    题意:给两个长度为\(n\)的全排列,求他们的LCS 题解:这题给的数据范围到\(10^5\),用\(O(n^2)\)的LCS模板过不了,但由于给的是两个全排列,他们所含的元素都是一样的,所以,我们以 ...

  3. git忽略规则以及.gitignore文件不生效解决办法

    正文 Git忽略规则: #此为注释 – 内容被 Git 忽略 .sample # 忽略所有 .sample 结尾的文件 !lib.sample # 但 lib.sample 除外 /TODO # 仅仅 ...

  4. OpenStack Train版-5.安装nova计算服务(控制节点)

    nova计算服务需要在 控制节点 和 计算节点 都安装 控制节点主要安装 ​ nova-api(nova主服务)​ nova-scheduler(nova调度服务)​ nova-conductor(n ...

  5. Leetcode(26)-删除排序数组中的重复项

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 我们利用 ...

  6. SMB relay

    SMB relay 0x00 SMB服务 先来了解一下什么是 SMB 服务,SMB(Server Message Block)是一个协议名称,用它可以共享计算机之间的文件.打印机.串口等,通过 SMB ...

  7. Windows 10 Emoji shortcuts

    Windows 10 Emoji shortcuts Windows 10 Emoji 快捷方式 https://support.microsoft.com/en-us/windows/windows ...

  8. free open movie API all in one

    free open movie API all in one movie API TMDb API The Movie Database https://www.themoviedb.org/docu ...

  9. 树莓派 4B 入门教程

    树莓派 4B 入门教程 Raspberry Pi, Raspberry Pi 3B, Raspberry Pi 4B 树莓派 4B 入门手册 PDF Raspberry Pi Beginners Gu ...

  10. js 如何获取某一个月的第一天是周几

    js 如何获取某一个月的第一天是周几 calendar ??? padding dates // day = 1 const firstMonthDate = new Date(year + mont ...