sql专栏
本专栏以mysql为线索,聚焦sql,包含mysql各类底层原理和sql原理以及写法🧐
九十辰
北化硕士在读
展开
-
sql相关子查询
这个dept_no传到子查询中去,那么子查询在联表的时候,就只会联是这个部门号的数据行,所以子查询的联表得到的暂时表只是当前这一个部门的数据,没有其他部门的数据;这个例题的最终需要获取的信息如果只是dept_no和maxSalary,那很简单了,只需要将两个表连起来,然后对部门进行分组,计算max(salary)就可以了,但是现在除了这两个字段之外还要求emp_no字段,这个字段不是分组字段,所以直接查询是不正确的,所以使用group by的方式是不成立的,就需要使用相关子查询。1.什么是相关子查询。原创 2024-02-04 15:19:46 · 1700 阅读 · 0 评论 -
sql非查询知识点(增删改-crud没有r)
但是,当 SELECT 语句与 INSERT INTO 语句结合使用时,它的功能就扩展了,不仅仅是检索数据,还包括将检索到的数据插入到另一个表中。如果是唯一的索引,那么两个员工是两行数据,同属一个部门,但是部门的索引由于唯一性的限制,却是不同的,那么数据库就没法根据这个索引来加快查找同一部门的员工了,就失去了意义。但是某个字段的普通索引是允许重复的✅,也就是说该字段下每一行的index值是可以不唯一的;首先是区别,就是某个字段的唯一索引是不允许重复的❎,也就是说该字段下每一行的index值都是唯一的;原创 2024-02-02 14:26:32 · 1484 阅读 · 0 评论 -
sql中空值判断和左、右查询配合
在进行连表查询的时候,如果需要判断连表之后的结果某个字段是否是空值,则需要配合左右join才能实现,因为left join是完全将左边的表的所有数据行都保存,并且区匹配右边的表;所以left join左边的表都必须是“正确”的表,有值的表;故而判断null的时候往往inner join(join)是不能用的。right join 同理,只不过是将两个表的顺序调换了而已。在 sql中,NULL 是一个特殊的值,表示“无值”或“值未知”。由于 NULL 是未知的,不能使用等号 = 来比较 NULL 值。原创 2024-02-01 17:55:29 · 481 阅读 · 0 评论 -
SQL中令人头疼的limit、offset、rank、dense_rank、row_number一文辨析
limit m,n的用法与offset同理,它表示从第m+1行开始(因为索引从0开始)返回,并返回n条数据,也就是说它和 limit n offset m 等价。这些关键字都涉及到业务中查询最多、最少、第几这样的问题,所以是需要取数的友友们所要必须掌握的技能。dense_rank():排名号不能落空,最“紧密”的排序方式,1,2,2,2,3,3,4,5,5。row_number():人如其名,行标,1,2,3,4,5,6.。rank():和高考的排名方式一样,1,2,2,4,5,5,7。原创 2023-09-12 21:01:13 · 373 阅读 · 0 评论 -
使用mysql ODBC完成mysql连接excel
excel是微软的产品,可以和同样是微软产品的sql server进行直接连接,但是若要用mysql进行连接就需要odbc。解释:在工作中制作图表、报表,统计数据等等分析任务都需要用到数据库中的数据,虽然可以从数据库中导出数据为excel格式来完成,但是对于数据及时性有要求的需求或者要求自动完成数据生成监控等工作的任务来说十分不便;而配置excel与数据库的连接之后,则可以一键刷新就完成数据从数据库到excel的更新。之后找到刚刚配置好的odbc就可以看到自己的数据库了,随后选择数据库中的表导入即可。原创 2023-09-09 22:53:09 · 401 阅读 · 0 评论 -
SQL使用自连接实现“排序”才能实现的功能
用不了正面的order,就只能用反向的“排除”,具体的方法就是自连接;以一个例子说明:不能用order by的情况下,找出第二高的salary。不用order by的“排序”原创 2023-11-24 01:28:11 · 56 阅读 · 0 评论 -
SQL窗口函数注意事项
窗口函数生成的字段,不能作为where子句的筛选条件,所以要以窗口函数生成的字段为筛选标准的话,则需要先用子查询生成窗口函数的字段,然后再在主查询中对窗口函数生成的字段做判断。原创 2023-11-24 01:26:59 · 75 阅读 · 0 评论 -
SQL中的group by 用法和注意事项
一切需要在使用group by时注意的原创 2023-11-24 01:34:48 · 878 阅读 · 0 评论 -
mysql的连表查询(内、左外、右外、全)
全(外)连接:full outer join (oracle)/ union(sql) 此处以sql为例。指的是表a和表b的交集部分(a和b的都是完整的数据),但是容易产生数据堆叠,如表a中的数据对应表b中的。指的是表a的全部和表b与表a有交集的那部分,表a的数据不动,连接表b的符合要求的部分。指的是表b的全部和表a与表b有交集的那部分,表b的数据不动,连接表a的符合要求的部分。内连接:inner join / join。右外连接:right join。指的是表a和表b的全部。原创 2023-09-12 22:00:03 · 86 阅读 · 0 评论 -
SQL计算工资涨幅,变动+连表和判断日期
这里的思路就是,用两个子查询,一个查询入职时的薪资表,一个查询当前的薪资表,再将两个表连接,进行涨幅的计算。计算薪资涨幅,由于涉及到日期和链表和涨幅,例子比较典型,分享给大家。原创 2023-11-24 01:29:04 · 214 阅读 · 0 评论 -
SQL的执行顺序
SQL 的执行顺序对于理解查询如何被数据库处理非常重要。这里是 SQL 语句在大多数关系数据库管理系统中的一般执行顺序原创 2023-11-23 00:24:15 · 279 阅读 · 0 评论 -
sql中的运算符和常用的模糊查询
is null: 就是空值的意思,数据库中没有值的部分就是<null>,空值;这里注意去辨别,究竟是null字符串(要用='null'才可以)还是真正的<null>其中in关键字可能很多小白不会使用,它用于查询指定查询范围中的数据,一般为in(xxx,xxx,xxx)注意%可以表示出现任意次数的字符,但是_只能表示一个字符,也就相当于是占位符了。sql中除了使用运算符之外,还可以使用like操作符配合通配符进行模糊查询。通配符用来匹配值的一部分,类似正则。sql运算符及其语义如下。原创 2023-10-12 23:50:52 · 152 阅读 · 0 评论