数据库---Day5 数据表的增删改查
本系列可作为数据库学习系列的笔记文中提到的一些练习的代码小编会将代码复制下来大家复制下来就可以练习了方便大家学习。点赞关注不迷路您的点赞、关注和收藏是对小编最大的支持和鼓励系列文章目录JAVA初阶---------已更完JAVA数据结构---------已更完数据库---Day 1 数据库基础数据库---Day2 数据库操作数据库---Day3 数据类型数据库---Day4 数据表的操作数据库---Day5 数据表的增删改查目录目录系列文章目录目录前言一、本节学习目标二、CRUD 简介三、Create 新增数据INSERT3.1 完整语法3.2 建测试表3.3 三种插入方式3.3.1 单行全列插入3.3.2 单行指定列插入3.3.3 多行批量插入3.3.4 查询结果四、Retrieve 查询数据SELECT4.1 完整查询语法4.2 构造成绩表示例专用4.3 基础查询4.3.1 全列查询4.3.2 指定列查询4.3.3 查询表达式4.3.4 指定别名AS4.3.5 去重查询 DISTINCT4.4 WHERE 条件查询4.4.1 比较运算4.4.2 逻辑运算符4.5 WHERE 高频示例4.5.1 英语不及格4.5.2 语文 英语4.5.3 总分 2004.5.4 AND / OR4.5.5 范围查询4.5.6 IN 查询4.5.7 模糊查询4.5.8 NULL 查询重点4.6 ORDER BY 排序4.7 LIMIT 分页查询五、Update 修改数据5.1 语法5.2 示例5.2.1 修改单科5.2.2 修改多列5.2.3 基于原值更新5.2.4 全表更新高危六、Delete 删除数据6.1 语法6.2 示例七、TRUNCATE 截断表7.1 语法7.2 特点八、插入查询结果九、聚合函数9.1 常用函数9.2 示例十、GROUP BY 分组查询10.1 语法10.2 示例员工表10.3 HAVING 分组过滤十一、MySQL 内置函数全覆盖11.1 日期函数11.2 字符串函数11.3 数学函数11.4 系统函数十二、全文总结必背12.1 增12.2 查12.3 改12.4 删12.5 核心规则十三、结束语总结前言小编作为新晋码农一枚会定期整理一些写的比较好的代码作为自己的学习笔记会试着做一下批注和补充如转载或者参考他人文献会标明出处非商用如有侵权会删改欢迎大家斧正和讨论在 MySQL 数据库开发中CRUD 是所有业务逻辑的基石。无论你是做网站后台、管理系统、数据分析还是应付考试、面试增、删、改、查都是必须熟练掌握的核心技能。一、本节学习目标熟练使用 SQL 语句完成数据库CRUD 操作掌握聚合函数的使用COUNT、SUM、AVG、MAX、MIN掌握GROUP BY 分组查询以及HAVING 分组结果过滤熟练使用 MySQL内置函数二、CRUD 简介CRUD 是数据库最基础的四大操作C Create新增INSERTR Retrieve查询SELECTU Update修改UPDATED Delete删除DELETE三、Create 新增数据INSERT3.1 完整语法INSERT [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ...;3.2 建测试表create table users ( id bigint, name varchar(20) comment 用户名 );3.3 三种插入方式3.3.1 单行全列插入值的顺序、数量必须和表字段完全一致。insert into users values (1, 张三); insert into users values (2, 李四);3.3.2 单行指定列插入insert into users(id, name) values (3, 王五);3.3.3 多行批量插入insert into users(id, name) values (4, 赵六), (5, 钱七);3.3.4 查询结果select * from users;四、Retrieve 查询数据SELECT查询是数据库最核心、最常用、最复杂的部分。4.1 完整查询语法SELECT [DISTINCT] select_expr [, select_expr] ... [FROM table_references] [WHERE where_condition] [GROUP BY {col_name | expr}, ...] [HAVING where_condition] [ORDER BY {col_name | expr } [ASC | DESC], ... ] [LIMIT {[offset,] row_count | row_count OFFSET offset}]4.2 构造成绩表示例专用CREATE TABLE exam( id BIGINT, name VARCHAR(20) COMMENT 同学姓名, chinese float COMMENT 语文成绩, math float COMMENT 数学成绩, english float COMMENT 英语成绩 ); INSERT INTO exam (name,chinese,math,english) VALUES (1,唐三藏,67,98,56), (2,孙悟空,87,78,77), (3,猪悟能,88,98,90), (4,曹孟德,82,84,67), (5,刘玄德,55,85,45), (6,孙权,70,73,78), (7,宋公明,75,65,30);4.3 基础查询4.3.1 全列查询select * from exam;4.3.2 指定列查询select id, name, chinese from exam;4.3.3 查询表达式可以是常量、运算、字段组合。-- 常量 select id,name,10 from exam; -- 运算 select id,name,101 from exam; -- 字段 数值 select id, name, chinese 10 from exam; -- 计算总分 select id, name, chinese math english from exam;4.3.4 指定别名ASAS 可省略支持中文别名。select id, name, chinese math english as 总分 from exam;4.3.5 去重查询 DISTINCT所有列的值都相同才算重复。select distinct math from exam;4.4 WHERE 条件查询4.4.1 比较运算运算符说明, , , 大小比较等于对 NULL 不安全NULL 安全等于!, 不等于BETWEEN…AND…范围匹配IN(…)包含在列表中IS NULL是 NULLIS NOT NULL不是 NULLLIKE模糊查询4.4.2 逻辑运算符AND所有条件成立OR任一条件成立NOT取反4.5 WHERE 高频示例4.5.1 英语不及格select name, english from exam where english 60;4.5.2 语文 英语select name, chinese, english from exam where chinese english;4.5.3 总分 200select name, chinesemathenglish as 总分 from exam where chinese math english 200;4.5.4 AND / OR-- 且 select * from exam where chinese80 and english80; -- 或 select * from exam where chinese80 or english80;4.5.5 范围查询select name, chinese from exam where chinese between 80 and 90;4.5.6 IN 查询select name, math from exam where math in (78,98);4.5.7 模糊查询%匹配任意多个字符_匹配一个字符-- 姓孙 select * from exam where name like 孙%; -- 姓孙名字两个字 select * from exam where name like 孙_;4.5.8 NULL 查询重点不能用 NULL必须用 IS NULL-- 插入 NULL 数据 insert into exam values (8, 张飞, 27, 0, NULL); -- 查询 NULL select * from exam where english is null; -- 查询非 NULL select * from exam where english is not null;4.6 ORDER BY 排序ASC升序默认DESC降序NULL 最小-- 数学升序 select name, math from exam order by math asc; -- 语文降序 select name, chinese from exam order by chinese desc; -- 多列排序 select name, math,english, chinese from exam order by math desc, english asc, chinese asc; -- 按别名排序 select name, chinesemathenglish as 总分 from exam order by 总分 desc;4.7 LIMIT 分页查询-- 第1页 select * from exam limit 0,3; -- 第2页 select * from exam limit 3,3;五、Update 修改数据5.1 语法UPDATE 表名 SET 列1值1, 列2值2... [WHERE 条件];⚠️不加 WHERE 会更新全表5.2 示例5.2.1 修改单科update exam set math 80 where name 孙悟空;5.2.2 修改多列update exam set math60, chinese70 where name曹孟德;5.2.3 基于原值更新update exam set math math 30 where ...;5.2.4 全表更新高危update exam set chinese chinese * 2;六、Delete 删除数据6.1 语法DELETE FROM 表名 [WHERE 条件];⚠️不加 WHERE 清空全表6.2 示例delete from exam where name 孙悟空;七、TRUNCATE 截断表7.1 语法TRUNCATE TABLE 表名;7.2 特点比 DELETE 更快重置自增 ID无法回滚只能清空整张表八、插入查询结果将查询结果直接插入另一张表常用于去重、备份。-- 去重插入 insert into t_recored_new select distinct * from t_recored;九、聚合函数9.1 常用函数函数说明COUNT()统计数量SUM()求和AVG()平均值MAX()最大值MIN()最小值NULL 不参与计算9.2 示例-- 总人数 select count(*) from exam; -- 数学总分 select sum(math) from exam; -- 英语平均分 select avg(english) from exam; -- 英语最高分 select max(english) from exam;十、GROUP BY 分组查询10.1 语法SELECT 分组列, 聚合函数 FROM 表 GROUP BY 分组列;10.2 示例员工表select role, count(*) as 人数, avg(salary) as 平均工资 from emp group by role;10.3 HAVING 分组过滤HAVING 过滤分组结果WHERE 过滤原始数据select role, avg(salary) from emp group by role having avg(salary) 1500;十一、MySQL 内置函数全覆盖11.1 日期函数CURDATE()当前日期CURTIME()当前时间NOW()当前日期时间DATE()提取日期ADDDATE()加时间SUBDATE()减时间DATEDIFF()日期差11.2 字符串函数CHAR_LENGTH()字符长度LENGTH()字节长度CONCAT()拼接CONCAT_WS()带分隔符拼接LOWER/UPPER大小写SUBSTR()截取REPLACE()替换TRIM()去空格INSTR()查找位置11.3 数学函数ABS()绝对值CEIL()向上取整FLOOR()向下取整ROUND()四舍五入RAND()随机数FORMAT()格式化11.4 系统函数version()版本database()当前库user()当前用户md5()加密ifnull()NULL 替换十二、全文总结必背12.1 增insert into 表(列) values(值),(值);12.2 查select 列 from 表 where 条件 group by 分组 having 过滤 order by 排序 limit 分页;12.3 改update 表 set 列值 where 条件;12.4 删delete from 表 where 条件; truncate table 表;12.5 核心规则WHERE 不能用别名ORDER BY 可以NULL 必须用 IS NULLTRUNCATE 清空并重置自增HAVING 必须在 GROUP BY 之后聚合函数自动忽略 NULL十三、结束语只要把这篇博客吃透你就已经掌握了90% 的数据库开发技能无论是写业务、做报表、考试、面试都能轻松应对。总结以上就是今天要讲的内容本文简单记录了数据结构学习内容仅作为一份简单的笔记使用大家根据注释理解您的点赞关注收藏就是对小编最大的鼓励