SQL必知必会读书笔记

文章目录

  • **不同的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.mzph.cn/news/28498.shtml

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

相关文章

【数据结构与算法——TypeScript】哈希表

【数据结构与算法——TypeScript】 哈希表(HashTable) 哈希表介绍和特性 哈希表是一种非常重要的数据结构,但是很多学习编程的人一直搞不懂哈希表到底是如何实现的。 在这一章节中,我门就一点点来实现一个自己的哈希表。通过实现来理解哈希表背后的原理…

Zabbix网络拓扑配置

一、简介 网络拓扑功能是一项非常重要的功能,它可以直观展示网络设备主机状态及端口传输速率等指标信息,帮助运维人员快速发现和定位故障问题;Zabbix同样配备了强大的网络拓扑功能,如何使用Zabbix拓扑图功能创建一个公司网络拓扑…

11_Pulsar Adaptors适配器、kafka适配器、Spark适配器

2.3. Pulsar Adaptors适配器 2.3.1.kafka适配器 2.3.2.Spark适配器 2.3. Pulsar Adaptors适配器 2.3.1.kafka适配器 Pulsar 为使用 Apache Kafka Java 客户端 API 编写的应用程序提供了一个简单的解决方案。 在生产者中, 如果想不改变原有kafka的代码架构, 就切换到Pulsar的…

FreeRTOS通过消息队列实现串口命令解析(串口中断)

作者:Jack_G 时间:2023.08.08 版本:V1.0 上次修改时间: 环境: \quad \quad \quad \quad STM32Cube MX V6.8.1 \quad \quad \quad \quad STM32CubeH7 Firmware Package V1.11.0 / 04-Nov-2022 \quad \quad \quad \qu…

抖音的竞争对手?Meta计划人工智能聊天机器人增加社交媒体数量

在来自抖音的竞争中,Meta着眼于用户参与的下一个前沿。 报道,Meta正在开发一系列具有不同个性的人工智能聊天机器人,此举旨在增加用户在脸书和Instagram等社交平台上的参与度金融时报和边缘。这些聊天机器人被Meta staff称为“personas ”,将…

LabVIEW开发高压配电设备振动信号特征提取与模式识别

LabVIEW开发高压配电设备振动信号特征提取与模式识别 矿用高压配电设备是井下供电系统中的关键设备之一,肩负着井下供配电和供电安全的双重任务,其工作状态直接影响着井下供电系统的安全性和可靠性。机械故障占配电总故障的70%。因此,机械故…

代理模式及常见的3种代理类型对比

代理模式及常见的3种代理类型对比 代理模式代理模式分类静态代理JDK动态代理CGLIBFastclass机制 三种代理方式之间对比常见问题 代理模式 代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修…

嵌入式开发实用工具——QFSViewer

嵌入式开发实用工具——QFSViewer 介绍 今天给大家推荐个我个人业余时间开发的一个嵌入式开发实用工具——QFSViewer,这个工具主要是用来加载查看各种嵌入式常用的文件系统映像,目前支持JFSS2、Fat32、Fat16、Fat12、exFat、Ext2、Ext3、Ext4等文件系统…

用栈判断是否匹配

1 问题 写代码的时候用到的括号都是成双成对的出现,并且大小也相同。在集成编辑环境中,IDE就会为我们自己动检查括号是否匹配。那么为了避免在报错,如何判断是否有无括号不匹配? 2 方法 利用栈来实现这种功能。当遇见一个左括号&a…

【Linux命令行与Shell脚本编程】 第十七章 图形化桌面环境脚本编程

Linux命令行与Shell脚本编程 第十七章 图形化桌面环境脚本编程 文章目录 Linux命令行与Shell脚本编程七.图形化桌面环境脚本编程7.1.创建文本菜单7.1.1.创建菜单布局7.1.2.创建菜单逻辑7.1.3.整合脚本菜单7.1.4.使用select命令 7.2.创建文本窗口部件7.2.1.dialog软件包部件msg…

wpf 项目中使用 Prism + MaterialDesign

1.通过nuget安装MaterialDesign 2.通过nuget安装Prism 3.修改App.xmal <prism:PrismApplication x:Class"VisionMeasureGlue.App"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/…

66 # form 数据格式化

实现一个 http 服务器 客户端会发送请求 GET POST 要处理不同的请求体的类型 表单格式&#xff08;formData a1&b2&#xff09;&#xff0c;可以直接通信不会出现跨域问题JSON &#xff08;"{"kaimo":"313"}"&#xff09;文件格式 &#x…

Android 项目导入高德SDK初次上手

文章目录 一、前置知识&#xff1a;二、学习目标三、学习资料四、操作过程1、创建空项目2、高德 SDK 环境接入2.1 获取高德 key2.2下载 SDK 并导入2.2.1、下载SDK 文件2.2.2、SDK 导入项目2.2.3、清单文件配置2.2.4、隐私权限 3、显示地图 一、前置知识&#xff1a; 1、Java 基…

移动端自动化测试实战

UI自动化测试的价值 1、提升回归测试的效率 2、可以进行兼容性测试 UI 自动化测试应用场景 • 冒烟测试自动化&#xff1a;提测之前自动断言提测质量&#xff0c;提供准入参考。 • 功能测试自动化&#xff1a;辅助 QA 与测试工程师的快速验证。 • 验收测试自动化&#xf…

stable-diffusion-webui 界面汉化

本教程通过安装 sd-webui-bilingual-localization 插件来达到汉化目的, 项目地址为:https://github.com/journey-ad/sd-webui-bilingual-localization 一、安装插件 先进入插件安装界面 在搜索栏搜索 zh_CN Localization 中文语言包, 项目地址: https://github.com/dtlnor/st…

CrossOver是什么软件 CrossOver软件好用吗

CrossOver是一款由CodeWeavers公司开发的软件&#xff0c;它可以在Mac和Linux等操作系统上运行Windows软件&#xff0c;而无需在计算机上安装Windows操作系统。这款软件的核心技术是Wine&#xff0c;它是一种在Linux和macOS等操作系统上运行Windows应用程序的开源软件。本文将会…

使用docker 搭建nginx + tomcat 集群

创建3个Tomcat容器&#xff0c;端口分别映射到 8080,8081,8082&#xff0c;使用数据卷挂载&#xff0c;分别将宿主机目录下的 /opt/module/docker/tomcat3/ROOT1/&#xff0c;/opt/module/docker/tomcat3/ROOT2/&#xff0c;/opt/module/docker/tomcat3/ROOT2/ 挂载到 容器内部…

CAD练习——绘制冲压件三视图

首先还是先设置咱们的绘图模板&#xff1a; 这是图层划分&#xff1a; 文字样式设置&#xff1a; 标注样式&#xff1a; 从主视图开始&#xff0c;首先绘制如下图形 用到的快捷指令&#xff1a; L&#xff1a;直线 O&#xff1a;偏移 TR&#xff1a;修剪 效果&#xff1a;…

搭建日志服务器Rsyslog

Rsyslog介绍 Rsyslog的全称是 rocket-fast system for log&#xff0c;它提供了高性能&#xff0c;高安全功能和模块化设计。rsyslog能够接受从各种各样的来源&#xff0c;将其输入&#xff0c;输出的结果到不同的目的地。rsyslog可以提供超过每秒一百万条消息给目标文件。 特…

SQL Server数据库如何添加Oracle链接服务器(Windows系统)

SQL Server数据库如何添加Oracle链接服务器 一、在添加访问Oracle的组件1.1 下载Oracle的组件 Oracle Provider for OLE DB1.2 注册该组件1.2.1 下载的压缩包解压位置1.2.2 接着用管理员运行Cmd 此处一定要用管理员运行&#xff0c;否则会报错 二、配置环境变量三、 重启SQL Se…