前言

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

第一章:检索记录

在Where字句中使用别名

  1. --错误实例
  2. 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
  1. --内嵌视图如下
  2. select * from(
  3. select p as PartNumber from Product
  4. ) temp where PartNumber='LMKHS'

拼接字段数据

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

  1. select Title,Genre from Movie

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

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

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

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

Order By中使用Case When

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

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

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

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

第三章:多表查询

union和union all,慎用union

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

  1. select distinct name from(
  2. select name from A union all select name from B
  3. )

在数据量大的时候,执行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. jenkins构建邮件自动发送,测试邮件发送成功,构建项目邮件发送不成功的问题

    提示问题: Connection error sending email,retrying once more in 10 seconds…… Connection error sending ema ...

  2. python基础笔记-列表

    列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可. def main(): ...

  3. 牛客NOIP暑期七天营-提高组2C:滑块(平衡树) (这里rope骗分)

    A:hash 或者 map 或者trie. #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) usin ...

  4. Exception的异常分类与处理

    一. 异常:  1:错误的分类          1)Error:错误(不可控),一般指的是系统方面的异常,比如 蓝屏,内存溢出,jvm运行环境出现了问题.          2) Exception ...

  5. Go语言 - goroutine

    并发与并行 并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天). 并行:同一时刻执行多个任务(你和你朋友都在用微信和女朋友聊天). Go语言的并发通过goroutine实现.goroutin ...

  6. Spring AOP(面向切面编程)

    AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理.日志管理.权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性. 简单例子: ...

  7. python函数 | 匿名函数lambda

    匿名函数:lambda 表达式.普通函数有且只有返回值的函数才能用匿名函数进行简化成一行函数. 匿名函数不单独使用,一般和内置函数结合使用.内置函数中,可加入函数的有min.max.sorted.ma ...

  8. [CMS] UsualToolCMS-8.0 sql注入漏洞【转载】

    原文地址:http://lyscholar.cn/2019/07/30/代码审计-usualtoolcms存在sql注入漏洞/ 0x01 漏洞环境 版本信息:UsualToolCMS-8.0-Rele ...

  9. 在 Ubuntu/Debian 下安装 PHP7.3 教程

    介绍 最近的 PHP 7.3.0 已经在 2018 年12月6日 发布 GA,大家已经可以开始第一时间体验新版本了,这里先放出 PHP7.3 安装的教程以便大家升级. 适用系统: Ubuntu 18. ...

  10. 三个面向对象相关的装饰器@property@staticmathod@classmethod

    @property 先看实例: from math import pi class Circle: def __init__(self,r): self.r = r @property def per ...