在Mysql环境下对数据进行增删改查

news/2025/1/8 20:29:24/

一、插入数据:

insert into 表名 [(字段名)] values (字段对应的值1,字段对应的值2,…)[,(字段对应的值1,字段对应的值2,…)];

insert into students (id,name,age,height,gender,cls_id,is_delete)
values (0,'小明',18,180.00,2,1,0)

在学生表中插入“小明”数据的效果

二、修改数据:

update 表名 set 字段名1=新的数据值,字段名2=新的数据值 [where 条件];

UPDATE students SET name= '邓超';

将所有学生的姓名改成邓超的效果

三、删除数据:

1、delete from 表名;

----------删除表里的数据,但是表仍然存在

delete from 表名 [where 条件];------------根据条件进行删除表里的数据

DELETE FROM students where id = 1;

delete from删除可以加条件

2、truncate table 表名;

---------清空表里的数据,但表仍然存在,而且不能加条件

TRUNCATE TABLE students where id = 1;

truncate table删除数据会报错

四、数据查询:

1、基本查询:

①查询全部字段的全部数据:

select * from 表名;

select * from students;

查询所有学生信息

②查询部分字段的全部数据:

select 字段名1,字段名2…from 表名;

select name,gender from students;

查询所有学生的姓名,性别

③根据条件查询数据:

elect * from 表名 where 条件;

select name,gender from students where id = 1;

查询id为1学生的姓名,性别

④多个条件的查询:

条件与条件之间可以用and、or、in、between…and…来进行条件的连接

select * from students  where  gender='女' and  cls_id=2;

查询性别为女并且在2班的学生的信息

⑤模糊查询:

select * from 表名 where 字段名 like ‘值’;----------% _

select * from students where name like '小%';

查询名字里面包含’小’的学生的信息

⑥去重:

select distinct 字段名 from 表名;

select distinct gender from students;

查询性别有几种分类

⑦排序:
  • 按照单个字段排序:

select * from 表名 order by 字段名 asc/desc;(asc升序-默认,desc降序)

select * from students order by height;

将学生的身高按照升序排列

  • 按照多个字段排序:

select * from 表名 order by 字段名1 asc/desc,字段名2 asc/desc;

select * from students order by height,age;

将学生的身高、年龄按照升序排列

  • 有条件的排序:

select * from 表名 where 条件 order by 字段名 asc/desc;

select * from students where age = 18 order by height;

将年龄为18岁的学生按照身高升序排列

⑧限制查询结果的数量:

limit

select * from students limit 2;

只看前2条学生信息

2、连接查询:

(涉及到两个表以上,在查询的时候至少要有一个必备的连接条件,这个必备的条件就是两个表共有的那个字段相等,而且这个字段一定在一个表里是主键,在另一个表里是外健)

①内连接
  • 显示内连接:select 字段 from 表名1 inner join 表名2 on 两个表连接的条件 [where 条件];

    select s.name,c.name from students s inner join classes c on s.cls_id=c.id;

查看学生所在班级

  • 隐式内连接:select 字段 from 表名1,表名2 where 两个表连接的条件 [and 其他查询的条件];

    select s.name as ‘名字’,c.name as ‘班级’ from students s, classes c where s.cls_id = c.id;

查看学生所在班级

②外连接
  • 左外连接:select 字段 from 表名1 left join 表名2 on 两个表连接的条件 [where 条件];------左表的数据全部查询出来,右表符合条件的查询出来

    select c.name,t.name from classes c left join teachers t on c.teacher_id = t.id;

查看老师所在班级

  • 右外连接:select 字段 from 表名1 right join 表名2 on 两个表连接的条件 [where 条件];------右表的数据全部查询出来,左表符合条件的查询出来

    select c.name,t.name from classe c right join teachers t on c.teacher_id = t.id;

查看老师所在班级

3、聚合函数查询:

①count()-计数
select count(*) as '学生总数' from students;

查询班级有多少同学

②sum()-求和
select sum(height) as '身高之和' from students;

查询班级学生的身高之和

③max()-最大值
select max(height) as '最高身高' from students;

查询班级学生的最高身高

④min()-最小值
mysql> select min(height) as '最矮身高' from students;

查询班级学生的最矮身高

⑤avg()-平均值
select avg(height) as '平均身高' from students;

查询班级学生的平均身高

⑥select 聚合函数名(字段名) from 表名 [where 条件];
SELECT AVG(height) AS '1班平均身高' FROM students WHERE cls_id = 1;

查询1班学生的平均身高

⑦select 分组的字段名,聚合函数名(字段名) from 表名 [group by 分组的字段名];
SELECT cls_id AS class_id, COUNT(*) AS student_count, AVG(age) AS average_age, MAX(height) AS max_height, MIN(height) AS min_height FROM students GROUP BY cls_id;

按班级分组查询每个班级的学生人数、平均年龄、最高身高和最低身高

4、子查询:查询嵌套查询

①子查询的结果只有一个值

select * from 表名 where 字段名=(select 字段名 from 表名);

select * from students where cls_id = (select cls_id from students where name = '刘德华');

查看刘德华同学的所在班级的所有同学

②子查询的结果有多个值,等于其中的任意一个值

select * from 表名 where 字段名=any(select 字段名 from 表名);

select * from students where cls_id = any(select id from classes where teacher_id = (select id from teachers where name='赵老师'));

查看赵老师所带的学生信息

③子查询的结果有多个值,大于所有值

select * from 表名 where 字段名>all(select 字段名 from 表名);

select * from students where cls_id >= all(select id from classes where teacher_id = (select id from teachers where name='赵老师'));

查看学生所在班级

④子查询如果有查询的结果,外查询就执行

select * from 表名 where exists (select 字段名 from 表名);

select * from classes where exists (select * from teachers where name='李老师');

查看存在李老师的班级表


http://www.ppmy.cn/news/1561626.html

相关文章

【C语言】可移植性陷阱与缺陷(八): 随机数的大小

在C语言编程中,随机数的生成和使用是一个常见的需求。然而,由于不同平台上的C标准库实现可能存在差异,随机数的生成和使用也可能面临可移植性问题。本文将深入探讨C语言中随机数的大小与可移植性相关的陷阱与缺陷,并提供相应的解决建议。 一、随机数大小的相关概念 1.1. 数…

vue2新增删除

&#xff08;只是页面实现&#xff0c;不涉及数据库&#xff09; list组件&#xff1a; <button click"onAdd">新增</button><el-table:header-cell-style"{ textAlign: center }" :cell-style"{ textAlign: center }":data&quo…

精选2款.NET开源的博客系统

前言 博客系统是一个便于用户创建、管理和分享博客内容的在线平台&#xff0c;今天大姚给大家分享2款.NET开源的博客系统。 StarBlog StarBlog是一个支持Markdown导入的开源博客系统&#xff0c;后端基于最新的.Net6和Asp.Net Core框架&#xff0c;遵循RESTFul接口规范&…

Android有序广播的缺陷与“改进”--四大组件系统

戳蓝字“牛晓伟”关注我哦&#xff01; 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章&#xff0c;技术文章也可以有温度。 本文摘要 本文主要介绍Android有序广播的缺陷以及官方都做了哪些“改进”&#xff0c;通过本文您将了解到为啥要有超时机制&#xff0c…

C++之STL

1.简述 STL 是“Standard Template Library"的缩写&#xff0c;中文译为“标准模板库”。STL是C标准库的一部分&#xff0c;位于各个C 的头文件中&#xff0c;即它并非以二进制代码的形式提供&#xff0c;而是以源代码的形式提供。STL体现了泛型编程的思想&#xff0c;大…

Java到底是值传递还是引用传递????

在搞懂这个问题之前, 我们要首先了解什么是值传递, 什么是引用传递? 值传递: 传递的是数据的副本&#xff0c;修改副本不会影响原始数据。引用传递: 传递的是数据的引用&#xff08;地址&#xff09;&#xff0c;修改引用会直接影响原始数据. 也就是说&#xff0c;值传递和引…

安装和配置 Apache 及 PHP

安装和配置 Apache 及 PHP # 1. 停止当前 Apache 服务 sudo apachectl stop# 2. 清除现有的 Apache 配置和文件 sudo rm -rf /etc/apache2 sudo rm -rf /usr/sbin/httpd sudo rm -rf /Library/WebServer# 3. 使用 Homebrew 安装 Apache brew install httpd# 4. 启动 Apache su…

ollama+FastAPI部署后端大模型调用接口

ollamaFastAPI部署后端大模型调用接口 记录一下开源大模型的后端调用接口过程 一、ollama下载及运行 1. ollama安装 ollama是一个本地部署开源大模型的软件&#xff0c;可以运行llama、gemma、qwen等国内外开源大模型&#xff0c;也可以部署自己训练的大模型 ollama国内地…