MySQL系统性的学习--基础

devtools/2024/10/25 5:00:04/

学习资料是黑马的mysql课程


Mysql概述

相关概念

数据模型

关系型数据库

数据模型

SQL

SQL通用语法

SQL分类

DDL

数据库操作

表操作
查询

创建

数据类型

修改/删除

DML

添加数据INSERT

修改数据UPDATE

删除数据DELETE

DQL

基础查询

条件查询

聚合函数

分组查询

排序查询

分页查询

执行顺序

DCL

用来管理数据库用户、控制数据库的访问权限。

在MySQL中,用户的信息及用户所具有的权限的信息都是存放在 mysql 库中的 user 表里,同时知道主机地址和用户名才能完整的定位一个用户。

权限控制

函数

一段可以直接被另一段程序调用的程序或代码。

字符串函数

数值函数

日期函数

流程函数

-- 需求:查询emp表员工姓名和城市(北京,上海---->一线城市,其他----->二线城市)
selectname,(case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else'二线城市' end) as '工作地址'
from emp;

约束

概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。

目的:保证数据库中数据的正确、有效性和完整性。

补充:(自增:AUTO_INCREMENT)

注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束

外键约束

用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性

外键删除更新行为

多表查询

概述:指从多张表中查询数据

笛卡尔积:笛卡尔乘积是指在数学中,两个集合A集合和B集合的所有组合情况。(在多表查询时,需要消除无效的笛卡尔积,只需要在查询语句的后面加一个where条件即可)

内连接

外连接

自连接

联合查询- union, union all

是把多次查询的结果合并起来,形成一个新的查询结果集。

-- 1、将地址在北京的, 和年龄大于 20 岁的员工全部查询
select * from emp where workaddress = '北京'
# union all # 查询结果直接合并
union #查询结果合并并去重
select * from emp where age > 20;

子查询

标量子查询

子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询成为标量子查询。

常用的操作符:=、<>、 >、 >=、 <、 <=

select * from emp where dep_id = (select id from dep where dep = '管理部门');
列子查询

子查询返回的结果是一列(可以是多行),这种子查询称为列子查询。

常用的操作符: IN 、NOT IN、ANY 、SOME、ALL

-- 列子查询
-- 1、 查询“销售部” 和“研发部” 的所有员工信息
select * from emp where dep_id in (select id from dep where dep = '销售部' or dep = '研发部');-- 2、 查询比销售部所有人工资都高的员工信息
select * from emp where salary > all((select salary from emp where dep_id = (select id from dep where dep = '销售部')));
# all 返回回来的结构都需要满足-- 3、查询比研发部其中任意一人工资高的员工信息
select * from emp where salary > any (select salary from emp where dep_id = (select id from dep where dep = '研发部'));
# any = some
行子查询

子查询返回的结果是一行(可以是多列),这种子查询称为行子查询。

常用的操作符:=、<>、IN 、NOT IN

select * from emp where (salary,manageid) = (select salary,manageid from emp where name = '刘艳');

表子查询

子查询返回的结果是多行多列,这种子查询称为表子查询

常用的操作符:IN

一般在from后面


select e.*, d.dep from (select * from emp where entrydate > '2002-01-01') e left join dep d on e.dep_id = d.id

事务

即这些操作要么同时成功,要么同时失败

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

@@autocommit = 0 为手动提交

四大特性ACID

并发事务问题

事务隔离级别

为解决并发事务问题,设置来了事务隔离级别,下表中从上到下隔离级别越来越高,但是性能越来越差,

总结


http://www.ppmy.cn/devtools/100573.html

相关文章

无人机之云台的重要性

无人机云台在无人机技术中占据着举足轻重的地位&#xff0c;其重要性体现在多个方面&#xff1a; 首先&#xff0c;无人机云台是确保拍摄稳定性的关键组件。无人机在飞行过程中&#xff0c;尤其是遇到风力干扰或进行复杂飞行动作时&#xff0c;机身容易产生震动和晃动。而云台的…

uniapp+vue3的defineProps传递

//index.vue <view class"topic"><!-- 磨砂背景 --><view class"content"><matte v-for"(item,index) in 8" :key"index"></matte><matte isMore"false"></matte></view>&…

中介者模式详解

中介者模式 简介通过引入一个中介者对象来封装和协调多个对象之间的交互&#xff0c;从而降低对象间的耦合度。 人话:就是两个类或者系统之间, 不要直接互相调用, 而是要中间的类来专门进行交互。 举个例子 比如两个国家之间(关系差, 没有大使馆), 需要联合国作为中介进行对话…

在IDEA中使用Git

在IntelliJ IDEA&#xff08;通常简称为IDEA&#xff09;中使用Git进行版本控制是一种高效且集成度高的做法。以下是在IDEA中使用 Git的详细步骤和说明&#xff1a;一、安装与配置Git 安装Git&#xff1a; 前往Git的官方网站下载并安装Git。 安装过程中&#xff0c;建议勾选“…

九、前端中的异步方法Promise,Promise详解

文章目录 1.Promise简介什么是promise为什么使用Promisepromise中的状态 2.Promis的用法 1.Promise简介 什么是promise Promise是异步编程的一种解决方案&#xff0c;它的构造函数是同步执行的&#xff0c;then 方法是异步执行的。 为什么使用Promise 在JavaScript的世界中…

使用python基于fastapi发布接口(三)-操作数据库使用SQLAlchemy

首先需要安装SQLAlchemy pip install sqlalchemy 这里使用的是mysql,所以需要安装pymysql pip install pymysql 创建项目 创建文件夹 sql_fastapi_demo新建__init__.py文件# __init__.py#这只是一个空文件,但它告诉 Python 所在文件夹 是一个包。创建database.pyfrom sqlalch…

模拟实现STL中的unordered_map和unordered_set

目录 1.unordered_map和unordered_set简介 2.unordered_map和unordered_set设计图 3.迭代器的设计 4.哈希表的设计 5.my_unordered_map和my_unordered_set代码 1.unordered_map和unordered_set简介 unordered_map和unordered_set的使用非常类似于map和set&#xff0c;两…

PHPShort轻量级网址缩短程序源码开心版,内含汉化包

需要网址缩短并且想获得更多有关链接点击率和流量的数据分析&#xff0c;那么 PHPShort 可能是一个非常好的选择。PHPShort 是一款高级的 URL 缩短器平台&#xff0c;可以帮助你轻松地缩短链接&#xff0c;并根据受众群体的位置或平台来定位受众。 该程序基于 Laravel 框架编写…