Mysql的基本查询练习

news2024/11/20 1:46:13

目录

一、Create

1.1单行数据+全列插入

1.2 多行数据+指定列插入

1.3插入否则更新

1.4 替换

二、Retrieve

2.1全列查询

2.2指定列查询

2.3查询字段为表达式

 2.4为查询结果指定别名

2.5 结果去重

2.6 where 条件

2.6 NULL的查询

2.7 结果排序

三、 Update

四、Delete

五、插入查询结果

六、聚合函数

七、group by子句的使用

CRUD:Create(创建),Retrieve(读取),Update(更新),Delete(删除)

一、Create

语法:

        insert  [ into ]  table_name [ (column [,column] ...) ] values (value_list) [, (value_list)] ...

value_list:value,[ , value ] ...

[]中的语法是可以忽略的。

案例:

创建一张学生表:

1.1单行数据+全列插入

 

 

1.2 多行数据+指定列插入

 

 value_list 数量必须和指定列数量及顺序一致。

1.3插入否则更新

由于主键或者唯一键对应的值已经存在而导致插入失败

----- 主键冲突

------唯一键冲突

可以选择性的进行同步更新操作语法:

 insert  ...  on duplicate key update column = value [, column = value] ...

关于mysql返回的信息:

---  0 row affected:  表中有冲突数据,但冲突数据的值和 update 的值相等 

---  1 row affected:  表中没有冲突数据,数据被插入

---  2 row affected:  表中有冲突数据,并且数据已经被更新

--通过mysql函数获取收到影响的数据行数

1.4 替换

语法:

        replace  into  table_name (line_name,..) values();

如果出现冲突,删除旧数据插入新数据,如果没有冲突,则擦汗如数据。

二、Retrieve

语法:

select

        [distinct] {*  |  {column [, column ]...}}

        [from table_name]

        [where ...]

        [order by column [asc | desc ],  ...]

        limit  ... 

案例:

---创建表结构

 

2.1全列查询

         select * from table_name;

通常情况下不建议使用 * 进行全列查询。主要原因是查询的列越多,意味着需要传输的数据量越大;而且有可能会影响到索引的使用。

2.2指定列查询

         select line_name,... from table_name;

2.3查询字段为表达式

---表达式不包含字段

 

---表达式包含一个字段

 

--- 表达式包含多个字段

 2.4为查询结果指定别名

语法:

        select column [as] alias_name [...] from table_name;

2.5 结果去重

 

 有结果重复。

加上 distinct 选项。

2.6 where 条件

比较运算符:

逻辑运算符:

案例:

🖊英语不及格的同学及英语成绩(<60)

🖊语文成绩在[80,90]分的同学及语文成绩

--使用and进行条件连接

 -- 使用between  and  条件

🖊数学成绩是58或者59或者98或者99分的同学及数学成绩

 -- 使用or进行条件连接

--- 使用in条件

🖊姓孙的同学及孙某同学

---% 匹配任意多个(包括0个)任意字符

-- _ 匹配严格的一个任意字符

 

🖊语文成绩好于英语成绩的同学

----where 条件中比较运算符两侧都是字段

🖊总分在200分以下的同学

--- where条件中使用表达式

 

别名不能用在where条件中是因为where在判断时是拿着别名去查询满足条件的条目。

🖊语文成绩>80并且不姓孙的同学

 🖊孙某同学,否则要求总成绩>200并且语文成绩<数学成绩并且英语成绩>80

---综合性查询

2.6 NULL的查询

 --查询students表

--查询qq号已知的同学姓名

--- null和null的比较,=和<=>的区别

2.7 结果排序

语法:

--- asc 为升序(从小到大)

--- desc 为降序(从大到小)

--- 默认为asc

select  ... from table_name [where ...]  order by column [asc | desc], [...];

🖊同学及数学成绩,按数学成绩升序显示

🖊 同学及qq号,按qq号排序显示

--null虽然不能运算,但是视为比任何值都小,所以升序出现在最上面。

🖊查询同学各门成绩,依次按数学降序,英语升序,语文升序的方式显示

---多字段排序,排序优先级随书写顺序。

🖊查询同学及总分,由高到低

--order by中可以使用表达式

 

---order by 子句中可以使用列别名

 

 🖊查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示

--- 结合 where子句 和order by 子句

2.8筛选分页结果

语法:

-- 起始下标为0

-- 从 0 开始,筛选 n条结果

select  ... from table_name [where ...] [order by ...] limit n;

-- 从s开始,筛选n条结果

select  ... from table_name [where ...] [order by ...] limit s, n;

-- 从s开始,筛选n条结果,比第二种用法更明确,建议使用

select ...  from table_name [where ...] [order by ...] limit n offset s; 

注:在对未知表查询时,最好加一条limit 1,避免因为表中数据过大,查询全表数据导致数据库卡死。

按id进行分页,每页3条记录,分别显示第1、2、3页。

 

三、 Update

语法:

update table_name set column = expr [, column = expr ...]  [where ... ] [order by ...] [ limit ...]

对查询到的结果进行列值更新

案例:

🖊将孙悟空同学的数学成绩变更为80分。

🖊将曹孟德同学的数学成绩变更为60分,语文成绩变更为70分

🖊将总成绩倒数前三的3位同学的数学成绩加上30分

 

四、Delete

语法:

        delete from table_name [where ...] [order by ...] [limit ...]

🖊删除孙悟空同学的考试成绩

👓删除整张表数据

这类操作要慎用。

-- 准备测试表

-- 插入测试数据

-- 查看测试数据

删除查看结果

--再插入一条数据,发现自增id在原值上增长而没有重置:

--查看表结构:

👓截断表

语法:

        truncate [table] table_name;

~~这个操作只能对整张表操作,不能像delete一样针对部分数据操作;

~~这项操作mysql不会记录,比delete更快,无法回滚。

~~会重置auto_increment项。

--准备测试表

--插入测试数据

--查看测试数据

--截断整表数据,注意影响行数是0,所以实际上没有对数据真正操作,mysql也没有记录

--查看删除结果

--再插入一条数据,自增id在重新增长

--查看数据

--查看表结构,会发现auto_increment=2项

五、插入查询结果

语法:

insert into table_name [(column [,column ...])] select ...

案例:删除表中的重复记录,重复的记录只能有一份。

思路:

--创建一张空表 no_duplicate_table,结构和duplicate_table 一样

--将duplicate_table的去重数据插入到no_duplicate_table

--通过重命名表,实现原子的去重操作

--查看最终结果

六、聚合函数

案例

🖊统计班级共有多少同学

--用*做统计,不受NULL影响

 

--使用表达式做统计

 

🖊统计班级收集的qq号有多少

--null不会计入结果

 

 🖊统计本次考试的数学成绩分数个数

--count(math)统计的是全部成绩

 --count(distinct math) 统计的是去重成绩数量

🖊统计数学成绩总分

 

🖊统计平均总分

🖊返回英语最高分

 

 🖊返回>70分以上的数学最低分

七、group by子句的使用

 在select中使用group by子句可以对指定列进行分组查询

select  column1,column2,.. from table group by column;

案例:

准备工作,创建一个雇员信息表(码云地址
,来自oracle 9i的经典测试表)

        EMP 员工表

        DEPT部门表

        SALGRADE工资等级表

🖊显示每个部门的平均工资和最高工资

🖊显示每个部门的每种岗位的平均工资和最低工资

 

having是对分完组后最终聚合统计的结果进行判断。而where只能对具体的任意列进行条件筛选

🖊显示平均工资低于2000的部门和它的平均工资,但是SMITH员工不参与统计。


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

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

相关文章

电力系统直流潮流分析【N-1】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

VHOST-SCSI代码分析(0)VHOST概述

与VIRTIO框架相比&#xff0c;VHOST将设备放到HOST上&#xff0c;让Guest和Host Kernal Space之间共享virtqueue&#xff0c;减少Exception Level切换。 对于数据的传递&#xff0c;依次经历&#xff1a;Guest UserSpace&#xff08;EL0&#xff09;-> Guest KernelSpace&am…

MySQL索引,事务及存储引擎

目录 MySQL索引 创建索引的依据&#xff1a; 索引的类型 普通索引 唯一索引 主键索引 组合索引 全文索引 查看索引 删除索引 事务 事务的 ACID 特性 原子性 一致性 隔离性 持久性 隔离级别 设置隔离级别 事务管理操作 自动提交事务 存储引擎 M…

GODIVA论文阅读

论文链接&#xff1a;GODIVA: Generating Open-DomaIn Videos from nAtural Descriptions 文章目录 摘要引言相关工作Video-to-video generationText-to-image generationText-to-video generation GODIVA方法逐帧视频自动编码器GODIVA视频生成器 实验数据集评价指标自动评估指…

QT基础教程(对话框1)

文章目录 前言一、对话框概念二、模态对话框三、非模态对话框总结 前言 本篇文章我们来讲解QT中的对话框。 资料合集地微信公众号&#xff1a;优质程序猿一、对话框概念 在Qt中&#xff0c;对话框&#xff08;Dialog&#xff09;是一种用于与用户进行交互、收集输入或展示信…

适用于 Android 的 Windows 子系统™️发行说明

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 内部版本 2304.40000.3.0 内部版本 2303.40000.3.0 内部版本 2302.4000 内部版本 2301.40000.4.0 内部版本 221…

【wxWidgets 如何实现wxAccordion 手风琴组件】

1. 简要说明 wxWidgets 并没有提供wxAccordion 手风琴组件面板, 网上也基本没有找到资料,CSDN有个标题:wxAccordion:wxWidgets的手风琴控件下载链接,再无资料可查, 但是其他语言是提供了手风琴面板组件的, 那么怎么办呢,开干喽… 2. 效果展示 3. 交流探讨 代码就暂时不发了,…

【LeetCode-简单题】225. 用队列实现栈

文章目录 题目方法一&#xff1a;单个队列实现 题目 方法一&#xff1a;单个队列实现 入栈 和入队正常进行出栈的元素其实就是队列的尾部元素&#xff0c;所以直接将尾部元素弹出即可&#xff0c;其实就可以将除了最后一个元素的其他元素出队再加入队&#xff0c;然后弹出队首元…

第二章 进程与线程 八、处理机调度(时机切换、过程调度方式)

一、进程调度的时机 二、进程调度的方式 1、非剥夺调度方式&#xff1a; 非剥夺调度方式&#xff0c;又称非抢占方式。即只允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务到达&#xff0c;当前进程依然会继续使用处理机&#xff0c;直到该进程终止或主动要求进入阻…

virtualbox配置ubuntu1804虚拟机相关流程

virtualbox配置ubuntu1804虚拟机相关流程 相关版本能解决的问题安装流程1&#xff1a;新建虚拟机安装流程2&#xff1a;配置虚拟机安装流程3&#xff1a;安装虚拟机系统安装流程4&#xff1a;设置ubuntu 相关版本 virtualbox使用VirtualBox官网下载的6.1.34 r150636 版。ubunt…

CSRF攻击原理详解

CSRF概念&#xff1a; CSRF定义&#xff1a; 跨站请求伪造&#xff08;英语&#xff1a;Cross-site request forgery&#xff09;是一种对网站的恶意利用&#xff0c;也被称为 one-click attack 或者 session riding&#xff0c;通常缩写为 CSRF 或者 XSRF&#xff0c; 是一种…

通用商城项目(下)之——Nginx的安装及使用

&#xff08;作为通用商城项目的一个部分&#xff0c;单独抽离了出来。查看完整见父页面&#xff1a; &#xff09; 加入Nginx-完成反向代理、负载均衡和动静分离 1.配置SSH-使用账号密码&#xff0c;远程登录Linux 1.1配置实现 1、配置sshd 1)sudo vi /etc/ssh/sshd_confi…

Rasa:使用大语言模型进行意图分类

Rasa:使用大语言模型进行意图分类 在Rasa的最新版本(3.x)中,引入了一种新的意图分类方法,即使用大型语言模型(LLM)和一种称为检索增强生成(RAG)的方法进行意图分类。 LLM意图分类器是一种全新的意图分类器,利用大型语言模型(LLM)来对意图进行分类。LLM意图分类器…

汽车租赁系统设计与实现

汽车租赁系统 1&#xff0e;需求分析 1.1任务概述 1.2开发环境和使用技术 1.3数据库设计 2&#xff0e;登陆模块 2.1登陆页面的代码是&#xff1a; 2.2登录类login.java的代码如下&#xff1a; 2.3LoginServlet.java的代码如下&#xff1a; 3&#xff0e;公共…

ESP-IDF学习——1.环境安装与hello-world

ESP-IDF学习——1.环境安装与hello-world 0.前言一、环境搭建1.官方IDE工具2.vscode图形化配置 二、示例工程三、自定义工程四、点灯五、总结 0.前言 最近在学习freertos&#xff0c;但由于买的书还没到&#xff0c;所以先捣鼓捣鼓ESP-IDF&#xff0c;因为这个比Arduino更接近底…

神秘字符(acm模式)

#include<iostream> #include<cctype> #include<string> using namespace std; int main() {int n;cin >> n;getchar();while (n--){string str, str1, str2"";//cin >> str >> str1;getline(cin, str);//遇到换行符就忽略&…

GB28181学习(五)——实时视音频点播(信令传输部分)

要求 实时视音频点播的SIP消息应通过本域或其他域的SIP服务器进行路由、转发&#xff0c;目标设备的实时视音频流宜通过本域的媒体服务器进行转发&#xff1b;采用INVITE方法实现会话连接&#xff0c;采用RTP/RTCP协议实现媒体传输&#xff1b;信令流程分为客户端主动发起和第…

CCC数字钥匙设计【BLE】--PE进入流程建立BLE加密连接

1、PE进入流程 PE进入的流程大体可以拆解为如下步骤&#xff1a; 1、手机与车端建立BLE加密连接&#xff1b; 2、创建URSK流程&#xff1b; 3、时间同步流程&#xff1b; 4、UWB测距流程&#xff1b; 5、根据各锚点BLE的RSSI及UWB的距离值&#xff0c;通过定位算法进行手…

Android 图片加载框架Glide源码详解

我们看Glide的源码从Glide类入手&#xff0c;使用的时候我们先调用的with方法&#xff0c;源码中with有3个多载的方法&#xff1a;下图翻译过来就是activity用FragmentActivity Applicationcontext用 with&#xff08;Context&#xff09;还有一个with&#xff08;View)的 殊途…

西瓜书读书笔记整理(六)—— 第六章 支持向量机

第六章 支持向量机 6.1 间隔与支持向量6.1.1 什么是支持向量机6.1.2 支持向量与间隔6.1.3 支持向量机的求解过程 6.2 对偶问题&#xff08;dual problem&#xff09;6.2.1 什么是对偶问题6.2.2 如何求解支持向量机的对偶问题 6.3 核函数&#xff08;kernel function&#xff09…