数据库基础——mysql知识体系(掌握mysql,看完这篇文章就够了)
1.关系型数据库
关系型数据库是一种基于关系模型的数据库系统,将数据组织成表格的形式,表格由行和列组成,每行代表一个记录,每列代表一个属性。它使用结构化查询语言SQL进行数据管理和操作。
特点:1.数据的组织:数据以表格的形式进行组织,每个表格具有固定的列和数据类型。
2.数据的关联:通过定义主键和外键来建立不同表格之间的关联关系,实现数据的一致性和完整性。
3.数据的一致性:关系型数据库支持事务处理,可以确保数据的一致性和可靠性。
4.数据的查询:使用SQL语言进行数据的查询、插入、更新和删除,具有较高的灵活性。
5.数据的安全性:关系型数据库提供了权限控制和数据加密等功能,保障数据的安全性。
常见的关系型数据库:MySQL、Oracle、Microsoft SQL Sever、PostagreSQL等。
2.数据库相关SQL语句
| 显示所有的数据库 | show databases; |
| 查看当前使用的数据库 | select database(); |
| 使用一个数据库 | use 数据库名; |
| 创建一个数据库 | create database 数据库名; |
| 删除一个数据库 | drop database 数据库名; |
3.表相关SQL语句
| 查看当前所有的表 | show tables; |
| 查看表信息 | desc 表名; |
| 创建一个表 | create table 表名(列名 类型 约束信息); |
| 添加列 | alter table 表名 add 列名 类型 约束信息; |
| 修改列的信息 | alter table 表名 change 原始列名 新列名 类型 约束信息; |
| 删除表 | drop table 表名; |
| 删除列 | alter table 表名 drop 列名; |
| 修改表名 | rename table 原始表名 to 新表名; |
4.数据相关SQL语句
| 查询表的数据 | select * from 表名; |
| 插入数据 | 全部插入:insert into 表名 values(); insert into 表名 values(),(),()...; 缺省插入:insert into 表名(列1,列2) values(),(),()...; insert into 表名 set 列1=值1,列2=值2....; |
| 修改数据 | update 表名 set 列=值,... where 条件; |
| 删除数据 | deLete from 表名 where 条件; |
5.Mysql列的约束
| 主键约束 | primary key |
| 非空 | not null |
| 自增长 | auto_increment |
| 唯一约束 | unique |
| 外键 | foreign key |
6.Mysql的数据类型
| 整数类型 | tinyint | 1个字节 |
| smallint | 2个字节 | |
| int | 4个字节 | |
| bigint | 8个字节 | |
| 浮点数 | float | 单精度浮点数 |
| double | 双精度浮点数 | |
| decimal | 高精度浮点数 | |
| 字符串 | char | 固定长度的字符串,最大长度为255个字符。 |
| varchar | 可变长度字符串,最大长度为65535个字符。 | |
| blob | 用于存储二进制数据的类型,包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。 | |
| 日期时间 | date | 日期,格式为'YYYY-MM-DD' |
| time | 时间,格式为'HH:MM:SS' | |
| datetime | 日期时间,格式为'YYYY-MM-DD HH:MM:SS' | |
| timestamp | 时间戳,自动记录插入或更新的时间。 | |
| 枚举 | enum |
7.外键
外键是用于连接表与表之间关联关系的一种约束
| 创建 | create table 表名(列...... constraint 外键名 foreign key(列名) references 主表(主键) on update cascade on delete cascade); |
| 添加 | alter table 表名 add constraint 外键名 foreign key(列名) references 主表(主键) on update cascade on delete cascade; |
| 删除 | alter table 表名 drop foreign key 外键名; |
8.查询
别名:别名是为了方便多表查询时区分不同表的相同列名
格式:select 列名 as 别名,列名 as 别名 from 表名;
例子:select student.name as 学生名,teacher.name as 教师名 from student inner join teacher on student.t_id=teacher.id;
查询指定列:select 列1,列2 from 表名;
条件查询:select * from 表名 where 条件;
where后的条件:
| 比较运算符 | =、!=/<> <= < > >= | select name,age from student where id<5; |
| 多个条件 | and并且,or或者 | select name,age from student where age>20 and id<5; select name,age from student where age>20 or id<5; |
| 成员 | in其中一个 not in不在其中 | in 类似or,满足在其中,就显示出来:select name,age from student where id in (1,2,3); select name,age from student where id not in (1,2,3); |
| 模糊查询 | like | _ 一个下划线代表一个字符: select * from 表名 where 列名 like '黄_'; % 代表多个字符,查找名字中带有星的:select * from 表名 where name like '%星%' |
| 判空 | is null是空 is not null不是空 | 空字符串不是空 查询地址为空的内容 查询地址不为空的内容 |
嵌套查询:一个查询结果作为另外一个查询的条件
| 内连接 | 取两边都有的 | inner join on 条件 如:select student.name as 学生名,teacher.name as 教师名 from student inner join teacher on student.t_id=teacher.id; |
| 左外连接 | 内连接结果+左表内容(右侧补Null) 以左表的内容为主,左表内容全部写上,右表没有结果则补Null | select student.name,teacher.name from student left join teacher on student.id*3=teacher.id; |
| 右外连接 | 内连接结果+右表内容(左侧补Null) 以右边的表的内容为主,右表内容全部写上,左表没有结果则补Null | select student.name,teacher.name from student right join teacher on student.id*3=teacher.id; |
| 全连接 | 左外连接 union 右外连接 | select student.name,teacher.name from student left join teacher on student.id*3=teacher.id union select student.name,teacher.name from student right join teacher on student.id*3=teacher.id; |
9.函数
系统函数
| database() | 查看当前数据库 |
| user() | 当前用户 |
| version() | 当前数据库版本 |
| current_date | 当期日期 |
| current_time | 当前时间 |
| current_timestamp | 当前日期时间 |
聚合函数
| max(列名) | 最大值 |
| min(列名) | 最小值 |
| avg(列名) | 平均值 |
| sum(列名) | 求和 |
| count(列名) | 统计行数 |
10.常用技术
排序:order by
排序方式:desc降序,asc升序。默认是升序
例子: select * from teacher order by age desc;
分页:分页是为了将数据量大的表分开方便查看
limit n:显示前n行
limit n,m:从索引n开始显示m个。第page页,每页显示个数为size,limit (page-1)*size,size;
分组:将查询到的结果进行分组,方便统计结果
如:统计男女数量
select count(*),sex from teacher group by sex order by sex;
去重:distinct,去除重复的行,如去除重复的名字
11.用户
| 查看当前用户 | select user(); |
| 创建用户 | create user '用户名'@'%' identified by '密码'; |
| 用户授权 | grant 权限 on 数据库名 to '用户名'@'%'; |
| 刷新权限 | flush privileges; |
| 删除用户 | drop user ‘用户名'@'%'; |
12.视图
视图是一个虚拟表,但是操作视图等同于操作真实表
作用:简化复杂的查询操作
使用:可以直接将教师对应的学生放在一个视图中,直接查看视图就可以查看对应关系,不需要使用嵌套查询,简化了查询操作。
13.函数与存储过程
函数:接受参数,并且有返回值。格式:select 函数名(参数)
可以将常用的计算操作封装成一个函数,如常用的求和、求均值、最大值、最小值、统计行数等,都封装成了函数,随时可以调用。
存储过程:是一套SQL操作,没有返回值。将一套复杂的查询语句放入存储过程,使用时直接调用,简化程序代码。格式:call 过程名(参数)
14.索引
索引是一种优化查询技术
索引类型:主键索引,主键自带的
唯一索引,unique唯一约束
普通索引,适用于任何字段
索引方法:BTREE,适用于大数据量查询,适合范围比较
HASH,适用于小数据量,适合精确的等值比较
使用:适用于表查询频率高,几乎不修改数据的表
15.事务
事务是一组SQL操作,这些操作要么全部执行成功,要么全部失败回滚。、
开启事务:start transaction
提交:commit
作用:保证数据的安全性。
事务的acid特性:
1.原子性:事务不可再分,要么全部成功,要么全部失败回滚,不会出现部分操作成功,部分操作失败的情况。
2.一致性:执行前和执行后的数据保持一致。
3.隔离性:事务之间互不影响。
4.永久性:事务一旦提交成功,对数据库的修改是永久的。
16.存储引擎
存储引擎是数据存储的实现方式
常用的存储引擎:
InnoDB:mysql默认的存储引擎。特点:支持事务;支持外键;支持行级别锁定、阻塞;综合能力强,适用于大多数场景。
MyISAM:查询、排序速度快,但是不支持外键。
Memory:读写速度最快,但是不能持久化,数据不能在本地保存。数据库连接断开,数据就会消失。
CSV:适合使用逗号分隔的文件,适合导入导出。
17.数据备份与恢复
数据备份:将数据库信息转储为SQL文件
恢复:当数据丢失时,可以将备份好的SQL文件运行,将数据库恢复到原来的状态。
18.Mysql与python基础交互
导入模块pymsql:import pymsql
构建连接:pymysql.connect()
创建游标实例:cursor()
游标使用:
| Fetchone | 获取一行 |
| fetchall | 获取所有 |
| fetchmany | 获取多行,size参数设置获取的大小 |
| scroll | 游标偏移 |
| execute | 执行一个sql语句 |
| executemany | 一次执行多个sql语句 |
相关文章:
数据库基础——mysql知识体系(掌握mysql,看完这篇文章就够了)
1.关系型数据库 关系型数据库是一种基于关系模型的数据库系统,将数据组织成表格的形式,表格由行和列组成,每行代表一个记录,每列代表一个属性。它使用结构化查询语言SQL进行数据管理和操作。 特点:1.数据的组织&…...
Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(二)
Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(前导) Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(一) Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(三) 五、实验目的 本次实验使用电脑上的…...
高级语言讲义2010计专(仅高级语言部分)
1.编写一程序,对输入的正整数,求他的约数和。 如:18的约数和为1236939 #include <stdio.h>int getsum(int n){int i,sum0;for(i1;i<n;i)if(n%i0)sumi;return sum; } int main(){int sum getsum(18);printf("%d",sum); …...
你喜欢那种舞者呢?
迷宫中的舞者:程序员职业赛道的探索与魅力 在数字世界的深处,程序员的职业赛道宛如一座神秘而迷人的迷宫。这个迷宫中,每个转角都隐藏着无限的可能,每个领域都散发着独特的魅力。前端开发者如同花园中的精灵,后端工程师…...
LeetCode每日一题之 快乐数
目录 题目介绍: 算法原理: 鸽巢原理: 如何找到环里元素: 代码实现: 题目介绍: 题目链接:. - 力扣(LeetCode) 算法原理: 我先简单举两个例子ÿ…...
【机器学习】在Python中进行K-Means聚类和层次聚类
Python中聚类算法API的使用指南 聚类分析是数据分析中一种常见的无监督学习方法,通过将相似的对象分组在一起,我们能够识别出数据集中的自然分群。本文将介绍如何使用Python中的聚类算法接口,KMeans和层次聚类方法。 K-Means 聚类 K-Means…...
springboot254小区团购管理
小区团购管理设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装小区团购管理软件来发挥其高效地信…...
Word中的文档网格线与行距问题
在使用Word编辑文档时,经常会发生以下动图展示的这种情况: 上面的动图里,将文字大小放大到某个字号时,单倍行距的间距突然增加很多。造成这种情况的原因是文档中定义了网格线,并且设置了对齐到网格线。如果取消文档中…...
【简写Mybatis】03-Mapper xml的注册和使用
前言 在学习MyBatis源码文章中,斗胆想将其讲明白;故有此文章,如有问题,不吝指教! 注意: 学习源码一定一定不要太关注代码的编写,而是注意代码实现思想; 通过设问方式来体现代码中的…...
Vue源码系列讲解——指令篇【一】(自定义指令)
目录 1. 前言 2. 何时生效 3. 指令钩子函数 4. 如何生效 5. 总结 1. 前言 在Vue中,除了Vue本身为我们提供的一些内置指令之外,Vue还支持用户自定义指令。并且用户有两种定义指令的方式:一种是使用全局API——Vue.directive来定义全局指令…...
STM32(14)USART
USART:一种片上外设,用来实现串口通信,就是stm32内部的串口 USART简介 串并转换电路 串行通信和并行通信 串行:一根数据线,逐个比特位发送 为什么要串并转换 移位寄存器 USART的基本模型 通过查询SR(状态寄存器&…...
作业 字符数组-统计和加密
字串中数字个数 描述 输入一行字符,统计出其中数字字符的个数。 输入 一行字符串,总长度不超过255。 输出 输出为1行,输出字符串里面数字字符的个数。 样例 #include <iostream> #include<string.h> using namespace std; int m…...
Codeforces Round 719 (Div. 3)除F2题外补题报告
Codeforces Round 719 Div. 3 除F2题外补题报告 得分情况补题情况错题分析C题题目大意初次思路正解思路正解代码错误原因 D题题目大意初次思路正解思路正解代码错误原因 E题题目大意初次思路正解思路正解代码 F1题题目大意正解思路正解代码 G题题目大意正解思路正解代码 得分情…...
docker本地搭建spark yarn hive环境
docker本地搭建spark yarn hive环境 前言软件版本准备工作使用说明构建基础镜像spark on yarn模式构建on-yarn镜像启动on-yarn集群手动方式自动方式 spark on yarn with hive(derby server)模式构建on-yarn-hive镜像启动on-yarn-hive集群手动方式自动方式 常用示例spark执行sh脚…...
每日学习笔记:C++ 11的Tuple
#include <tuple> Tuple介绍(不定数的值组--可理解为pair的升级版) 定义 创建 取值 初始化 获取tuple元素个数、获取tuple某元素类型、将2个tuple类型串接为1个新tuple类型...
MongoDB聚合运算符;$dateToParts
$dateToParts聚合运算符将日期表达式拆分成多个字段放在一个文档返回,属性有year、month、day、hour、minute、second和millisecond。如果iso8601属性设置为true,返回的各部分用ISO周日期返回,属性分别是:isoWeekYear、isoWeek、i…...
Spring MVC RequestMappingHandlerAdapter原理解析
在Spring MVC框架中,RequestMappingHandlerAdapter是一个核心的组件,负责将请求映射到具体的处理器方法上,并调用这些方法来处理请求。其中,invokeHandlerMethod方法是这个适配器中的一个关键方法,它负责实际调用处理器…...
反射整理学习
目录 1、反射介绍 2、反射API 2.1 获取类对应的字节码的对象(三种) 2.2 常用方法 3、反射的应用 3.1 创建 : 测试物料类 3.2 获取类对象 3.3 获取成员变量 3.4 通过字节码对象获取类的成员方法 3.5 通过字节码对象获取类的构造方法 4、创建对象…...
JavaScript 运算规则详解
在 JavaScript 中,运算规则是非常重要的基础知识,了解这些规则可以帮助我们正确地编写代码并避免一些常见的错误。本教程将详细介绍 JavaScript 中的各种运算规则,包括基本运算符、类型转换、运算优先级等内容。 1. 基本运算符 JavaScript …...
C++篇 语 句
到目前为止,我们只见过两种语句: return 语句和表达式语句。根据语句对执行顺 序的影响,C 语言其余语句大多属于以下 3 大类。 选择语句: if 语句和 switch 语句。循环语句: while 语句, do...while 语句和…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
