SQL-cookbook学习笔记(一)~检索记录

本文是《SQL Cookbook》第一章的学习笔记,主要涵盖了如何检索记录,包括选择所有行和列、添加WHERE条件、连接列值、使用CASE语句、限制返回行数以及处理空值的方法。此外,还探讨了LIKE运算符和SQL通配符的使用,以及ON和WHERE条件在LEFT JOIN中的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    SQL语句是一个程序员的基本技术要求,很多笔试中SQL的分值甚至达到了50%。所以作为各种和面试官聊骚的小白,为了在人生第一家公司站稳脚跟,我决定撸了这本书--《SQL Cookbook》

    这本书所有的数据库都是RDBMS数据库,即关系数据库管理系统。

    与之对应的还有NOSQL非关系数据库。

 

                                        第一章:检索记录

  1. 从表中检所所有行和列
    1. 使用“*”查找所有
    2. 列出所有标签(推荐,虽然性能相同,但是方便读代码的人理解)
  2. 从表种检索部分行
    1. 使用where添加条件语句
  3. 查找满足多个条件的行
    1. and并列条件
    2. or或者条件
  4. 从表中检所部分列
    1. 在select后面加上所需要检索的标签,而不使用“*”
  5. 为列取有意义的名称
    1. 使用   “原名 as 别名”  添加别名
  6. 在where子句中引用区别名的列
    1. 将select作为内联接,嵌套起来,就可以引用其中的别名了
    2. 内连接多用于:
      1. 聚集函数
      2. 标量子查询
      3. 视图函数
      4. 别名
    3. 关键词优先级:from>where>select
  7. 连接列值
    1. DB2.Oracle,PostgreSQL:
      1. 使用双竖线作为连接运算符 ||
    2. MySQL:
      1. 使用concat函数    select concat(A,'连接词',B)
    3. SQL Server:
      1. 使用加号作为连接运算符 +
  8. 在select语句中使用条件逻辑
    1. case的语法:
      1. case when 条件A Then 结果A  When 条件B 结果B  ........ else 结果N  end
      2. 如果省略else,对于不满足判断条件的会返回null
  9. 限制返回的行数(不关心顺序)
    1. DB2:
      1. 使用fetch first 行数 rows only
    2. MySQL和PostgreSQL:
      1. litmit 行数
    3. Oracle:
      1. where rownum <=行数
    4. SQL server:
      1. 使用top来限制返回行数
      2. 列: select top 行数 * from 表
  10. 从表中随即返回n条记录
    1. DB2:
      1. 使用内置RAND函数,Order By和Fetch
      2. order by rahnd() fetch first 条数 rows only
    2. MySQL:
      1. 使用内置RAND函数,Order By和Limit
      2. order by rand() limit 条数
    3. PostgreSQL:
      1. 使用内置random函数,limit和order by
      2. order by random() limt 条数
    4. Oracle:
      1. 使用DBMS_RANDOM包中的内置函数value,order by和内置函数ROWNUM
    5. SQL Server:
      1. 使用内置函数NEWID,TOP,ORDER BY
  11. 查找空值
    1. is null
    2. is not null
  12. 将空值转换为实际值
    1. 使用coalesce函数用实际的值来替换空值
    2. select coalesce(标签,非空值)
  13. 按模式搜索
    1. 使用like运算符和sql通配符 “%”
    2. %分为   “%字符”     “%字符%”     “字符%” 三中位置,可以匹配不同的位置

补充:

在使用left jion时,on和where条件的区别如下:
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

SQL 是计算机世界的语言,在用关系数据库开发报表时,将数据放入数据库以及从数据库中取出来,都需要SQL 的知识。很多人以种马马虎虎的态度在使用SQL,根本没有意识到自己掌握着多么强大的武器。本书的目的是打开读者的视野,看看SQL 究竟能干什么,以改变这种状况。, 本书是本指南,其中包含了系列SQL 的常用问题以及它们的解决方案,希望能对读者的日常工作有所帮助。本书将相关主题的小节归成章,如果读者遇到不能解决的SQL 新问题,可以先找到最可能适用的章,浏览其中各小节的标题,希望读者能从中找到解决方案,至少可以找到点灵感。, 在这本书中有150 多个小节,这还仅仅是SQL 所能做的事情的鳞半爪。解决日常编程问题的解决方案的数量仅取决于需要解决的问题的数量,本书没有覆盖所有问题,事实上也不可能覆盖;然而从中可以找到许多共同的问题及其解决方案,这些解决方案中用到许多技巧,读者学到这些技巧就可以将它们扩展并应用到本书不可能覆盖的其他新问题上。, 毫无疑问,本书的目标是让读者看到,SQL 能够做多少般认为是SQL 问题范围之外的事情。在过去的10 年间,SQL 走过了很长的路,许多过去只能用C 和JAVA等过程化语言解决的典型问题现在都可以直接用SQL 解决了,但是很多开发人员并没有意识到这事实。本书就是要帮助大家认识到这点。, 现在,在对我刚才的话产生误解之前我先要申明:我是“如果没坏,就别去修它”这教义的忠实信徒。例如,假如你有个特定的业务问题要解决,目前只用SQL检索数据,而其他复杂的业务逻辑由其他语言完成,如果代码没有问题,而且性能也过得去,那么,谢天谢地。我绝对无意建议你扔掉以前的代码重新寻求完全SQL 的解决方案;我只是请你敞开思想,认识到1995 年编程用的SQL 跟2005 年用的不是回事,今天的SQL 能做的事要多得多。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值