当前位置: 首页 > news >正文

数据库基础——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的数据类型

整数类型tinyint1个字节
smallint2个字节
int4个字节
bigint8个字节
浮点数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不是空

空字符串不是空

查询地址为空的内容
    select * from teacher where address is null;

查询地址不为空的内容
    select * from teacher where address 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.关系型数据库 关系型数据库是一种基于关系模型的数据库系统&#xff0c;将数据组织成表格的形式&#xff0c;表格由行和列组成&#xff0c;每行代表一个记录&#xff0c;每列代表一个属性。它使用结构化查询语言SQL进行数据管理和操作。 特点&#xff1a;1.数据的组织&…...

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(二)

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验&#xff08;前导&#xff09; Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验&#xff08;一&#xff09; Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验&#xff08;三&#xff09; 五、实验目的 本次实验使用电脑上的…...

高级语言讲义2010计专(仅高级语言部分)

1.编写一程序&#xff0c;对输入的正整数&#xff0c;求他的约数和。 如&#xff1a;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); …...

你喜欢那种舞者呢?

迷宫中的舞者&#xff1a;程序员职业赛道的探索与魅力 在数字世界的深处&#xff0c;程序员的职业赛道宛如一座神秘而迷人的迷宫。这个迷宫中&#xff0c;每个转角都隐藏着无限的可能&#xff0c;每个领域都散发着独特的魅力。前端开发者如同花园中的精灵&#xff0c;后端工程师…...

LeetCode每日一题之 快乐数

目录 题目介绍&#xff1a; 算法原理&#xff1a; 鸽巢原理&#xff1a; 如何找到环里元素&#xff1a; 代码实现&#xff1a; 题目介绍&#xff1a; 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 算法原理&#xff1a; 我先简单举两个例子&#xff…...

【机器学习】在Python中进行K-Means聚类和层次聚类

Python中聚类算法API的使用指南 聚类分析是数据分析中一种常见的无监督学习方法&#xff0c;通过将相似的对象分组在一起&#xff0c;我们能够识别出数据集中的自然分群。本文将介绍如何使用Python中的聚类算法接口&#xff0c;KMeans和层次聚类方法。 K-Means 聚类 K-Means…...

springboot254小区团购管理

小区团购管理设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装小区团购管理软件来发挥其高效地信…...

Word中的文档网格线与行距问题

在使用Word编辑文档时&#xff0c;经常会发生以下动图展示的这种情况&#xff1a; 上面的动图里&#xff0c;将文字大小放大到某个字号时&#xff0c;单倍行距的间距突然增加很多。造成这种情况的原因是文档中定义了网格线&#xff0c;并且设置了对齐到网格线。如果取消文档中…...

【简写Mybatis】03-Mapper xml的注册和使用

前言 在学习MyBatis源码文章中&#xff0c;斗胆想将其讲明白&#xff1b;故有此文章&#xff0c;如有问题&#xff0c;不吝指教&#xff01; 注意&#xff1a; 学习源码一定一定不要太关注代码的编写&#xff0c;而是注意代码实现思想&#xff1b; 通过设问方式来体现代码中的…...

Vue源码系列讲解——指令篇【一】(自定义指令)

目录 1. 前言 2. 何时生效 3. 指令钩子函数 4. 如何生效 5. 总结 1. 前言 在Vue中&#xff0c;除了Vue本身为我们提供的一些内置指令之外&#xff0c;Vue还支持用户自定义指令。并且用户有两种定义指令的方式&#xff1a;一种是使用全局API——Vue.directive来定义全局指令…...

STM32(14)USART

USART:一种片上外设&#xff0c;用来实现串口通信&#xff0c;就是stm32内部的串口 USART简介 串并转换电路 串行通信和并行通信 串行&#xff1a;一根数据线&#xff0c;逐个比特位发送 为什么要串并转换 移位寄存器 USART的基本模型 通过查询SR&#xff08;状态寄存器&…...

作业 字符数组-统计和加密

字串中数字个数 描述 输入一行字符&#xff0c;统计出其中数字字符的个数。 输入 一行字符串&#xff0c;总长度不超过255。 输出 输出为1行&#xff0c;输出字符串里面数字字符的个数。 样例 #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聚合运算符将日期表达式拆分成多个字段放在一个文档返回&#xff0c;属性有year、month、day、hour、minute、second和millisecond。如果iso8601属性设置为true&#xff0c;返回的各部分用ISO周日期返回&#xff0c;属性分别是&#xff1a;isoWeekYear、isoWeek、i…...

Spring MVC RequestMappingHandlerAdapter原理解析

在Spring MVC框架中&#xff0c;RequestMappingHandlerAdapter是一个核心的组件&#xff0c;负责将请求映射到具体的处理器方法上&#xff0c;并调用这些方法来处理请求。其中&#xff0c;invokeHandlerMethod方法是这个适配器中的一个关键方法&#xff0c;它负责实际调用处理器…...

反射整理学习

目录 1、反射介绍 2、反射API 2.1 获取类对应的字节码的对象&#xff08;三种&#xff09; 2.2 常用方法 3、反射的应用 3.1 创建 : 测试物料类 3.2 获取类对象 3.3 获取成员变量 3.4 通过字节码对象获取类的成员方法 3.5 通过字节码对象获取类的构造方法 4、创建对象…...

JavaScript 运算规则详解

在 JavaScript 中&#xff0c;运算规则是非常重要的基础知识&#xff0c;了解这些规则可以帮助我们正确地编写代码并避免一些常见的错误。本教程将详细介绍 JavaScript 中的各种运算规则&#xff0c;包括基本运算符、类型转换、运算优先级等内容。 1. 基本运算符 JavaScript …...

C++篇 语 句

到目前为止&#xff0c;我们只见过两种语句&#xff1a; return 语句和表达式语句。根据语句对执行顺 序的影响&#xff0c;C 语言其余语句大多属于以下 3 大类。 选择语句&#xff1a; if 语句和 switch 语句。循环语句&#xff1a; while 语句&#xff0c; do...while 语句和…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

[拓扑优化] 1.概述

常见的拓扑优化方法有&#xff1a;均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有&#xff1a;有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...

Linux入门(十五)安装java安装tomcat安装dotnet安装mysql

安装java yum install java-17-openjdk-devel查找安装地址 update-alternatives --config java设置环境变量 vi /etc/profile #在文档后面追加 JAVA_HOME"通过查找安装地址命令显示的路径" #注意一定要加$PATH不然路径就只剩下新加的路径了&#xff0c;系统很多命…...