Mysql基础【操作表中数据入门查询】

news2024/10/7 2:29:16

一、DML🍓

DML主要是对数据进行增(insert)删(delete)改(update)操作。

(一)、添加数据🥝

语法格式:

insert into 表名 (字段名1,字段名2...values(字段值1,字段值2...);

create table
Student

insert into Student  (id,name,age) values(1,"dongtianchi",18);
insert into Student  (id,name,age) values(2,"fengxudong",19);

在这里插入图片描述

案例

表名:student
 表中字段: 
 学员ID, sid int 
 姓名, sname varchar(20) 
 年龄, age int 
 性别, sex char(1) 
 地址, address varchar(40) 
 # 创建学生表 
 CREATE TABLE student( 
   sid INT, 
   sname VARCHAR(20), 
   age INT, 
   sex CHAR(1), 
   address VARCHAR(40) 
 ); 

向学生表中添加数据,3种方式
方式1: 插入全部字段, 将所有字段名都写出来

INSERT INTO student (sid,sname,age,sex,address) 
VALUES(1,'孙悟空',20,'男','花果山'); 

方式2: 插入全部字段,不写字段名

INSERT INTO student VALUES(2,'孙悟饭',10,'男','地球'); 

方式3:插入指定字段的值

INSERT INTO category (cname) VALUES('白骨精'); 

批量添加数据

 INSERT INTO 表名(列名1,列名2,) VALUES(1,2,),(1,2,),(1,2,);
 INSERT INTO 表名 VALUES(1,2,),(1,2,),(1,2,);

INSERT INTO student VALUES
(2,'孙悟饭',10,'男','地球'),
(3,'孙悟饭1',10,'男','地球'); 

(二)、 修改数据🥝

语法格式1:不带条件的修改

update 表名 set 列名 =

语法格式2:带条件的修改

update 表名 set 列名 =[where 条件表达式:字段名 =]

1)不带条件修改,将所有的性别改为女(慎用!!)

UPDATE student SET sex = '女';

2)带条件的修改,将sid 为3的学生,性别改为男

UPDATE student SET sex = '男' WHERE sid = 3;

3)一次修改多个列, 将sid为 2 的学员,年龄改为 20,地址改为 北京

UPDATE student SET age = 20,address = '北京' WHERE sid = 2; 

(三)、 删除数据🥝

删除数据

 DELETE FROM 表名 [WHERE 条件] ;

1)删除 sid 为 1 的数据

DELETE FROM student WHERE sid = 1;
  1. 删除所有数据
DELETE FROM student; 
  1. 如果要删除表中的所有数据,有两种做法
  1. delete from 表名; 不推荐. 有多少条记录 就执行多少次删除操作. 效率低
  2. truncate table 表名: 推荐. 先删除整张表, 然后再重新创建一张一模一样的表. 效率高
truncate table student; 

二、 DQL 查询表中数据🍓

DQL:查询语法

SELECT 
    字段列表(想要查询的字段)
FROM 
    表名列表 (来源表) 
WHERE 
    条件列表 
GROUP BY
    分组字段  
HAVING
    分组后条件
ORDER BY
    排序字段
LIMIT
    分页限定

准备初试数据

#创建员工表
  表名 emp
  表中字段:
  eid 员工id,int
  ename 姓名,varchar
  sex 性别,char
  salary 薪资,double
  hire_date 入职时间,date
  dept_name 部门名称,varchar
  
# 删除emp表
drop table if exists emp;
#创建员工表
CREATE TABLE emp(
  eid INT,
  ename VARCHAR(20),
  sex CHAR(1),
  salary DOUBLE,
  hire_date DATE,
  dept_name VARCHAR(20)
);
#添加数据
INSERT INTO emp VALUES(1,'孙悟空','男',7200,'2013-02-04','教学部');
INSERT INTO emp VALUES(2,'猪八戒','男',3600,'2010-12-02','教学部');
INSERT INTO emp VALUES(3,'唐僧','男',9000,'2022-09-08','教学部');
INSERT INTO emp VALUES(4,'白骨精','女',5000,'2022-10-07','市场部');
INSERT INTO emp VALUES(5,'蜘蛛精','女',5000,'2022-09-14','市场部');
INSERT INTO emp VALUES(6,'玉兔精','女',200,'2022-03-14','市场部');
INSERT INTO emp VALUES(7,'林黛玉','女',10000,'2019-10-07','财务部');
INSERT INTO emp VALUES(8,'黄蓉','女',3500,'2022-09-14','财务部');
INSERT INTO emp VALUES(9,'吴承恩','男',20000,'2022-03-14',NULL);
INSERT INTO emp VALUES(10,'孙悟饭','男', 10,'2020-03-14','财务部');
INSERT INTO emp VALUES(11,'兔八哥','女', 300,'2022-03-14','财务部');

(一)、 简单查询🥝

  • 查询多个字段
 SELECT 字段列表 FROM 表名;
 SELECT * FROM 表名; -- 查询所有数据
  • 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
  • 起别名
 AS: AS 也可以省略
  1. 查询emp中的 所有数据
SELECT * FROM emp; -- 使用 * 表示所有列
  1. 查询emp表中的所有记录,仅显示id和name字段
SELECT eid,ename FROM emp; 
  1. 将所有的员工信息查询出来,并将列名改为中文
# 使用 AS关键字,为列起别名
SELECT
  eid AS '编号',
  ename AS '姓名' ,
  sex AS '性别',
  salary AS '薪资',
  hire_date '入职时间', -- AS 可以省略
  dept_name '部门名称'
FROM emp;
  1. 查询一共有几个部门
使用去重关键字 distinct
-- 使用distinct 关键字,去掉重复部门信息 
SELECT DISTINCT dept_name FROM emp; 

  1. 将所有员工的工资 +1000 元进行显示
SELECT ename , salary + 1000 FROM emp

(二)、 条件查询🥝

1) 语法🍎

 SELECT 字段列表 FROM 表名 WHERE 条件列表;

条件
条件列表可以使用以下运算符

在这里插入图片描述

2) 条件查询练习🍎

# 查询员工姓名为黄蓉的员工信息
# 查询薪水价格为5000的员工信息
# 查询薪水价格不是5000的所有员工信息
# 查询薪水价格大于6000元的所有员工信息
# 查询薪水价格在500010000之间所有员工信息
# 查询薪水价格是36007200或者20000的所有员工信息

代码实现

# 查询员工姓名为黄蓉的员工信息
SELECT * FROM emp WHERE ename = '黄蓉';
# 查询薪水价格为5000的员工信息
SELECT * FROM emp WHERE salary = 5000;
# 查询薪水价格不是5000的所有员工信息
SELECT * FROM emp WHERE salary != 5000;
SELECT * FROM emp WHERE salary <> 5000;
# 查询薪水价格大于6000元的所有员工信息
SELECT * FROM emp WHERE salary > 6000;
# 查询薪水价格在500010000之间所有员工信息
SELECT * FROM emp WHERE salary BETWEEN 5000 AND 10000;
# 查询薪水价格是36007200或者20000的所有员工信息
-- 方式1: or
SELECT * FROM emp WHERE salary = 3600 OR salary = 7200 OR salary = 20000;
-- 方式2: in() 匹配括号中指定的参数
SELECT * FROM emp WHERE salary IN(3600,7200,20000);

3)模糊查询练习🍎

模糊查询使用like关键字,可以使用通配符进行占位:
(1)_ : 代表单个任意字符
(2)% : 代表任意个数字符

# 查询含有'精'字的所有员工信息
SELECT * FROM emp WHERE ename LIKE '%精%';
# 查询以'孙'开头的所有员工信息
SELECT * FROM emp WHERE ename LIKE '孙%';
# 查询第二个字为'兔'的所有员工信息
SELECT * FROM emp WHERE ename LIKE '_兔%';
# 查询没有部门的员工信息
SELECT * FROM emp WHERE dept_name IS NULL;
-- SELECT * FROM emp WHERE dept_name = NULL;
# 查询有部门的员工信息
SELECT * FROM emp WHERE dept_name IS NOT NULL;

(三)、排序查询🥝

1)语法🍎

 SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2];

上述语句中的排序方式有两种,分别是:

  • ASC : 升序排列 (默认值)
  • DESC : 降序排列

注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序

2) 练习🍎

  1. 单列排序
    使用 salary 字段,对emp 表数据进行排序 (升序/降序)
-- 默认升序排序 ASC
SELECT * FROM emp ORDER BY salary;
-- 降序排序
SELECT * FROM emp ORDER BY salary DESC;
  1. 组合排序
    同时对多个字段进行排序, 如果第一个字段相同 就按照第二个字段进行排序,以此类推
    在薪水排序的基础上,再使用id进行排序, 如果薪水相同就以id 做降序排序
-- 组合排序 
SELECT * FROM emp ORDER BY salary DESC, eid DESC; 

(四)、 聚合函数 🥝

1) 概念🍎

之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对某一列的值进行计算,然后返回一个单一的值(另外聚合函数会忽略null空值。);

2) 聚合函数分类🍎

在这里插入图片描述

3) 聚合函数语法🍎

 SELECT 聚合函数名(列名) FROM;

注意:null 值不参与所有聚合函数运算

4) 练习🍎

#1 查询员工的总数
#2 查看员工总薪水、最高薪水、最小薪水、薪水的平均值
#3 查询薪水大于4000员工的个数
#4 查询部门为'教学部'的所有员工的个数
#5 查询部门为'市场部'所有员工的平均薪水

#1 查询员工的总数
-- 统计表中的记录条数 使用 count()
SELECT COUNT(eid) FROM emp; -- 使用某一个字段
SELECT COUNT(*) FROM emp; -- 使用 *
SELECT COUNT(1) FROM emp; -- 使用 1,* 效果一样
-- 下面这条SQL 得到的总条数不准确,因为count函数忽略了空值
-- 所以使用时注意不要使用带有null的列进行统计
SELECT COUNT(dept_name) FROM emp;
#2 查看员工总薪水、最高薪水、最小薪水、薪水的平均值
-- sum函数求和, max函数求最大, min函数求最小, avg函数求平均值
SELECT
SUM(salary) AS '总薪水',
MAX(salary) AS '最高薪水',
MIN(salary) AS '最低薪水',
AVG(salary) AS '平均薪水'
FROM emp;
#3 查询薪水大于4000员工的个数 
SELECT COUNT(*) FROM emp WHERE salary > 4000; 

#4 查询部门为'教学部'的所有员工的个数 
SELECT COUNT(*) FROM emp WHERE dept_name = '教学部'; 

#5 查询部门为'市场部'所有员工的平均薪水 
SELECT AVG(salary) AS '市场部平均薪资' FROM emp 
WHERE dept_name = '市场部';

(五)、 分组查询🥝

1) 语法🍎

 SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];

注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

-- 按照性别进行分组操作 
SELECT * FROM emp GROUP BY sex; -- 注意 这样写没有意义 

在这里插入图片描述

2) 练习🍎

1.通过性别字段 进行分组,求各组的平均薪资

SELECT sex, AVG(salary) FROM emp GROUP BY sex;

2:

#1.查询所有部门信息 
#2.查询每个部门的平均薪资 
#3.查询每个部门的平均薪资, 部门名称不能为null 
#1. 查询有几个部门 
SELECT dept_name AS '部门名称' FROM emp GROUP BY dept_name; 
#2.查询每个部门的平均薪资 
SELECT dept_name AS '部门名称', AVG(salary) AS '平均薪资' FROM emp GROUP BY dept_name;

#3.查询每个部门的平均薪资, 部门名称不能为null 
SELECT dept_name AS '部门名称', 
AVG(salary) AS '平均薪资' 
FROM emp 
WHERE dept_name IS NOT NULL GROUP BY dept_name; 

3:

# 查询平均薪资大于6000的部门. 

分析:

  1. 需要在分组后,对数据进行过滤,使用 关键字 hiving
  2. 分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件。

sql实现

# 查询平均薪资大于6000的部门 
-- 需要在分组后再次进行过滤,使用 having 
SELECT dept_name , AVG(salary) FROM emp 
WHERE dept_name IS NOT NULL GROUP BY dept_name 
HAVING AVG(salary) > 6000 ; 

where 和 having 区别:

  • 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
  • 可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。

(六)、 分页查询🥝

大家在很多网站都见过类似的效果,如京东、百度、淘宝等。分页查询是将数据一页一页的展示给用户看,用户也可以通过点击查看下一页的数据。
在这里插入图片描述

接下来我们先说分页查询的语法。

1) 语法🍎

SELECT 字段1,字段2... FROM 表名 LIMIT offset , length; 
# limit offset , length; 关键字可以接受一个 或者两个 为0 或者正整数的参数 
# offset 起始行数,0开始记数, 如果省略 则默认为 0.
# length 返回的行数

注意: 上述语句中的起始索引是从0开始

2) 练习🍎

# 查询emp表中的前5条数据
-- 参数1 起始值,默认是0 , 参数2 要查询的条数
SELECT * FROM emp LIMIT 5;
SELECT * FROM emp LIMIT 0 , 5;
# 查询emp表中 从第4条开始,查询6-- 起始值默认是从0开始的.
SELECT * FROM emp LIMIT 3 , 6;

分页操作 每页显示3条数据

-- 分页操作 每页显示3条数据
SELECT * FROM emp LIMIT 0,3; --1SELECT * FROM emp LIMIT 3,3; --22-1=1 1*3=3
SELECT * FROM emp LIMIT 6,3; -- 第三页
-- 分页公式 起始索引 = (当前页 - 1) * 每页条数
-- limit是MySql中的方言

从上面的练习推导出起始索引计算公式:

 起始索引 = (当前页码 - 1) * 每页显示的条数
第一页数据 1-1 *5    0
第二页数据 2-1 *5     5
第三页     3-1 *5     10

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

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

相关文章

2024年【MCM/ICM】美国大学生数学建模竞赛优秀论文(免费下载)

一、前言 美国大学生数学建模竞赛&#xff08;MCM/ICM&#xff09;由美国数学及其应用联合会主办&#xff0c;是最高的国际性数学建模竞赛&#xff0c;也是世界范围内最具影响力的数学建模竞赛&#xff0c;一般也指数学建模竞赛。赛题内容涉及经济、管理、环境、资源、生态、医…

APP开发费用估算方法

估算APP开发费用是一个重要的项目管理步骤&#xff0c;它有助于确定项目的总成本&#xff0c;并帮助您在项目规划阶段做出决策。APP开发费用估算的方法可以根据项目的规模、复杂性、功能和技术选择而异&#xff0c;以下是一些常见的APP开发费用估算方法&#xff0c;希望对大家有…

Vue3最佳实践 第五章 Vue 组件应用 1( Props )

本章带领大家理解组件、props、emits、slots、providers/injects&#xff0c;Vue 插件 等Vue组件使用的基础知识。 5.1 组件注册5.2 Props5.2.1 组件之间如何传值5.2.2 参数绑定 v-bind5.2.3 参数类型5.2.4 props 默认与必填5.2.5 验证设置5.2.6 useAttrs 属性设置 第一章 Vue3…

regexp 应用

今天同事拿出个小栗子 1 如果用like的话 1,22 的情况会被字符串2匹配到这样会有问题 这里需要用concat将uids处理下 比如第一条处理成&#xff0c;1,2&#xff0c;3&#xff0c; 的形式 去模糊匹配 ‘%,1,%’ 当然like这种模糊匹配不太建议使用 2 regexp 用法 单个值 &#x…

SpringBoot的excel模板导出

Word的模板导出(参考&#xff1a;https://easyexcel.opensource.alibaba.com/docs/current/quickstart/fill) 创建有两个sheet的excel文件模板 将模板文件放入resource\templates/doc下使用 public void exportUavInfoExcel(HttpServletResponse response, CaseExportRPO cas…

如何更改注册表使系统暂停更新时间延长

1、创建一个文本文件&#xff0c;命名为&#xff1a;“stopupdate.reg”&#xff0c;然后用记事本或者代码编辑器打开&#xff0c;复制以下代码&#xff1a; Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings] "F…

气传导耳机有哪些好处?热门气传导耳机推荐

​随着气传导耳机的快速发展&#xff0c;在运动、办公等场合能够经常看到&#xff0c;带来了前所未有的舒适体验。作为一种新型耳机类型&#xff0c;相较传统入耳式耳机来说&#xff0c;更有利于耳道卫生&#xff0c;在听歌时还能保持对环境声的感知。面对市面上这么多气传导耳…

Docker(二)、linux环境Docker的部署以及构建镜像

linux环境Docker的部署以及构建镜像 一、docker部署1、快速部署常用的命令&#xff1a;1.1、demo-部署tomcat1.2、tomcat容器内部结构1.2.1、每个tomcat容器&#xff0c;都包含三个组件1.2.2、在容器内部执行命令 1.3、容器生命周期 二、Dockerfile构建镜像1、demo-Dockerfile自…

[Linux入门]---进程优先级

文章目录 1.进程优先级基本概念 2.查看系统进程PRI and NI 3.查看进程优先级的命令引入其他概念 1.进程优先级 基本概念 cpu资源分配的先后顺序&#xff0c;就是指进程的优先权&#xff08;priority&#xff09;。优先权高的进程有优先执行权利。配置进程优先权对多任务环境的…

golang工程——常用数据结构底层原理【mao、slice、func、string】

字符串 其实就是字符数组 注意 字节数组与字符串可以相互转换 a : "hello world" b : []byte(a) c : string(b)字节数组转换为字符串在运行时调用了slicebytetostring函数。需要注意的是&#xff0c;字节数组与字符串的相互转换并不是简单的指针引用&#xff0c;…

下划线在键盘上怎么打?这3个方法快收藏!

“我最近的工作中好像很多文件里都有下划线&#xff0c;但是我不知道在键盘上应该怎么把下划线打出来&#xff0c;有没有知道的朋友呀&#xff1f;” 在计算机文档和编程中&#xff0c;下划线是一个常见的特殊字符。很多用户在使用电脑时可能也经常需要用到下划线。但是下划线在…

除静电离子风机在无尘车间的应用

除静电离子风机在无尘车间中的应用非常广泛&#xff0c;主要是用来控制车间内的静电荷&#xff0c;防止静电对车间内的电子元器件、电路板等敏感部件产生损害。 具体来说&#xff0c;除静电离子风机通常采用电离器产生大量负离子&#xff0c;将车间内的静电荷中和成无害的水蒸气…

基于微信小程序的高校学生事务考试通知管理系统(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

基于Java SpringBoot 的书籍学习平台,附源码,数据库

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈3 功能总览4平台设计4.1 平台功能模块设计4.2数据库设计4.2.1概念模型设计4.2.2物理…

100GBASE-DR光模块:高速数据中心互连的全新选择

100GBASE-DR光模块相较于传统的100G QSFP28光模块采用的是PAM4调制&#xff0c;单波长传输数据率更高&#xff0c;具有低功耗、高密度、高可靠性等优点&#xff0c;更适用于高速数据中心互连方案部署。本文将从100G QSFP28 DR光模块的概念界定、日常运行流程及其场景方案等角度…

ubuntu中的系统消息中显卡显示llvmpipe (LLVM 10.0.0, 256 bits)

这是我在使用ubuntu系统时出现的问题&#xff0c;网上搜到很多解决的办法&#xff0c;我是一顿操作&#xff0c;后来看到这位老哥的帖子解决了。 集Linux / Ubuntuwin10双系统安装记录(2):AMD核显驱动引发的问题 - 知乎上一篇中我们提到了 astroR2&#xff1a;Linux / Ubuntuw…

MySQL - group by分组查询 (查询操作 三)

功能介绍 group by: 对数据进行分组和聚合操作(可以操作单字段和多字段) having&#xff1a;过滤group by的结果&#xff0c;也就是在分组后添加筛选条件 基础语法 select 字段列表 from 表名 [ where 条件 ] group by 分组字段名 [ having ]; where 和 having的区…

【Visual Studio】解决编写C#代码时编辑器自动添加using问题

当我们编写引用其他作用域代码时&#xff0c;Visual Studio可能会非常“智能”地帮我们在代码顶部自动添加对应的using指令。 显然这项举动有利有弊&#xff0c;有利在于可以提高代码编写效率&#xff0c;有弊在于如果不慎编写错误的代码那么错误的using指令会自动添加。 尤其在…

核电厂设备故障预测与健康管理-基于PreMaint电气信号分析技术

核电厂作为重要的能源供应基地&#xff0c;设备的可靠性和安全性至关重要。传统的设备维护方式存在一定的盲目性和浪费&#xff0c;为了提高设备维护效率、减少成本&#xff0c;并确保核电厂的安全和稳定运行&#xff0c;引入了PreMaint设备健康管理平台的电气信号分析技术。本…

​比特币ETF将迎来审核窗口期

作者&#xff1a;Greg Cipolaro&#xff0c;NYDIG 全球研究主管 编译&#xff1a;WEEX Exchange 几只重要的 ETF 申请将于 10 月中旬迎来审核窗口&#xff0c;本文通过观察近期期权市场的动态&#xff0c;以研究交易者对这些关键 ETF 日期的仓位态度&#xff1b;门头沟&#xf…