草庐IT

SQL必知必会知识点汇总

祖国滴花骨朵儿 2024-01-01 原文

前言

❤欢迎大家阅读我的文章呀❤
今天是SQL必知必会的最后一块练习。
希望你们在我的文章当中能有所收获!!!
SLogan:利用有限的时间,撸起袖子加油干!

  本篇内容主要总结了【SQL必知必会】当中的一些知识点以及我做题过程当中碰到的一些细节问题。虽然这一块的题目做下来难度不大,非常容易掌握,但这是打基础的一个阶段,所以还是要耐下心来好好学习!!!这一块的内容并没有涉及到很多新的知识点,无非就是对之前几个知识点反复运用罢了,接下来我们就开始归纳!

注意点

ORDER BY 中如果定义了多个字段,则按照字段的先后顺序排序,用英文逗号隔开。

ORDER BY cust_id,order_date DESC

WHERE [NOT ] IN ()

①列名 [NOT] IN(常量1, 常量2,…常量n)

注意:IN后面的括号当中如果是字符串的话,一定要将字符串用单引号 ’ 标注起来;
例如:SELECT * FROM table WHERE uname IN('aa','bb','cc');

注意点

WHERE的用法在ORDER之前

意思就是说ORDER BY 放在 WHERE语句之后

字符串的截取

substring(字符串,起始位置,截取字符数)

参数1:字符串
参数2:截取的起始位置
参数3:截取的字符数量

例如:

SUBSTRING(cust_name,1,2)

表示的含义:取cust_name的前两个字符,从第1个字符开始,取2个字符

SUBSTRING(cust_city,1,3)

表示的含义:取cust_city的前三个字符,从第1个字符开始,取3个字符

字符串的拼接

concat(字符串1,字符串2,字符串3,…)

例如:

CONCAT(SUBSTRING(cust_name,1,2),SUBSTRING(cust_city,1,3))

承接上一个截取字符的例子,将cust_name当中取出来的前2个字符和从cust_city当中取出来的3个字符拼接起来。

字母大写

upper(字符串)

时间函数

年:YEAR(date)
月:MONTH(date)
日:DAY(date)

下面列举三种不同的表达方式(2020年1月):
常规方法
①YEAR(order_date)=2020 AND MONTH(order_date)=1
切割字符串
②WHERE left(order_date, 7) = ‘2020-01’
用LIKE来查找
③WHERE order_date LIKE ‘2020-01%’

注意点

GROUP BY必须得配合聚合函数来用,分组之后你可以计数(COUNT),求和(SUM),求平均数(AVG)等。

HAVING和GROUP BY

where—过滤过滤指定的行 having–过滤分组,与group by连用

GROUP BY 和HAVING 搭配使用!

子查询

格式如下:

SELECT cust_id FROM Orders
WHERE order_num IN (
SELECT order_num
FROM OrderItems
WHERE item_price>=10
)

JOIN连接

以下三个联结之间的区别:

内联结:INNER JOIN。取两列的交集。
外联结:LEFT JOIN。左连接,以左边表的列为主,取两列的交集,对于不在右边列存在的名称取null。
    RIGHT JOIN。右连接,以右边表的列为主,取两列的交集,对于不在左边列存在的名称取null。

UNION 和UNION ALL的区别

UNION–将两个表做行拼接,同时自动删除重复的行。
UNION ALL—将两个表做行拼接,保留重复的行。

union使用前提
使用union合并两个表时,需要两个表的结果集字段完全一样;

使用UNION组合查询时,只能使用一条ORDER BY 字句,且必须位于最后一条SELECT语句之后!!!

总结

  希望大家一键三连呀!!谢谢!!!

  今天结束了【SQL必知必会】专题的知识点汇总,这一部分的知识点和最开始的基础是离不开的,所以把基础打好之后,一道题目有很多种解法,我们只要多积累自己搞不清楚的地方,多积累自己的错题就可以学的更好!!!
  预告一下:接下来要学习的是【SQL进阶挑战】,让我们一起期待吧!

  感谢您宝贵的阅读,关注和点赞噢!晚安❤

有关SQL必知必会知识点汇总的更多相关文章

  1. Hive SQL 五大经典面试题 - 2

    目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类

  2. sql - 查询忽略时间戳日期的时间范围 - 2

    我正在尝试查询我的Rails数据库(Postgres)中的购买表,我想查询时间范围。例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买。此表中有一个created_at列,但我不知道如何在不搜索特定日期的情况下完成此操作。我试过:Purchases.where("created_atBETWEEN?and?",Time.now-1.hour,Time.now)但这最终只会搜索今天与那些时间的日期。 最佳答案 您需要使用PostgreSQL'sdate_part/extractfunction从created_at中提取小时

  3. sql - 在 Rails Console for PostgreSQL 的表中显示数据 - 2

    我找到了这样的东西:Rails:Howtolistdatabasetables/objectsusingtheRailsconsole?这一行没问题:ActiveRecord::Base.connection.tables并返回所有表但是ActiveRecord::Base.connection.table_structure("users")产生错误:ActiveRecord::Base.connection.table_structure("projects")我认为table_structure不是Postgres方法。如何列出Postgres数据库的Rails控制台中表中的所有

  4. ruby - 防止SQL注入(inject)/好的Ruby方法 - 2

    Ruby中防止SQL注入(inject)的好方法是什么? 最佳答案 直接使用ruby?使用准备好的语句:require'mysql'db=Mysql.new('localhost','user','password','database')statement=db.prepare"SELECT*FROMtableWHEREfield=?"statement.execute'value'statement.fetchstatement.close 关于ruby-防止SQL注入(inject

  5. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  6. ruby-on-rails - 如何在 Rails 中的不同数据库上执行直接 SQL 代码 - 2

    我正在编写一个Rails应用程序,它将监视某些特定数据库的数据质量。为了做到这一点,我需要能够对这些数据库执行直接SQL查询——这当然与用于驱动Rails应用程序模型的数据库不同。简而言之,这意味着我无法使用通过ActiveRecord基础连接的技巧。我需要连接的数据库在设计时是未知的(即:我不能将它们的详细信息放在database.yaml中)。相反,我有一个模型“database_details”,用户将使用它来输入应用程序将在运行时执行查询的数据库的详细信息。因此与这些数据库的连接实际上是动态的,细节仅在运行时解析。 最佳答案

  7. 常见网络安全产品汇总(私信发送思维导图) - 2

    安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un

  8. sql - Rails:使用 Postgres 创建对象时重复 ActiveRecord::RecordNotUnique? - 2

    我正在使用Rails4应用程序,它需要创建大量对象以响应来自另一个系统的事件。当我调用create!时,主键列上出现非常频繁的ActiveRecord::RecordNotUnique错误(由PG::UniqueViolation引起)我的模型之一。我在SO上找到了其他答案,建议挽救异常并调用retry:beginTableName.create!(data:'here')rescueActiveRecord::RecordNotUnique=>eife.message.include?'_pkey'#Onlyretryprimarykeyviolationslog.warn"Retr

  9. ruby-on-rails - Ruby 和 SQL 中的重复业务逻辑 - 2

    我有一个PORO(普通旧Ruby对象)来处理一些业务逻辑。它接收一个ActiveRecord对象并对其进行分类。为了简单起见,以下面为例:classClassificatorSTATES={1=>"Positive",2=>"Neutral",3=>"Negative"}definitializer(item)@item=itemenddefnameSTATES.fetch(state_id)endprivatedefstate_idreturn1if@item.value>0return2if@item.value==0return3if@item.value但是,我还想根据这些st

  10. sql - ActiveRecord 的意外行为包括 - 2

    我正在使用ARincludes在对象User和Building之间执行LEFTOUTERJOIN的方法,其中User可能有也可能没有Building关联:users=User.includes(:building).references(:buildings)因为我正在使用references,任何关联的Building对象都将被预先加载。我的期望是我随后能够遍历用户列表,并检查用户是否有与其关联的建筑物而不会触发额外的查询,但实际上每当我尝试访问建筑物属性时我都会看到对于没有建筑物的用户,AR会进行另一个SQL调用以尝试检索该建筑物(尽管在后续尝试中它只会返回nil)。这些查询显然是

随机推荐