读SQL学习指南(第3版)笔记04_查询入门

news2024/12/27 21:26:17

 

1. 在执行语句之前,会先检查下列事项

1.1. 是否有权限执行该语句

1.2. 是否有权限访问指定的数据

1.3. 语句的语法是否正确

2. select子句

2.1. select子句是select语句中的第一个子句,但最后才会被数据库服务器评估

2.2. 决定哪些列应该包含在查询的结果集中

2.3. 字面量

2.4. 表达式

2.5. 内建函数调用

2.6. 用户自定义函数调用

2.7. select  version(),database(),user()

2.8. 列的别名

2.8.1. AS是可选项

2.9. 移除重复数据

2.9.1. select后面直接添加关键字distinct来实现

2.10. 关键字all是默认的

2.10.1. 不需要指明

2.10.2. 如果不想让服务器移除重复数据或者确定结果集中不会出现重复数据,可以使用关键字all代替distinct

2.11. 生成一组不同的结果时需要对数据进行排序,这对于大型结果集会很耗时

2.12. 不要陷入为了确保没有重复数据而使用distinct的陷阱,而应该花时间充分理解所处理的数据,以便了解是否可能出现重复数据

3. from子句

3.1. 定义了查询要用到的数据表以及连接数据表的方式

3.2. 宽泛定义的数据表

3.2.1. 永久数据表(使用create table语句创建)

3.2.2. 派生数据表(由子查询返回并保存在内存中的行)

3.2.2.1. 子查询由一对小括号包围,可以出现在select语句的各个部分中

3.2.2.2. 子查询的作用在于生成其他所有查询子句中可见的派生数据表,以及与from子句中的其他数据表交互

3.2.3. 临时数据表(保存在内存中的易失数据)

3.2.3.1. mysql

   -> CREATE TEMPORARY TABLE actors_j
    ->  (actor_id smallint(5),
    ->   first_name varchar(45),
    ->   last_name varchar(45)
    ->  );

3.2.3.2. 临时保留在内存中,会话结束后就消失了

3.2.3.3. Oracle Database是一个例外,它会保留临时数据表定义,以备后续会话使用

3.2.4. 虚拟数据表(使用create view语句创建)

3.2.4.1. 视图是存储在数据目录中的查询,其行为表现就像数据表,但是并没有与之关联的数据(这就是将其称为虚拟数据表的原因)

3.2.4.2. 创建视图时,不会生成或存储额外的数据

3.2.4.3. 服务器只是保留select语句,以备后用

3.2.4.4. 创建视图的原因各种各样,包含对用户隐藏列、简化复杂的数据库设计

4. 数据表链接

4.1. 如果from子句中出现多个数据表,则必须包含用于链接(link)这些数据表的条件

4.2. 定义数据表别名

4.2.1. 使用完整的数据表名称

4.2.2. 为每个数据表指定别名,在查询中使用该别名

4.2.3. 使用别名可以在不造成困惑的情况下(只要选择合理的别名)编写出更紧凑的语句

5. where子句

5.1. 一种机制,用于过滤掉结果集中不想要的行

5.2. 在混用不同的运算符时,应该坚持使用括号对条件进行分组

5.2.1. 以便你自己、数据库服务器和后续人员都能够意见统一地修改代码

6. group by和having子句

6.1. 在返回结果集之前对数据进行处理,以便发现数据呈现的规律

7. order by子句

7.1. 使用原始列数据或基于列数据的表达式对结果集进行排序的一种机制

7.2. 可以通过关键字asc和desc来指定升序排序或降序排序

7.3. 默认为按照升序排序,如果希望按照降序排序,需要加入desc关键字

7.4. 降序排序多用于评级查询

7.5. MySQL提供了limit子句以允许对数据进行排序,然后只保留前X行

7.6. 比如“显示余额最多的前5个账户”

7.7. 通过数字占位符进行排序

7.7.1. 查询使用select子句中的第3列,按照降序进行排序

7.7.2. mysql

   -> SELECT c.first_name, c.last_name,
    ->   time(r.rental_date) rental_time
    -> FROM customer c
    ->   INNER JOIN rental r
    ->   ON c.customer_id = r.customer_id
    -> WHERE date(r.rental_date) = '2005-06-14'
    -> ORDER BY 3 desc;

7.7.3. 在编写临时查询的时候使用位置引用列

7.8. 在编写代码时,则坚持按照名称引用列

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/920170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

stm32之15.超声波与灯光功能一起实现(进阶)

主函数代码修改 --------------------- 源码 int main(void) {uint32_t t0;uint32_t distance;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);led_init();key_init();/* 初始化串口1波特率为115200bps,若发送/接收数据有乱码,请检查PLL */usart1_ini…

vue 使用C-Lodop打印小票

先从官网下载js文件 https://www.lodop.net/LodopDemo.html 打开安装程序,一直下一步既可,我这边已经安装过就不演示了。 // 引入 import { getLodop } from /utils/CLodopfuncs.js;// 使用 let LODOP getLodop()let Count LODOP.GET_PRINTER_COUNT…

嵌入式ARM 音频算法开发库

我V hezkz17进数字音频系统研究开发交流答疑群(课题组) CMSIS DSP Library 算法库,是开源的算法库 BES的SDK也使用了该库,要想自己设计嵌入式音频算法,可在Cortex-M内核平台可以基于此库开发算法 AEC, AGC, ANC, ENC, RNC, 。。。。。。…

Ansible 创建使用角色

使用 Ansible Galaxy 和要求文件 /ansible/roles/requirements.yml 。从以下 URL 下载角色并安装到 /ansible/roles : http://materials/haproxy.tar 此角色的名称应当为 balancer http://materials/phpinfo.tar 此角色的名称应当为 phpinfo #创建 vim /ansible/r…

四、Kafka Broker

4.1.1 Zookeeper 存储的 Kafka 信息 4.1.2 Kafka Broker 总体工作流程 4.2 生产经验 - 节点的服役和退役 自己的理解:其实就是将kafka的分区,负载到集群中的各个节点上。 1、服役新节点 2、退役旧节点 4.3 kafka副本

商城-学习整理-集群-K8S(二十三)

目录 一、k8s 集群部署1、k8s 快速入门1)、简介2)、架构1、整体主从方式2、Master 节点架构3、Node 节点架构 3)、概念4)、快速体验1、安装 minikube2、体验 nginx 部署升级 5)、流程叙述 2、k8s 集群安装1、kubeadm2、…

【学习FreeRTOS】第14章——FreeRTOS信号量

1.信号量的简介 信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问。 信号量:用于传递状态(区别于队列传递消息) 信号量的计数值都有限制:限定最大值。 如果最大值被限定为1,那么它就是二值…

Kaggle回归问题Mercedes——Benz Greener Manufacturing

目录 前言1 题目介绍2 数据清洗3 数据可视化分析4 模型训练5 源码 前言 这是我在大三选修课的课程设计,内容参考了Kaggle上高赞的代码,有详细批注,整体比较基础,结构相对完整,便于初学者学习。这个是一个回归问题&…

BLE ch582 广播数据格式

BLE 蓝牙数据广播格式{6个字节(蓝牙设备MAC 地址)AD structure…AD structure N } 37字节 AD structure 长度类型内容 修改被扫描状态(被发现状态)的name:take 被扫描状态的name: take 链接后的状态变成;变成广播态;name: BLE…

Go 语言的实战案例 | 青训营

Powered by:NEFU AB-IN 文章目录 Go 语言的实战案例 | 青训营 Go补充简介猜数游戏在线词典项目 Go 语言的实战案例 | 青训营 GO语言工程实践课后作业:实现思路、代码以及路径记录 Go补充简介 在计算机编程领域,Go 语言(也称为 Golang&…

二叉树---前,中,后序遍历做题技巧(前,中,后,层次,线索二叉树)

1.由二叉树求前,中,后序遍历 前序:根左右(每一个小方块都遵循) 得到:A,B,D,H,E,I,C,F,G 中序:左根右(每一个小方块都遵循) 得到:H,D,B,I,E,A,F,C,G 后序:左右…

js 模块 简单实验

1.代码 1.1 t2.js var year "test"; export { year }; 1.2 t1.js import { year } from ./t2.jsalert(year); 1.3 t.html <script type"module" src"./t1.js"></script> 2.运行结果

MyBatis动态SQL、模糊查询与结果映射

目录 前言 一、MyBatis动态SQL 1.动态SQL是什么 2.动态SQL的作用 3.常用动态SQL元素 1. where if 元素 2. set if 元素 3. choose when otherwise 元素 4. 自定义 trim 元素 <1>. 自定义 trim 元素改写上面的 where if 语句 <2>. 自定义 trim 元素改…

Go 语言的实战案例 SOCKS5 代理 | 青训营

Powered by:NEFU AB-IN 文章目录 Go 语言的实战案例 SOCKS5 代理 | 青训营 引入TCP echo serverauth 认证请求阶段relay阶段 Go 语言的实战案例 SOCKS5 代理 | 青训营 GO语言工程实践课后作业&#xff1a;实现思路、代码以及路径记录 引入 代理是指在计算机网络中&#xff…

硬件知识积累 LED的介绍与选型 (简单电路)

1. LED 的介绍 1.1 LED 是什么 LED :是一种能发光的半导体电子元件。发光二极管&#xff08;LED&#xff09;于20世纪60年代问世。在20世纪80年代之前&#xff0c;LED主要作为指示灯使用&#xff0c;从其光色来看&#xff0c;只有红光、橙光、黄光和绿光等几种。这一时期属于…

MyBatis动态语句且如何实现模糊查询及resultType与resultMap的区别---详细介绍

前言 前面我们学习了如何使用Mybatis实现简单的增删改查。今天我们来学习如何使用动态语句来根据不同的条件生成不同的SQL语句。这在实际开发中非常有用&#xff0c;因为通常查询条件是多样化的&#xff0c;需要根据实际情况来拼接SQL语句&#xff0c;那什么是MyBatis动态语句呢…

【Docker入门第一篇】

Docker简介 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。 容器是完全使…

mysql数据备份批处理文件正式版已测试通过

这里写目录标题 1.数据库全表原始数据.ibd文件备份为.sql文件1.1理解date含义 2.备份原始表中部分表 --改进版2.1 backPartTable表内容2.2备份运行2.3实操代码 3.如何将备份的文件进行压缩处理&#xff1f;&#xff1f;执行压缩文件 1.数据库全表原始数据.ibd文件备份为.sql文件…

Android相机-HAL-Rockchip-hal3

引言&#xff1a; 对于Android相机的 HAL层而言对上实现一套Framework的API接口&#xff0c;对下通过V4L2框架实现与kernel的交互。不同的平台会有不同的实现方案。主要是对Android HAL3的接口的实现。看看rockchip是怎么支持hal3的&#xff1f; 代码目录&#xff1a; hardw…

浅析Linux追踪技术之kprobe:基于kprobes的Event Tracing

文章目录 概述内核选项配置ftrace配置接口kprobe事件配置 使用示例添加kprobes事件kprobes事件使能kprobes事件统计 参考链接 概述 常规的Event Tracing&#xff08;事件追踪&#xff09;是通过散落在Linux内核代码各处的Tracepoint来实现的&#xff0c;这些Tracepoint数量有限…