SQL必知必会读书笔记

news2024/11/20 15:41:34

文章目录

  • **不同的DB语法格式不尽相同**
  • 第一课 了解SQL
    • 术语
  • 第二课 检索数据
    • 语法格式
      • 检索列
      • 检索唯一不同值
      • 限制结果(数量)
  • 第三课 排序检索数据
    • 使用说明
  • 第四课 过滤数据
    • WHERE子句操作符
  • 第五课 高级数据过滤
    • 1、组合WHERE子句
    • 2、IN操作符
    • 3、NOT操作符
  • 第六课 使用通配符进行过滤
    • 1、LIKE操作符
  • 第七课 创建计算字段
    • 什么是计算字段
    • 使用计算字段
      • 1.拼接字段
      • 2.执行算数计算
  • 第八课 使用函数处理数据
    • 函数分类
  • 第九课 汇总数据
    • 聚集函数
  • 第十课 分组数据
  • 第十一课 使用子查询
  • 第十二课 联结表
    • 关系表
    • 笛卡尔积
  • 第十八课 使用视图
    • 视图的优点
    • 视图创建常见规则和限制
    • 1.创建视图
    • 2.用视图重新格式化检索出的数据
    • 3.使用视图过滤掉不想要的数据
  • 第十九课 使用存储过程

不同的DB语法格式不尽相同

不同的DB语法格式不尽相同,使用的时候百度吧。可参考菜鸟教程:https://www.runoob.com/sql/sql-tutorial.html

第一课 了解SQL

术语

  • DataBase数据库
  • DataBaseManagementSystem
  • schema模式:描述数据库和表的布局及其特性的信息。(定义数据如何在表中存储,包括存储什么样的数据,数据怎么分解,各部分信息怎么命名)
  • row/record
  • primary key
  • clause子句,从句
    primary key的充分条件(即满足以下条件,该列可以作为主键):
  1. 唯一性:任何两行都不具有相同的主键
  2. 非NULL:每一行都必须有一个主键值
  3. 固定:主键列中的值不允许修改或者更新
  4. 不能重用:删除某条记录后,它的主键不能赋给新行

第二课 检索数据

SELECT语句使用 DISTINCT子句 TOP、LIMIT子句

语法格式

检索列

SELECT columns[] FROM table_name
  • columns[]:1、多个列名,中间用,隔开;2、所有列,使用通配符*

检索唯一不同值

SELECT DISTINCT column_name From table_name

DISTINCT关键字作用于所有列,不仅仅是跟在其后的那一列,若其后有两个列名,两列数据不完全相同,则所有数据都会检索

限制结果(数量)

SELECT TOP row_quantity * FROM table_name 

第三课 排序检索数据

ORDER BY

使用说明

  1. ORDER BY子句需是最后一条子句
  2. 可以使用非选择的列进行排序
  3. 按多个列排序时的顺序:按规定进行
  4. 升序/降序:ASC、DESC

特殊的写法:

SELECT col_name1,col_name2,col_name3,col_name4 FROM table_name ORDER BY 2,3
等价于
SELECT col_name1,col_name2,col_name3,col_name4 FROM table_name ORDER BY col_name2,col_name3

第四课 过滤数据

WHERE子句
search criteria/filter condition

WHERE子句操作符

大于、小于,BETWEEN AND等

第五课 高级数据过滤

1、组合WHERE子句

AND、OR子句
AND优先级一般比OR高,可以使用括号

2、IN操作符

相当于OR,优点如下:

  1. 可以更直观清楚地看出合法选项有哪些
  2. 与其他AND、OR操作符组合使用时,求值顺序更容易管理
  3. IN操作符执行速度一般比一组OR更快
  4. IN可以包含其他SELECT语句,(子查询)

3、NOT操作符

第六课 使用通配符进行过滤

1、LIKE操作符

wildcard通配符
search pattern搜索模式

  • 配合%(匹配多个字符)、_(匹配单个字符)、[](待匹配指定字符集)使用

第七课 创建计算字段

什么是计算字段

目的:直接从DB中检索出转换、计算或格式化后的数据,而不用在客户端应用程序再进行格式化。
应用场景:

  1. 需要显示公司名(column1)、公司地址(column2);
  2. 列数据大小写混合,但要求输出全大写\小写
  3. 需要输出销售额,表里只存了单价(column1)、销售量(column2)
  4. 。。。
    字段(field)与列(column)基本同意,一般字段与计算字段一起使用,列一般指数据列

使用计算字段

1.拼接字段

拼接concatenate

  1. 拼接多个列成为一个列(计算字段)
  • 操作符+||、或者CONCAT子句(具体看使用的DBMS是什么)
  1. 去掉空格
    部分DBMS将多个列结合成一个计算字段时,可能会保存填充为列宽的文本值(直观来看就是多了一些空格)
  • 可以使用RTRM()函数去掉右边空格
  • LTRIM()函数去掉左边空格
  • TRIM()函数去掉左右两边空格
  1. 使用别名(alias)
    别名用AS关键字赋予,也称导出列(drived column)

2.执行算数计算

可以使用四则运算符号+-*/

第八课 使用函数处理数据

每一个DBMS都有特定的函数,注意自己使用的是什么DBMS也就意味着,SQL语句可以移植,但是SQL函数不可移植
可移植(portable)

函数分类

  1. 处理文本字符串的文本函数:删除值,填充值,大小写转换。。。
  2. 对数值数据进行算数操作的数值函数:返回绝对值,进行代数运算。。。
  3. 处理日期和时间并从中提取特定成分的日期和时间函数:时间间隔。。。
  4. 返回DBMS正使用的特殊信息的系统函数:用户登陆信息。。。

SOUNDEX()将任何文本串转换为描述其语音表示的字母数字模式,使得能对字符串进行发音比较而不是字母比较

第九课 汇总数据

聚集函数

**使用场景:**只关心数据统计信息,不必看具体数据明细
AVG()MIN()MAX()COUNT()SUM()函数

第十课 分组数据

GROUP BY子句
使用注意:

  • 可以包含任意数目的列,因而可以对分组进行嵌套
  • 若在该子句中嵌套了分组,数据将在最后制定的分组上进行汇总,即建立分组时,指定的所有列都一起计算(不能从个别的列返回数据)
    HAVING子句

第十一课 使用子查询

1.在WHERE子句中嵌套查询

  • 作为子查询的ELECT语句只能查询单个列,检索多个列会报错
    2.作为计算字段使用子查询

第十二课 联结表

关系表

关系表的设计需要将信息分解,一类信息一个表,各表之间通过某些共同的值互相关联。
在这里插入图片描述
如:供应商信息表与产品信息表,红色为PK

笛卡尔积

若未设置联结条件,则会返回笛卡尔积。
例如:48 * 255 = 12240
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第十八课 使用视图

视图 :虚拟的表,只包含使用时动态检索数据的查询。部分DBMS及早期版本不支持视图、或者支持视图的权限有限(只读,不可编辑)
使用视图时,注意性能问题

视图的优点

  1. 重用SQL语句
  2. 简化复杂的SQL操作,抽象
  3. 使用表的一部分而非整个表
  4. 保护数据,可以授予用户访问表特定部分的权限,不用访问整个表
  5. 更改数据格式和表示:视图可以返回和底层表的表示和格式不同的数据

视图创建常见规则和限制

得看具体的DBMS文档

  1. 视图名唯一:不能与别的表、视图重名
  2. 可以创建的视图数量没有限制
  3. 创建视图时,需要有足够的访问权限
  4. 视图可以嵌套,嵌套层数得看具体的DBMS
  5. 许多DBMS在视图查询中禁止使用ORDER BY子句
  6. 有些DBMS要求对返回的所有列进行命名,若列是计算字段,需使用别名
  7. 视图不能索引,也不能有关联的触发器或默认值
  8. 有些DBMS吧视图作为只读的查询:可以从视图中检索数据,但不能将数据写会底层表
  9. 有些DBMS允许创建这样的视图,它不能进行导致行不再属于视图的插入和更新。(不太理解,应该用不到)

1.创建视图

CREATE VIEW 
CREATE OR REPLACE VIEW
CREATE OR RELACE VIEW "schema_name"."view_name"
AS (
		~~~
		查询sql
		~~~
);

新建视图之前,可以先select一下自己要创建的视图,避免修改已有的同名视图

2.用视图重新格式化检索出的数据

3.使用视图过滤掉不想要的数据

WHERE子句也适用于视图,可以把视图看做表,一种特殊投影了的“表”
从视图检索数据时,若使用了一个WHERE子句,则两组WHERE子句(一组在视图中:创建视图时的,一组是传递给视图的:使用视图时的)将自动组合

第十九课 使用存储过程

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

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

相关文章

kube-prometheus 使用 blackbox-exporter 进行icmp 监控

安装kube-prometheus 后默认在monitoring namespace中有创建 blackbox-exporter deployment。但默认没有icmp的module配置,无法执行ping探测。因为即使有icmp module,默认配置也是无法执行ping探测的(这篇文章要解决的就是这个问题&#xff0…

尚品汇总结十:秒杀模块(面试专用)

1、需求分析 所谓“秒杀”,就是商家发布一些超低价格的商品,所有买家在同一时间网上抢购的一种销售方式。通俗一点讲就是商家为促销等目的组织的网上限时抢购活动。由于商品价格低廉,往往一上架就被抢购一空,有时只用一秒钟。 秒…

数据结构----结构--线性结构--链式存储--链表

数据结构----结构–线性结构–链式存储–链表 1.链表的特点 空间可以不连续,长度不固定,相对于数组灵活自由 搜索: 时间复杂度O(n) 增删: 头增头删时间复杂度O(1) 其他时间复杂度为O(n) 扩展:单向循环链表的特性 从任意节…

【数据分享】2023年我国省市县三级的上市公司数量(Excel/Shp格式)

企业是经济活动的参与主体,一个城市的企业数量决定了这个城市的经济发展水平!在众多公司企业中,上市公司堪称明珠,上市公司通常经济规模大、影响力强、员工多。哪个城市的上市公司更多,往往这个城市的经济实力越强&…

Flowable-结束事件-错误结束事件

目录 定义图形标记XML内容界面操作使用示例视频教程 定义 错误结束事件会在流程到达错误结束事件的时候抛出错误,并结束当前的流程分支。异常结束 事件是有抛出结果的,它需要定义抛出错误码,如果找到了异常开始事件错误码,就会触…

【网络编程(一)】Socket入门实操与BIO详讲

Socket 两台计算机使用Socket套接字进行 TCP 连接数据传输时过程如下: 服务器实例化一个 ServerSocket 对象,表示通过服务器上的端口通信。服务器调用 ServerSocket 类的 accept() 方法,该方法一直会等待,直到客户端连接到服务器…

[编程开发工具-6]:master 分支和 dev 分支区别

目录 Git 中的 master 分支和 dev 分支之间有几个重要的区别: Git分支实践: master: develop: Feature: feature/{故障号_description}。 hotfix: Git 中的 master 分支和 dev 分支之间有几个重要的区别: 功能:master 分支是…

2.5D游戏是如何做出来的呢,2.5D游戏快速制作教程

前言 【Unity实战篇 】 | 如何制作一款2.5D游戏,2.5D游戏制作案例一、2.5D 游戏概念二、绘制地图三、添加玩家动画和移动等操作四、视角配置4.1 调整摄像机与场景对象的角度4.2 增加镜头旋转功能 五、游戏效果展示 总结 前言 玩过游戏的朋友都知道,市面…

sql注入漏洞

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 原因危害如何挖寻找注入点测试是否有绕过实质分类sqli靶场盲注时间盲注别人的总结UA注入referer注入DNSlog外带cookie注入宽字节注入堆叠注入sqlmap工具getshellacc…

网络防御(8)

根据以下问题总结当天内容 1.什么是数据认证,有什么作用,有哪些实现的技术手段? 2.什么是身份认证,有什么作用,有哪些实现的技术手段? 3.什么VPN技术? 4.VPN技术有哪些分类? 5.IPSEC技术能够提供哪些安全服务? 6.IPSEC的技术…

Elastic Stack 8.9:更快的跨集群搜索和指标聚合

作者:Tyler Perkins, Gilad Gal, Teresa Soler, Shani Sagiv, Bernhard Suhm, George Kobar Elastic Stack 8.9 在多个方面实现了显着的性能改进:Kibana 中更快的跨集群搜索、Elasticsearch 更快的聚合,以及更快、更相关的向量搜索&#xff0…

C++ ModBUS TCP客户端工具 qModMaster 介绍及使用

qModMaster工具介绍 QModMaster是一个基于Qt的Modbus主站(Master)模拟器,用于模拟和测试Modbus TCP和RTU通信。它提供了一个直观的图形界面,使用户能够轻松设置和发送Modbus请求,并查看和分析响应数据。 以下是QModM…

互联网时代下如何搞好网络口碑?

移动互联网时代到来,网络口碑对于任何一家企业都不可忽视,没有口碑的企业广告满天飞但是成交的客户寥寥无几,口碑好的企业没有广告但是仍然能保持业绩增长,这是一个不争的事实。 有人会说,业绩好的是人家产品好所以口碑…

选读SQL经典实例笔记20_Oracle语法示例

1. 计算一年有多少天 1.1. sql select Days in 2005: ||to_char(add_months(trunc(sysdate,y),12)-1,DDD)as reportfrom dualunion allselect Days in 2004: ||to_char(add_months(trunc(to_date(01-SEP-2004),y),12)-1,DDD)from dual REPORT ----------------- Days in 200…

Java中的SimpleDateFormat方法分析

Java中的SimpleDateFormat方法分析 先进行专栏介绍SimpleDateFormat方法分析 常用方法构造方法格式化(从Date到String)举例分析 解析(从String到Date)举例分析 设置方法:注意 代码示例代码结果 综合案例效果 先进行专栏介绍 本专栏是自己学J…

服装行业多模态算法个性化产品定制方案 | 京东云技术团队

一、项目背景 AI赋能服装设计师,设计好看、好穿、好卖的服装 传统服装行业痛点 • 设计师无法准确捕捉市场趋势,抓住中国潮流 • 上新周期长,高库存滞销风险大 • 基本款居多,难以满足消费者个性化需求 解决方案 • GPT数据…

封装统一Api接口

第一步 第二步 第三步 因为是新的页面,所以需要在路由上面写 第四步 操作商品的所有接口 第五步 浏览器结果

14.3.6 【Linux】LVM 相关指令汇整与 LVM 的关闭

至于文件系统阶段 (filesystem 的格式化处理) 部分,还需要以 xfsgrowfs 来修订文件系统实际的大小才行。至于虽然 LVM 可以弹性的管理你的磁盘容量,但是要注意,如果你想要使用 LVM 管理您的硬盘时,那么在安…

性能分析5部曲:瓶颈分析与问题定位,如何快速解决瓶颈?

一、引言 很多做性能测试的同学都问过我这样一个问题:鱼哥(Carl_奕然),你说性能测试的重点是什么? 我的回答很简单:瓶颈分析与问题定位。 在性能项目的整个周期,不管是脚本设计,脚本编写还是脚本执行,都…

深入探索 Spring MVC:构建优雅的Web应用

文章目录 前言一、什么是 Spring MVC1.1 什么是 MVC1.2 什么是 Spring MVC 二、Spring MVC 项目的创建2.1 项目的创建2.2 第一个 Spring MVC 程序 —— Hello World 三、RequestMapping 注解3.1 常用属性3.2 方法级别和类级别注解3.3 GetMapping、PostMapping、PutMapping、Del…