【数据库】表的增删改查

本文详细介绍了SQL数据库的基本操作,包括创建表、插入数据、更新和删除记录。在查询方面,讨论了SELECT语句的各种用法,如全列与指定列查询、WHERE条件、ORDER BY排序和LIMIT分页。还涵盖了聚合函数、GROUP BY子句的使用,以及如何处理查询结果。同时,提到了插入查询结果、更新和删除操作的注意事项,以及数据库性能优化的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

核心词:Create ,Retrieve ,UpDate ,Delete

1. Create

1.1 创建一张表

在这里插入图片描述

1.2 插入数据
  1. 单行数据
    在这里插入图片描述
  2. 多行数据
    在这里插入图片描述
1.3 插入失败更新

由于主键或者唯一键对应的值存在而导致插入失败
在这里插入图片描述

1.4 替换

在这里插入图片描述

2. Retrieve

准备工作:
在这里插入图片描述

2.1 SELECT 列

2.1.1 全列查询
  • 通常我们不建议使用 * 进行全列查询
    1. 查询的列越多,意味着需要传输的数据量越大
    1. 可能会影响到索引的使用。
      在这里插入图片描述
2.1.2 指定列查询

– 指定列的顺序不需要按照定义表的数据来
在这里插入图片描述

2.1.3 查询字段为表达式

在这里插入图片描述在这里插入图片描述

2.1.4 为查询结果指定别名

在这里插入图片描述

2.1.4 结果去重

在这里插入图片描述

2.2 WHIERE 条件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 结果排序

– ASC 为升序
– DESC 为降序
– 默认为 ASC

注意:没有 ORDER BY ⼦子句句的查询,返回的顺序是未定义的,永远不不要依赖这个顺序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 筛选分页结果

注意:对未知表进行查询的时候,最好加上一条LIMIT1,避免因为表中数据过大,查询表数据导致数据库卡死。
语法:

-- 起始下标为0

-- 从0开始,筛选n条结果
SELECT ... FROM table_name  [WHERE...] [ORDER BY...] LIMIT n;

-- 从s开始,筛选n条结果
SELECT ... FROM table_name  [WHERE...] [ORDER BY...]  LIMIT s,  LIMIT n;

-- 从s开始,筛选n条结果,比第二种用法更准确,建议使用
SELECT ... FROM table_name  [WHERE...] [ORDER BY...]LIMIT n OFFSET n;

在这里插入图片描述

3. Update

语法:

UPDATE table_name SET column = expr
 [,column = expr ...] [ WHERE ... ] [ ORDER BY ...] [LIMIT...]

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

– 将孙悟空数学成绩改成80
在这里插入图片描述

– 将曹孟德同学的数学成绩变更更为 60 分,语⽂文成绩变更更为 70 分
在这里插入图片描述
– 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
在这里插入图片描述
– 将所有同学的语⽂文成绩更更新为原来的 2 倍
更新全表的语句慎用
没有 WHERE ⼦子句句,则更更新全表
在这里插入图片描述

4. Delete

4.1 删除数据

DELETE FROM table_name [WHERE ...] [ ORDER BY ...] [LIMIT ...]

– 删除孙悟空同学的考试成绩
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 截断表

TRUNCATE [TABLE] table_name
注意:这个操作慎⽤用

  1. 只能对整表操作,不不能像 DELETE 一样针对部分数据操作;
  2. 实际上 MySQL 不不对数据操作,所以比 DELETE 更更快
  3. 会重置 AUTO_INCREMENT 项
    在这里插入图片描述

5. 插入查询结果

INSERT INTO table_name [(column [, column ...])] SELECT ...

– 删除表中的的重复复记录,重复的数据只能有一份

在这里插入图片描述

6. 聚合函数

在这里插入图片描述
统计班级一共多少同学:
在这里插入图片描述
统计班级收集的qq号有多少:
在这里插入图片描述
统计本次考试的数学成绩分数个数:
在这里插入图片描述
统计数学成绩总分:
在这里插入图片描述
统计平均总分:
在这里插入图片描述
返回英语最高分:
在这里插入图片描述
返回>70分以上的数学最低分:

在这里插入图片描述

7. group by 子句的使用

在select中使⽤用group by ⼦子句句可以对指定列列进⾏行行分组查询
select column1, column2, .. from table group by column;
案例例:

  • 准备⼯工作,创建⼀一个雇员信息表(来⾃自oracle 9i的经典测试表)
  • EMP员⼯工表
  • DEPT部⻔门表
  • SALGRADE⼯工资等级表
  • 如何显示每个部⻔门的平均⼯工资和最⾼高⼯工资
    select deptno,avg(sal),max(sal) from EMP group by deptno;
  • 显示每个部⻔门的每种岗位的平均⼯工资和最低⼯工资
    select avg(sal),min(sal),job,deptno from EMP group by deptno,job;
  • 显示平均工资低于2000的部门和它的平均工资
    • 统计各个部门的平均工资
      select avg(sal) from EMP group by deptno;
    • having 和 group by 配合使用,对group by 结果进行过滤
      select avg(sal) as myavg from EMP group by deptno having myavg<2000;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值