MySql增删改查基础

news2024/12/22 23:21:41

目录

1.基本操作

1.1新增

1.2查询

1.2.1指定查询

1.2.2排序查询

1.2.3分页查询

1.3修改

1.4删除

2.进阶操作

2.1键值约束

2.1.1主键约束

2.1.2唯一键约束

2.1.3非空约束

2.1.4默认值

2.1.5自增属性

​编辑 2.1.6外键约束

2.1.7check子句

3.表的设计

3.1ER关系图

3.2三大范式

3.2.1第一范式(1NF)

3.2.2第二范式(2NF)

3.2.3第三范式(3NF)

4.聚合函数

4.1COUNT

4.2SUM

4.3AVG

4.4MAX

4.5MIN

5.分组查询

1.基本操作

1.1新增

紧接上一篇博客的内容,我们向student表中添加内容。

首先是全列新增,即向表中的每一列都添加内容。

insert into student values(1,'张三',88.88,77.88,'2002-09-09 12:12:12', 1);

多列新增便是将全列新增的结尾该为 ',' ,直到内容添加完全后使用 ';' 作为结尾。

然后是对指定列进行内容新增。

insert into student(sn, name, birthday, sex)values(2,'李四','2002-10-09 11:11:11', 1);

我们只需表明对表中那几列的内容增加即可。 

1.2查询

select * from student;

其中select是关键字,*代表省略全部的表头信息,from也是关键字,后跟查询表的名称,具体查询之后的输出结果如下:

1.2.1指定查询

我们也可以指定查询指定列列信息,操作方法则是将上述语句当中的*代为具体的列名称即可,下面给出示例。

select sn, name, birthday, sex from student;

对应输出结果为:

我们还可以加入表达式来进行内容查询,可以查询表中学生的总成绩 ,具体操作内容和结果如下:

1.2.2排序查询

我们可以根据表中某一信息来对表内容进行排序查询,其中默认是asc(升序),还有desc(降序)。

select * from student order by ch desc;

上述语句的意思是:对student表中的内容按照语文成绩降序查询,具体的输出结果如下:

1.2.3分页查询

limit …… offet ……

其中,limit后跟一个数字,限制最多获取多少条数据;offset后面跟一个数字,描述从第几条数据开始获取。

我们引入实例,先加入新的班级成员王五,然后来获取班级当中语文成绩前二的同学。具体的实现过程为先对语文成绩进行降序排列,然后取出其中前两条数据。具体如下所示:

1.3修改

update stb set fields=val,…… where condition;

其中,update是修改的关键字,stb是表名称,set也是关键字,fields是列信息,val修改后内容,where也是关键字,用于限定修改位置,condition是限定修改条件内容。

我们给出具体实例,修改表中李四的性别为0(女),效果如下:

值得注意的是,修改过程中,where关键字的限定很重要。因为不加以修改范围限定的话,我们所修改的内容范围将是整个表,即会对表中所有的内容进行对应的修改。

1.4删除

delete from stb where condition;

其中,delete是删除关键字,后续说明同修改。

给出数据实例,将表中李四的信息删除,具体结果如下:

2.进阶操作

2.1键值约束

键值约束便是指给表中的字段内容设置一个约束,约束表中的数据必须符合某种规则。

2.1.1主键约束

主键约束的关键字为:primary key,约束表中某一字段的内容非空且唯一,并且一张表当中仅能存在一个主键内容。

当我们创建含有主键约束的表格之后,使用desc查看它的表结构,便可以有如下的发现:

上图中创建含有主键约束表的语句是一种方式,我们还存在一种创建含有主键约束表的方式。两种语句的内容如下:

create table stu1(sn int primary key, name varchar(32));
create table stu2(sn int, name varchar(32), primary key pk(sn));

引入pk的设置之后,我们还可以设计一种主键约束,即组合主键约束,如下:

create table stu2(sn int, name varchar(32), primary key pk(sn, name));

此时,sn和name都是主键,其中,只有当二者完全相同,或同时为空时便会触发主键约束,内容无法插入成功。

2.1.2唯一键约束

唯一键约束的关键字是:unique key,约束指定字段的内容必须唯一,并不对字段是否为NULL进行限制,因此唯一键约束当中可以存在多个NULL值。

同样的unique key约束存在两种书写方式,并且可以进行组合约束,其书写方式如下,并给出unique key在表结构中的内容效果。

create table stu4(sn int unique key, name varchar(32));
create table stu5(sn int, name varchar(32), unique key pk(sn));

create table stu5(sn int, name varchar(32), unique key pk(sn, name));

其在表结构中的展示情况如下:

2.1.3非空约束

非空约束的关键字是:not null,这并不算是一种键值约束,可以理解为一种条件判断,具体实现字段如下:

create table stu6(sn int primary key, name varchar(32) not null);

2.1.4默认值

默认值不算在键值约束当中,但我们放在其中来讲述。默认值的关键字是:default val。当我们在指定列插入数据,且并没有设置被默认值修饰的字段时,则会使用默认值来进行内容填充。否则都是使用给定的值进行填充,包括null值。

具体的实现语句如下:

create table stu7(sn int, name varchar(32), sex varchar(1) default '男');

得到表结构内容如下:

2.1.5自增属性

自增属性的关键字是:auto_increment,其只能针对整形字段进行设计,并且该字段只能是主键字段。当我们对带有自增属性列没有插入数据时,默认会从1开始每次+1来进行填充。

具体的实现语句如下:

create table stu8(sn int primary key auto_increment, name varchar(32));

得到表结构内容如下:

 2.1.6外键约束

外键约束的语句是:

foregin key(fields) references other_table(fields)

它的作用是:约束当前表中指定字段的值必须在另一张表当中存在(出现),才可与成功将数据内容插入。

2.1.7check子句

check子句:是用于插入内容被限定,具体语句如下:(我们规定性别选择)

create table stu9(sn int primary key, sex varchar(1) check (sex = '男' or sex = '女'));

3.表的设计

3.1ER关系图

ER(Entity-Relationship)关系图是一种用于可视化数据库中数据模型的图形表示方法。它描述了数据库中实体(Entity)之间的关系,以及每个实体的属性(Attributes)。

在ER关系图中,有三个主要元素:

  1. 实体(Entity):表示数据库中的数据对象,通常对应于现实世界中的一个事物。每个实体在图中用矩形框表示,框中写有实体的名称;
  2. 属性(Attributes):实体具有的特征或属性。它们用椭圆形状的框表示,并连接到相应的实体;
  3. 关系(Relationships):表示实体之间的联系或关联。关系通常用菱形表示,并连接相关联的实体。

关系(Relationships):表示实体之间的联系或关联。关系通常用菱形表示,并连接相关联的实体。

3.2三大范式

在数据库设计当中,应存在一些规则,让表的设计更加合理美观,范式(Normalization)便是一种用于优化和规范化数据结构的方法。

3.2.1第一范式(1NF)

第一范式要求数据库表中的每个列都是原子的,不可再分的。它确保每个单元格中只包含一个值,而不是多个值的组合。要满足第一范式,需要将复杂的数据拆分为更小的原子值,并使用主键来唯一标识每条记录。(第一范式是其他范式的基础。)

3.2.2第二范式(2NF)

第二范式在满足第一范式的基础上,进一步消除非主键列对主键的部分依赖。换句话说,表中的非主键列必须完全依赖于主键,而不能依赖于主键的部分。

3.2.3第三范式(3NF)

第三范式在满足第二范式的基础上,消除非主键列之间的传递依赖。这意味着非主键列之间不应该有直接依赖关系,而是应该通过主键进行关联。

总而言之: 通过遵循三大范式,可以设计出规范化、减少冗余、易于维护和优化查询性能的数据库结构。然而,范式过度分解可能导致关联查询复杂,因此在实际设计中,有时可能需要根据具体情况进行权衡和优化。

4.聚合函数

MySQL中,聚合函数是用于处理多行数据并返回单个结果的函数。它们对数据进行统计、汇总或计算,并常用于SELECT语句的SELECT子句中。下面是MySQL中常用的聚合函数:

4.1COUNT

COUNT:用于计算指定列的行数或满足特定条件的行数。

SELECT COUNT(*) FROM Orders;

4.2SUM

SUM:用于计算指定列的数值总和。

SELECT SUM(amount) FROM Sales;

4.3AVG

AVG:用于计算指定列的数值平均值。

SELECT AVG(price) FROM Products;

4.4MAX

MAX:用于查找指定列的最大值。

SELECT MAX(age) FROM Students;

4.5MIN

MIN:用于查找指定列的最小值。

SELECT MIN(quantity) FROM Inventory;

5.分组查询

在MySQL中,分组查询是通过使用GROUP BY子句将数据按照指定的列进行分组,并在每个分组上执行聚合函数来进行数据统计和汇总。分组查询通常与聚合函数(如COUNT、SUM、AVG等)一起使用,以便在分组的基础上对数据进行汇总分析。

下面是MySQL中分组查询的基本语法:

SELECT column1, column2, aggregate_function(column3)
FROM table_name
GROUP BY column1, column2;

其中,column1column2是用于分组的列,aggregate_function(column3)是对分组后的数据执行的聚合函数,table_name是要查询的数据表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/789842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海上港口三维数据可视化展示提升应急救援效率

3D可视化技术可以将复杂数据转化为生动的图形和模型,使得数据的关联和趋势更加明确和易于理解。通过使用3D模型和图形,我们可以更直观地观察数据之间的关系,发现隐藏在数据背后的规律和模式。例如,在工业领域,利用3D可…

jdk,jre和jvm三者的关系和区别

目录 一、三者的关系 二、JDK的概念 三、JRE的概念 四、JVM的概念 五、三者区别 一、三者的关系 从图中可以清楚地看到,他们之间的关系是JDK包含JRE, JRE又包含JVM。 因此,JDK包含JRE和JVM。 JDK JRE Java 开发工具包 [Java,Javac,Javadoc,Javap…

Python实现九宫格数独小游戏

1 问题 有1-9个数字,将他们填入一个3*3的九宫格中,使得他们的每行,每列,以及对角线上的和相等,且要求每个格子的数字不可以重复。使用python列出所有可能的组合。示例如下: 2 方法 每行,列,对角…

#pragma region用法

简介 #pragma region 是VS(Visio Studio)所特有的预处理语法(其他IDE或者Cmake会报错),其可以用来收缩或者展开一段代码。 #pragma region MyRegion// ...Code content #pragma endregion 其中,MyRegion 即给这代码块所定义的名…

【python中级】将字符串按照固定长度分割

【python中级】将字符串按照固定长度分割 1、背景2、代码1、背景 近期有将图片进行base64编码成字符串的工作,参考博客: 【python中级】 base64编码将图片数据转化为成字符串 https://jn10010537.blog.csdn.net/article/details/131894686 我将图片编码成字符串后,再写到p…

地震反演基础知识1

文章目录 地震反演基础知识11. 基础知识1.1 正演反演1.2 地震数据1.3 速度模型1.4 道1.5 FWI的端到端深度学习1.6 传统FWI vs. DL-FWI 2. 数据信息2.1 数据集的层级关系2.2 SEG盐体数据2.3 OpenFWI数据集 地震反演基础知识1 1. 基础知识 1.1 正演反演 正演 根据地下介质的参…

electron的electron-packager打包运行和electron-builder生产安装包过程,学透 Electron 自定义 Dock 图标

electron的electron-packager打包运行和electron-builder生产安装包过程 开发electron客户端程序,打包是绕不开的问题。 macOS 应用构建,看似近在咫尺,实则坑坑致命。 场景:mac笔记本打包,以及生产出可交付的软件安装…

自学网络安全(黑客)的误区

前言 网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。 一、网络安全学习的误区 1.不要…

windows系统安装ArtemisMQ

windows系统安装ArtemisMQ ArtemisMQ介绍 apache-artemi 是apache-activemq的新一代MQ产品。 特点: 1.支持多种mq协议,如jms\amqp\mqtt等协议。 2.部署方便,可以快速生成多个broker实例,以及部署集群。 3.已提供spring-boot-sta…

学习数学助手Schooltech Math Resource Studio 7.0 Crack

数学资源工作室 数学工作表生成器:快速轻松地创建数学工作表 使用易于使用的数学工作表生成器软件创建可打印的数学练习工作表。通过练习、谜题、问题等提高数学技能。 瞄准学习需求并激励学生 Math Resource Studio 是个性化数学教学的理想软件解决方案&#xff0c…

LeetCode279.Perfect-Squares<完全平方数>

题目: 思路: 这一题和硬币那题有一点像。 (13条消息) LeetCode322.Coin-Change<零钱兑换>_Eminste的博客-CSDN博客 所以我们初始化一系列“硬币”(平方数) 然后扫描用多少个“硬币”可以组成值。 最后返…

【ICCV2023】Scale-Aware Modulation Meet Transformer

Scale-Aware Modulation Meet Transformer, ICCV2023 论文:https://arxiv.org/abs/2307.08579 代码:https://github.com/AFeng-x/SMT 解读:ICCV2023 | 当尺度感知调制遇上Transformer,会碰撞出怎样的火花&#xff1…

C# 复习笔记

文章目录 Visual C# Step By StepC# 7.0核心技术指南面向对象是怎样工作的 Visual C# Step By Step 1.Net FrameWork:为开发应用程序而创建的一个平台(可以是运行在windows ,也可以是运行在其他操作系统)。例如Mono,它…

第119天:免杀对抗-二开CSShellcode函数修改生成模版修改反编译重打包(下)

知识点 #知识点: 1、CS-表面特征消除 2、CS-HTTP流量特征消除 3、CS-Shellcode特征消除#章节点: 编译代码面-ShellCode-混淆 编译代码面-编辑执行器-编写 编译代码面-分离加载器-编写 程序文件面-特征码定位-修改 程序文件面-加壳花指令-资源 代码加载面…

C语言-print字符串打印-转义字符妙用

这里有两个有关打印的小知识 打印的字符串内容由两部分组成:可见字符、转义字符;各种字母、数字、以及空格,均属于可见字符,“\”等属于转义字符 举例: 1.直接print里面打印内容,内容直接出现 2.这里想将一…

iptable防火墙

主要作用: 隔离功能,在工作中,防火墙 的主要作用决定哪些数据可以被外网访问以及哪些数据可以进入内网访问 一般部署在网络边缘或者主机边缘,作用于网络层 安全技术: 1、入侵检测系统: 检测病毒、木马&a…

如何进行SQL优化

一、SQL优化的主要步骤 在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生…

Oracle转Mysql出现的问题记录

学海无涯,旅“途”漫漫,“途”中小记,如有错误,敬请指出,在此拜谢! 文章目录 前言函数错误concat函数使用有区别代码示例导致问题区别及分析解决方法 时间相减代码示例导致问题区别与分析解决方法 or 不走索…

入门Linux基本指令(1)

本篇文章介绍Linux中的一些常用基本指令来供大家学习和参考。 目录 ls指令 pwd指令 cd指令 .和.. touch指令与mkdir指令 rm指令 man指令 ls指令 语法 : ls [ 选项 ][ 目录或文件 ] 功能 :对于目录,该命令列出该目录下的所有子目录与…

无符号数和有符号数的“bug”

1. 起因 在实现kmp算法时&#xff0c;出现了诡异的现象&#xff0c;看下面的代码&#xff1a; int KMP (const char *s, const char *t) {int lenS strlen (s);int lenT strlen (t);int next[lenT];get_next (next, t);int i 0;int j 0;while (i < lenS && j …