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

MySQL 数据增删改查

一、插入数据

1.1 insert插入数据

(1)insert语法格式
INSERT  [INTO]
表名  [字段名]
VALUES  (值列表);
(2)示例

① 向学生表中插入一行数据

② 向学生表中插入多行数据

二、更新数据

2.1 update更新数据

(1)update语法格式
UPDATE 表名 SET 字段1=值1,
字段2=值2,…,字段n=值n
[WHERE 条件];
(2)示例

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

② 将id是1学生的姓名改成彭于晏,年龄改为30

三、删除数据

3.1 delete删除数据

(1)delete语法格式
DELETE FROM 表名
[WHERE条件];
(2)示例

用delete删除id是1的学生的数据

3.2 truncate删除数据

(1)语法格式
TRUNCATE TABLE 表名;
(2)示例

用truncate删除学生表中的数据【清空数据,表还在】

PS:delete删除数据可以加条件;truncate删除数据不可以加条件,只能清空整个表内数据。

四、查询数据

4.1 查询前准备

将用以下代码,在表内插入数据

(1)在students表内插入数据
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (1, '小明', 18, 180, '女', 1, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (2, '小月月', 18, 180, '女', 2, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (3, '彭于晏', 29, 185, '男', 1, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (4, '刘德华', 59, 175, '男', 2, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (5, '黄蓉', 38, 160, '女', 1, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (6, '凤姐', 28, 150, '保密', 2, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (7, '王祖贤', 18, 172, '保密', 1, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (8, '周杰伦', 36, NULL, '男', 3, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (9, '程坤', 27, 181, '男', 2, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (10, '刘亦菲', 25, 166, '男', 2, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (11, '猪猪侠', 33, 162, '保密', 3, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (12, '静香', 12, 180, '女', 2, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (13, '郭靖', 12, 170, '男', 3, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (14, '周杰', 34, 176, '女', 1, 0);
(2)在teachers表内插入数据
INSERT INTO `teachers` (`id`, `name`) VALUES (1, '赵老师');
INSERT INTO `teachers` (`id`, `name`) VALUES (2, '孙老师');
INSERT INTO `teachers` (`id`, `name`) VALUES (3, '李老师');
INSERT INTO `teachers` (`id`, `name`) VALUES (4, '周老师');
(3)在classes表内插入数据
INSERT INTO `classes` (`id`, `teacher_id`, `cls_content`, `cls_date`, `name`) VALUES (1, 1, '班级学生有较强的学习能力', '2024-10-01 00:00:00', 'python_01期');
INSERT INTO `classes` (`id`, `teacher_id`, `cls_content`, `cls_date`, `name`) VALUES (2, 2, '班级学生比较顽皮', '2024-11-01 00:00:00', 'python_02期');
INSERT INTO `classes` (`id`, `teacher_id`, `cls_content`, `cls_date`, `name`) VALUES (3, 2, '数据结构班', '2024-11-01 00:00:00', 'data_struct_01期');

4.2 SELECT基本查询语句格式

(1)select语法格式
SELECT 列名 FROM 表名;
(2)示例

① 查询所有学生信息

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

4.3 运算符

算术运算符 + - * / %

关系运算符 > < = <> >=

赋值运算符 =

逻辑运算符 and or not && || !

4.4 where条件查询

(1)where 语法格式
SELECT 列名
FROM 表名
WHERE 条件
(2)示例

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

②查询学生’刘德华’的信息

4.5where多条件查询

(1)语法格式
SELECT 列名
FROM 表名
WHERE 条件 运算符 条件
(2)示例

①查询id=1或者id=3学生的姓名,性别

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

4.6 like模糊查询

(1)语法格式
SELECT 列名
FROM 表名
WHERE 字段
LIKE '值'
(2)示例

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

4.7 IN关键字查询

(1)语法格式
SELECT 列名
FROM 表名
WHERE 字段
IN (值1,值2,....);
(2)示例

查询id为1,5,6,10的学生的信息

ps:试用 not in 即为查询不为谋值的信息

4.8BETWEEN关键字查询

(1)语法格式
SELECT 列名
FROM 表名
WHERE 字段
BETWEEN  值1 and 值2;
(2)示例

查询id为8-10的学生的信息

4.9DISTINCT关键字查询【去重】

(1)语法格式
SELECT DISTINCT
字段名1,字段名2......
FROM 表名;
(2)示例

①查询性别有几种分类

②查询有几个班级

4.10ORDER BY关键字查询

(1)语法格式
SELECT <字段名列表>
FROM <表名>
[WHERE <查询条件>]
[ORDER BY <排序的列名>
[ASC 或 DESC]];
(2)示例

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

②将学生的身高按照降序排列

PS:ASC是降序,DESC是升序,在不写明是ASC还是DESC的情况下,默认是ASC降序

4.11 LIMIT关键字查询

(1)语法格式
SELECT <字段名列表>
FROM <表名>
[WHERE <查询条件>]
[ORDER BY <排序的列名> [ASC 或 DESC]]
[LIMIT <行数>];
(2)示例

①只看前2条学生信息

②显示1班学生中身高前三名的学生姓名

4.12连接查询

观察students、teachers、classes三张表,如何查看students表中cls_id所代表的的班级名称是什么?——使用连接查询

连接查询是将多张表中记录按照指定的条件进行连接的查询方式

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

4.12.1 显示内连接查询
(1).语法格式
SELECT  字段  FROM  表1
INNER JOIN  表2
ON  连接条件
[WHERE 条件]
(2).示例

①查看学生所在班级

②查看学生所在班级并且班级是1

4.12.2隐式内连接查询
(1)语法格式
SELECT 字段
FROM 表1,表2
WHERE 表1 字段=表2 字段
(2)示例

学生所在班级

4.12.3 左外连接查询
(1)语法格式
SELECT 字段 FROM 表1
LEFT [outer] JOIN 表2
ON 连接条件
[where 条件];
(2)示例

查看老师所在班级

4.12.4 右外连接查询
(1)语法格式
SELECT 字段 FROM 表1
RIGHT [outer] JOIN 表2
ON 连接条件
[where 条件];
(2)示例

查看老师所在班级

PS:左连接和右连接就是分别以表1和表2为基表,返回左(右)表中所有记录及连接表中符合条件的记录的外连接。

五、聚合函数

如何查看班级同学的平均身高?——使用聚合函数

聚合函数是可以对一组值进行计算,并返回单个值的函数。

函数——实现特定功能的。

5.1.聚合函数

(1)语法格式
SELECT 聚合函数<字段>
FROM 表名
[WHERE 条件]
[GROUP BY 聚合函数]
(2)聚合函数
  1. count()-计数
  2. sum()-求和
  3. max()-最大值
  4. min()-最小值
  5. avg()-平均值
(3)示例

①查询班级学生的平均身高

②查询班级有多少同学

③显示每个班级学生的平均身高

④查询每个班级的学生总数

PS:as’列名’,加在需要查询的字段后面,可以显示设置的“列名”(所有SELECT同理)

六、子查询【查询嵌套】

如何只查询比刘德华高的同一班的学生信息?——子查询

定义:子查询是在一个查询的内部包括另一个查询的查询方式

6.1简单子查询

(1)示例

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

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

②查询比刘德华高的同一班的学生信息

select * from students where cls_id=(-> select cls_id from students where name='刘德华')-> and height>(select height from students where name='刘德华');

6.2 ANY/SOME子查询

(1)示例

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

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

6.3 All子查询

(1)示例

查看学生所在班级

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

6.4 EXISTS子查询

(1)示例

①删除表

DROP TABLE IF EXISTS temp;

②查看存在王老师的班级表

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

③查看存在赵老师的班级表

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

PS:exists主要目的是为了运行不报错,如果表不存在执行命令也不会报错

6.5 NOT EXISTS子查询

(1)示例

创建教师表

create table IF NOT EXISTS teachers(id int primary key,name varchar(20)
);

PS:若表已存在,则不会出现新表也不会报错,可以看到执行完此命令后,库内表格数量没有变化

http://www.dtcms.com/a/609657.html

相关文章:

  • 浏阳做网站的公司价格网站设计步骤详解
  • 南京做网站外包试论述网上商城的推广技巧
  • 面试150——二叉树
  • opencv 学习: QA_02 什么是图像中的高频成分和低频成分
  • C++_面试题13_QVector和QList的区别
  • Vue 2脚手架从入门到实战核心知识点全解析(day6):从工程结构到高级通信(附代码讲解)
  • 2025年AI面试防作弊指南:技术笔试如何识别异常行为
  • (十)嵌入式面试题收集:15道
  • 标准解读|即将实施的三份汽车安全强制性标准
  • 手机网站建设的流程2024房价即将暴涨十大城市
  • 根系扫描仪实战解析:如何精准获取根长、根表面积与拓扑结构?
  • Mock技术文档
  • 【OpenCV + VS】用addWeighted实现图像线性融合
  • Ubuntu系统创建Conda环境并安装Pytorch(保姆教程)
  • 腾讯KaLM-Embedding开源,登顶全球第一
  • 从零开始学习tensort模型部署(二):从文件加载引擎的完整指南
  • Muon 优化器代码实现详解
  • 老河口网站设计保定网站搜索引擎优化
  • 基于TRAESOLO与cpolar的AI远程开发环境搭建教程
  • 一个公司可以做几个网站吗icp许可证
  • 引入日志系统设计:基于UDP协议的 回声系统 服务器-客户端通信实现
  • Shell 文件查找与复制
  • 网站服务器免费申请北京市住房和城乡建设官网
  • wordpress全站模板学校网站对学校建设的重要性
  • 小波自适应去噪在脑电信号处理MATLAB仿真实现
  • conda安装Django+pg运行环境
  • 【淘店CRM电商管理分享】以我开源的安心转支付宝批量转账工具为例,浅谈程序员软件产品变现的路径,剖析一款成熟软件产品的运营策略
  • Vue浅响应式如何解决深层响应式的性能问题?适用场景有哪些?
  • 如何使用Metasploit进行暴力破解的详细步骤
  • 力扣刷题251114