sql打卡复习第三篇


本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql;

5. 中级语句

1. 视图

  1. 视图的概念:
    视图是一个虚拟的表,不同于直接操作数据表,视图是依据SELECT语句来创建的。所以操作视图时会根据创建视图的SELECT语句生成一张虚拟表,然后在这张虚拟表上做SQL操作。
    总结:“视图不是表,视图是虚表,视图依赖于表”。
  2. 创建视图
    CREATE VIEW <视图名称>(<列名1>,<列名2>,…) AS <SELECT语句>
  3. 修改视图结构
    ALTER VIEW <视图名> AS <SELECT语句>
  4. 更新视图内容
    视图是虚表,不建议对其进行数据内容更改,更改会影响原表数据。
    UPDATE <视图名> SET <列名1赋值> WHER <条件语句>;
  5. 删除视图
    DROP VIEW <视图名1> [ , <视图名2> …]

2.子查询

  1.  子查询的概念
  子查询指一个查询语句嵌套在另一个查询语句内部的查询,在 SELECT 子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表。
  子查询 相当于已一次性的视图,用完即删除。说白了,就是把多个sql语句合并起来。
  2.嵌套子查询
  SELECT <列名1>,<列名2>,
	FROM (SELECT *
    			FROM (SELECT <列名1> 
    			             FROM <表名> WHERE cnt_product = 4))
    			     
 嵌套子查询可以查询出结果,但是随着子查询嵌套的层数的叠加,SQL语句不仅会难以理解而且执行效率也会很差,所以要尽量避免这样的使用。
   3. 标量子查询
   标量就是单一的意思,那么标量子查询也就是单一的子查询,
   我理解的:  通过嵌套查询的结果,就是一个单一的量。然后通过这个单一量再进行查询。因为是一个单一的量,所以就可以放到任何需要放到的位置上。
   比如 where 条件语句里,group by语句中等等。
   举例 1班成绩 2班成绩   列出1班中 所有大于二班平均成绩 的人。
   解答:用一条sql解决这个问题时   2班的平均成绩查询 就算是是 标量子查询
  4. 关联子查询
  关联子查询就是通过一些标志将内外两层的查询连接起来起到过滤数据的目的
  我理解的:  子查询时,whrer条件中继续要表1信息和表2信息
  举例   1班成绩 2班成绩   列出 1班中 所有大于二班  对应姓氏 平均成绩 的人。
  解答   获取平均成绩时 要根据表一的姓氏和表二相同的姓氏进行分组。然后再去查询

3其他函数

  1.算数函数  
   1-1  : + - * 、
   1-2  : ABS – 绝对值
   1-3  :MOD – 求余数
   1-4 :ROUND( 对象数值,保留小数的位数 )
   2.字符串操作
   2-1 : CONCAT(str1, str2, str3)    -字符串拼接
   2-2: LENGTH( 字符串 ) – 字符串长度
   2-3 :LOWER( 字符串 ) – 小写转换
   2-4: REPLACE( 对象字符串,替换前的字符串,替换后的字符串 )
   2-5:SUBSTRING (对象字符串 FROM 截取的起始位置 FOR 截取的字符数)
   			截取的起始位置从字符串最左侧开始计算,索引值起始为1。
   2-6:SUBSTRING_INDEX (原始字符串, 分隔符,n)
   			该函数用来获取原始字符串按照分隔符分割后,第 n 个分隔符之前(或之后)的子字符串,支持正向和反向索引,索引起始值分别为 1 和 -1。
   3.日期函数
   3-1:CURRENT_DATE – 获取当前日期
   3-2:CURRENT_TIME – 当前时间
   3-3:CURRENT_TIMESTAMP – 当前日期和时间
   3-4:EXTRACT(日期元素 FROM 日期)   截取日期元素
   4.转换函数
   4-1:CAST(转换前的值 AS 想要转换的数据类型)   – 类型转换
   4-2:COALESCE(数据1,数据2,数据3……)      - 将NULL转换为其他值

4.谓词

   1. 谓词的概念
   谓词就是返回值为真值的函数。包括TRUE / FALSE / UNKNOWN。
   2. LIKE谓词 – 用于字符串的部分一致查询
       %是代表“零个或多个任意字符串”的特殊符号
        _是代表匹配任意 1 个字符
        
   3. BETWEEN谓词 – 用于范围查询
      BETWEEN是 闭区间,包含临界值。
   4. IS NULL、 IS NOT NULL – 用于判断是否为NULL
   5.  IN谓词
        IN ( 值1, 值2, 值3, …    ) 可以和子查询进行搭配使用
   6. NOT IN
   7. EXIST
   实际上即使不使用 EXIST,基本上也都可以使用 IN(或者 NOT IN)来代替
   我理解的:   *****   in (  sql语句  )
        用 in 会先去 执行子查寻的sql语句,然后外部 根据该结果继续查询。
        用exist 会把外部的sql进行执行,会拿到一条条(多条)数据。每一条数据通过exist判断 时候显示出来。
        
   要多用not exists,而不用not in,也就是not exists查询的效率远远高与not in查询的效率

5.CASE表达式

   1.语句结构
   CASE WHEN <求值表达式> THEN <表达式>
   WHEN <求值表达式> THEN <表达式>
   WHEN <求值表达式> THEN <表达式>
    .
    .
    .
	ELSE <表达式>
	END  
   2.常用做   select  <列名>  from  <表名> 中 对列名展示的修改
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值