前言

本文是根据我阅读的书籍SQL经典实例而写的笔记,只记载我觉得有价值的内容

第一章:检索记录

在Where字句中使用别名

--错误实例
select p as PartNumber from Product where PartNumber='LMKHS'

在Where字句中使用别名,结果报错,原因是因为SQL的执行顺序是

  1. From
  2. Where
  3. Select

可以看到Where比Select先执行,所以别名是Select里面定义的,Where里面肯定用不了

解决办法

如果想在Where中使用以下内容的时候,可以使用内嵌视图

  1. 聚合函数 : 例如min(),max(),sum(),avg()
  2. 标量子查询 : 必须而且只能返回1 行1列的结果的select查询
  3. 窗口函数
  4. 别名 : 本例的as
--内嵌视图如下
select * from(
select p as PartNumber from Product
) temp where PartNumber='LMKHS'

拼接字段数据

例如,我这个表查询语句和结果如下

select Title,Genre from Movie

SQLServer使用+即可完成拼接,Mysql需要使用concat函数,结果如下

select Title+' 是 '+Genre as msg from Movie

Select语句中使用条件逻辑 case when then

select Title,Genre,case when Price = 0 then '零' when Price > 0 then '非零' else '负数' end as status  from Movie

Order By中使用Case When

select name,sal from Movie order by case when sal > 10 then sal asc else sal desc end

把NULL值替换为实际值 coalesce函数

我以前都是直接找到字段 is Null 的然后直接update了,这个函数也行,用也可以

select coalesce(Genre,'音乐家')  from Movie
update Movie set Genre=coalesce(Genre,'音乐家') where ID = 1

第三章:多表查询

union和union all,慎用union

希望两个表进行拼接的时候常常会用到union和union all,区别是显而易见的,union去除了重复数据,union all会显示所有的数据,不管你重复与否,那么问题来了,使用union的时候是先执行了union all,然后再执行了一次distinct去重,例如

select distinct name from(
select name from A union all select name from B
)

在数据量大的时候,执行distinct是非常不好的,所以数据比较大的时候慎重使用union

SQL经典实例笔记的更多相关文章

  1. Sql Server专题:SQL 经典实例

    SQL 经典实例 1.实例表: Student(S#,Sname,Sage,Ssex) 学生表 S#:学号:Sname:学生姓名:Sage:学生年龄:Ssex:学生性别 Course(C#,Cname ...

  2. SQL COOKBOOK SQL经典实例代码 笔记第一章代码

    -- SQL COOKBOOK CHAPTER1 -- 查看所有内容 select * from emp; -- 可以单列 select empno,ename,job,sal,mgr,hiredat ...

  3. C#并发编程经典实例--笔记

    一.简介   --并发         同时做多件事情 --多线程         并发的一种形式,它采用多个线程来执行程序.             **如非必要,代码里不要出现 "new ...

  4. sqlcook sql经典实例 emp dept 创建语句

    创建表语句 create table dept( deptno int primary key, dname varchar(30), loc varchar(30) ); create table ...

  5. 《C#并发编程经典实例》笔记

    1.前言 2.开宗明义 3.开发原则和要点 (1)并发编程概述 (2)异步编程基础 (3)并行开发的基础 (4)测试技巧 (5)集合 (6)函数式OOP (7)同步 1.前言 最近趁着项目的一段平稳期 ...

  6. 【SQL】ROW_NUMBER() OVER(partition by 分组列 order by 排序列)用法详解+经典实例

    #用法说明 select row_number() over(partition by A order by B ) as rowIndex from table A :为分组字段 B:为分组后的排序 ...

  7. 《C#并发编程经典实例》学习笔记—2.7 避免上下文延续

    避免上下文延续 在默认情况下,一个 async 方法在被 await 调用后恢复运行时,会在原来的上下文中运行. 为了避免在上下文中恢复运行,可让 await 调用 ConfigureAwait 方法 ...

  8. 《C#并发编程经典实例》学习笔记—3.1 数据的并行处理

    问题 有一批数据,需要对每个元素进行相同的操作.该操作是计算密集型的,需要耗费一定的时间. 解决方案 常见的操作可以粗略分为 计算密集型操作 和 IO密集型操作.计算密集型操作主要是依赖于CPU计算, ...

  9. 《C# 并发编程 · 经典实例》读书笔记

    前言 最近在看<C# 并发编程 · 经典实例>这本书,这不是一本理论书,反而这是一本主要讲述怎么样更好的使用好目前 C#.NET 为我们提供的这些 API 的一本书,书中绝大部分是一些实例 ...

随机推荐

  1. Beyond Compare设置自定义过滤

    Beyond Compare是一款优秀的专业级文件比较软件,利用它可以快速比较出文件之间的差异,以便于修改.整合.其中较强大的功能之一就是文件夹比较,面对海量的子文件夹以及文件,Beyond Comp ...

  2. Redis Cluster数据分片机制

    复制粘贴自: https://www.e-learn.cn/content/redis/2344485, 点击链接访问原文 仅供个人学习参考之用, 如有侵权, 请联系删除! 高级开发不得不懂的Redi ...

  3. vue发送websocket请求和http post请求

    直接上代码: pdf.vue <script> import SockJS from 'sockjs-client'; import Stomp from 'stompjs'; impor ...

  4. applyMiddleware 沉思录

    let newStore = applyMiddleware(mid1, mid2, mid3, ...)(createStore)(reducer, null); 给({ getState, dis ...

  5. 使用s3-sftp-proxy 暴露minio s3 数据为sftp 访问

    尽管s3 很不错,但是ftp 也有自己存在的价值,以下是一个简单的通过s3-sftp-proxy 暴露minio s3 数据为ftp 的访问方式 环境准备 docker-compose 文件 vers ...

  6. Kafka的基本概念

    Kafka的前身是由LinkedIn开源的一款产品,2011年初开始开源,加入了 Apache 基金会,2012年从 Apache Incubator 毕业变成了 Apache 顶级开源项目. Top ...

  7. [图形计算器]Desmos

    一.图形计算器 var elt = document.getElementById('calculator'); var calculator = Desmos.GraphingCalculator( ...

  8. 对 OAuth2 和非标 DingDing OAuth2 的一次尝试

    印象中工作以来还从来没搞过一次 OAuth2 的接入- -,似乎只停留在愉快的使用阶段.比如现在很多网站都接了 wx 二维码扫码登录或者微博登录.所以一直只是享受着这样的便利,却没有机会自己来搞一搞把 ...

  9. VS2017 远程调试linux(centos).net core程序(通过附加程序的方式)

    参考两位大神的帖子: https://blog.csdn.net/soband_xiang/article/details/82914195 https://blog.csdn.net/weixin_ ...

  10. data.table

    data.table: Extension of 'data.frame' 安装 data.table install.packages("data.table") 官网:http ...