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

学习日记-day30-6.15

完成目标:

知识点:

1.DDL和DML的补充

知识点

核心内容

重点

快速创建表

使用CREATE TABLE...AS SELECT语句基于现有表快速创建新表

结构和数据复制 vs 仅复制结构(WHERE 1=2)

数据删除操作

DELETE FROM逐条删除 vs TRUNCATE TABLE重建表结构

DML操作 vs DDL操作、效率差异、自增ID重置

部分数据复制

通过指定列名和WHERE条件选择性复制数据

列筛选(SELECT s_no,s_name,age)与行筛选(WHERE s_no=2)的组合使用

操作类型区分

DDL(CREATE/DROP/TRUNCATE)与DML(INSERT/UPDATE/DELETE)

数据库对象操作 vs 数据操作的语法差异

2.DQL##表的准备

知识点

核心内容

重点

DQL查询操作

数据库中最重要且最常用的部分,涵盖单表查询、多表查询、子查询

多表关联逻辑(如自关联)、NULL与零值的区别(comm字段)

表结构设计

四张表(部门表dept、员工表emp、薪资等级表sale grade、奖金表bonus)

外键关联(emp.dept_no参考dept,emp.mgr自关联)、字段含义(如loc=location)

Oracle与MySQL对比

Oracle安装后自带四张表,MySQL需手动创建

表移植差异(字段兼容性)

数据插入与验证

批量运行SQL脚本初始化表数据

数据完整性检查(如部门与员工的关联性)

薪资等级逻辑

sale grade表定义工资区间等级(1-5级)

区间边界值理解(如1200属于1级还是2级)

3.最简单的SQL语句

知识点

核心内容

重点

单表查询基础

SELECT * FROM emp 查询整表数据,SELECT 列名 筛选部分列,WHERE 子句过滤行

星号(*)表示所有列,WHERE 条件需注意数据类型匹配

列别名与特殊字符处理

使用 AS 或直接空格定义别名(如 empno AS 员工编号),含空格/特殊符号时需加单/双引号

别名含空格时必须加引号,否则报错(如 "涨薪后工资")

算术运算符应用

在查询中直接计算(如 sal+1000),但 NULL 参与运算结果为 NULL

NULL 与 0 的区别,需后续学习 NVL 函数处理

去重操作

DISTINCT 对单列或多列组合去重(如 DISTINCT job, deptno)

多列去重时针对组合结果,非单列独立去重

排序规则

ORDER BY 默认升序(ASC),降序需显式声明(DESC),支持多列混合排序

多列排序时优先级按字段顺序,如 ORDER BY sal ASC, deptno DESC

经典案例

Oracle 示例表 emp 包含 14 条记录,如用户 SCOTT(密码 TIGER)为早期员工数据

表设计巧妙覆盖多数查询场景,适合教学

4.where子句

知识点

核心内容

重点

WHERE子句基础

通过WHERE子句添加过滤条件筛选数据,支持关系运算符(=、>、<、>=、<=、!=)

区分=与!=的写法(<>或!=均有效)

字符型数据查询

字符串比较默认不区分大小写,需用BINARY关键字强制区分(如WHERE BINARY job='CLERK')

单引号/双引号通用,但大小写敏感需特殊处理

日期与数值过滤

支持日期比较(如hiredate < '1981-12-25')和数值区间查询(sal BETWEEN 1500 AND 3000)

BETWEEN AND包含边界值,而> AND <不包含

逻辑运算符

AND(与)、OR(或)及符号替代(&&、`

IN运算符

替代多条件OR(如deptno IN (10,20)),支持字符型(job IN ('MANAGER','CLERK'))

IN列表内为精确匹配,非范围

模糊查询

LIKE配合通配符:%(任意多字符)、_(单个字符),如ename LIKE '_A%'(第二位为A)

通配符位置影响匹配结果

NULL值处理

需用IS NULL/IS NOT NULL判断空值,不可用=NULL

零值(0)与NULL本质不同

综合查询示例

多条件组合(如(job='SALESMAN' OR job='CLERK') AND sal>=1500)

括号对逻辑表达式的关键影响

5.函数的分类

知识点

核心内容

重点

SQL函数概念

封装特定功能的可调用模块(类似JAVA方法/Python函数),通过名称直接调用

函数不改变原数据值,仅对展示结果加工处理

单行函数

每条记录独立计算(如LOWER()/UPPER()),输入输出记录数一致

与多行函数的核心区别:逐条处理 vs 聚合计算

多行函数(分组函数)

一组数据聚合运算(如MAX()/SUM()),返回单一结果

仅5种:MAX/MIN/COUNT/SUM/AVG

函数分类记忆技巧

“除多行函数外均为单行函数”(因单行函数数量庞大)

易混淆点:分类依据是处理逻辑而非结果行数

函数作用

提升查询能力(如大小写转换、数值统计)

注意:LOWER(e_name)等单行函数会保留原表行数

6.单行函数(1)

7.单行函数(2)

知识点

核心内容

重点

字符串/数值/日期函数

回顾内容,包含字符串、数值、日期与时间函数的SQL示例

空值处理(如NULL参与计算时需用IFNULL转换)

流程函数-IF

IF(条件, 真值, 假值)实现双分支逻辑,示例:薪资分级(高薪/低薪)

单分支逻辑:IFNULL(com,0)解决NULL计算问题

流程函数-NULLIF

NULLIF(值1,值2):相等返回NULL,不等返回值1

适用场景较少,需注意与IFNULL区别

流程函数-CASE(等值判断)

CASE job WHEN 'clerk' THEN '店员'...实现职位中英文映射

必须包含END结尾,ELSE处理默认情况

流程函数-CASE(区间判断)

CASE WHEN salary<=1000 THEN 'A级'...实现薪资分级(A/B/C/D)

区间条件需严格递进(如1000-2000需隐含>1000)

其他函数

DATABASE()/USER()/VERSION()查询当前库/用户/版本信息

版本号识别(如8.0.21对应MySQL 5.8+)

http://www.xdnf.cn/news/1053505.html

相关文章:

  • Linux安装LLaMA Factory
  • Netty 全面深入学习指南
  • 项目实训个人工作梳理
  • 【算法 day03】LeetCode 203.移除链表元素 | 707.设计链表 | 206.反转链表
  • nodejs中Express框架的基本使用
  • ​​信息系统项目管理师-项目范围管理 知识点总结与例题分析​​
  • Claude Code 实用教程——使用方法详解
  • 庙算兵棋推演AI开发初探(8-神经网络模型接智能体进行游戏)
  • 文本预测和分类任务
  • [笔记] 基于esp32s3用GUI-Guider-1.9.1-GA开发LVGL界面
  • 认识电子元器件之磁传感器
  • Spring有代理对象的循环依赖时,如何确保代理对象能够正确持有原始对象的所有属性赋值结果?
  • 234. 回文链表
  • SQL 增删改查 —— 笔记篇
  • 面向对象设计原则
  • 深度学习——基于卷积神经网络实现食物图像分类【3】(保存最优模型)
  • React19源码系列之Hooks(useState)
  • Linux中的连接符
  • 谐波减速器 MINIF8 和 MINIF11 的区别
  • 事务传播机制分析:用户注册场景分析
  • 日语学习-日语知识点小记-进阶-JLPT-真题训练-N2阶段(2):2020年12月2018年7月
  • leetcode148-排序链表
  • 《Java编程思想》读书笔记:第十二章
  • 01 人工智能起源与诞生
  • 在 Windows 上使用 Docker Desktop 快速搭建本地 Kubernetes 环境(附详细部署教程)
  • 第六章、6.2 ESP32低功耗模式详解:深度睡眠与轻度睡眠实战指南
  • Java泛型深度解析
  • MySQL-DCL数据控制语言详解
  • 深度学习打卡1
  • 【计算机网络】网络层IP协议与子网划分详解:从主机通信到网络设计的底层逻辑