JAVA-软开-常见八股文(2)-数据库相关

1 Drop Delete Truncate三者之间的区别和联系

drop删除整张表,包括表结构和表数据。用法 drop table 表名

truncate表示清空数据,不会删除表结构。truncate table 表名

delete表示删除数据,不会删除表结构。delete from 表名 where 列名 = 值,

那么,truncate和delete的区别:

            truncate属于 DDL(数据定义语言)语句,操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。由DBA所使用。不产生日志信息

            delete 语句是 DML (数据库操作语言)语句,这个操作会放到 rollback segment 中,事务提交之后才生效。开发人员日常使用较为频繁。产生数据的binlog日志。
 

一般来说执行效率:drop > truncate > delete。

2 SQL查询语句中的Limit关键词的用法。

select _column,_column from _table [where Clause] [limit N][offset M] select * : 返回所有记录

limit N : 返回 N 条记录

offset M : 跳过 M 条记录, 默认 M=0, 单独使用似乎不起作用

limit N,M : 相当于 limit M offset N , 从第 N 条记录开始, 返回 M 条记录

以下表示均为找表table_a的前5行数据。

    1 select * from table_a limit 5;    --> limit n; 表示前n行数据2 select * from table_a limit 0, 5;  --> limit m , n ;表示第m+1,到第m+ n行的n条数据3 select * from table_a limit 5 offset 5;  --> limit n offset m ;  表示的是偏移m行,从第m+1到第n行的n条数据。

常见的分页查询

select * from _table limit (page_number-1)*lines_perpage, lines_perpage或select * from _table limit lines_perpage offset (page_number-1)*lines_perpage

3. where group by和Having的先后顺序

SELECT cust_name, COUNT() AS num 
FROM Customers 
WHERE cust_email IS NOT NULL 
GROUP BY cust_name 
HAVING COUNT() >= 1;

having:

having 用于对汇总的 group by 结果进行过滤。 having 一般都是和 group by 连用。 

having vs where:

where:过滤过滤指定的行,后面不能加聚合函数(分组函数)。where 在group by 前。 having:过滤分组,一般都是和 group by 连用,不能单独使用。having 在 group by 之后

执行顺序: where---->group by---->Having ,聚合函数只能用在Having, select

此外:order by 和 where的顺序,先where - order by

完整的顺序:Where, Group By, Having, Order by


 

4.SQL语句中Like通配符%和下划线_的用法

% :表示任意0个或多个字符,可匹配任意类型和长度的字符。

_ : 表示任意单个字符。

注意:如果要搜索 字符中有下划线的,需要对_进行转义

  1. select * from t where x like '%\_%' escape ''; 搜索中间含有下划线的查询条件,通过escape进行转义。
  2. Like对应的否定是NOT LIKE (类似于判断字符串是否为空,IS NULL / IS NOT NULL)

5.内连接 外连接 之间的关系

ON 和 WHERE 的区别:

连接表时,SQL 会根据连接条件生成一张新的临时表。ON 就是连接条件,它决定临时表的生成。

WHERE 是在临时表生成以后,再对临时表中的数据进行过滤,生成最终的结果集,这个时候已经没有 JOIN-ON 了。所以总结来说就是:SQL 先根据 ON 生成一张临时表,然后再根据 WHERE 对临时表进行筛选。

如果不加任何修饰词,只写 JOIN,那么默认为 INNER JOIN。

对于 INNER JOIN 来说,还有一种隐式的写法,称为 “隐式内连接”,也就是没有 INNER JOIN 关键字,使用 WHERE 语句实现内连接的功能。

隐式内连接

select c.cust_name, o.order_num
from Customers c, Orders o 
where c.cust_id = o.cust_id 
order by c.cust_name;

显式内连接

select c.cust_name, o.order_num
from Customers c 
inner join Orders o 
using(cust_id) 
order by c.cust_name;

6.IN 和EXISTS查询的区别

1 IN后面的子查询返回的结果集是单个列表值的集合;而EXISTS所跟的是查询的结果集

2 IN是先进行内部查询,再根据结果进行外部查询;而EXISTS则从外部表开始遍历每一行,判断其是否满足条件

3 IN主要的查询效率是依赖于外表的索引,而EXISTS的查询效率是依赖于内表的索引。

4 因此,当子查询结果集较大,而外表较小时,EXISTS的性能较好;

当子查询结果集较小,而外部表较大的时候。IN的性能较好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/160628.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023最新版本 FreeRTOS教程 -5-切断驱动和应用的直接关联与多输入的编码思路

在多输入的场景方便添加新的设备如图 总体的思路框图 函数讲解(图片太抽象通过这个函数理解) 写入自己的队列 统一数据(建议读取自己的队列 再统一到应用的队列 这里图方便省略了) 通过统一的数据做出执行操作 验证 队列为空直接阻塞 通过三个按…

@Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成

问题 Tag和Operation标签失效 但是Schema标签有效 pom依赖 <!-- 接口文档--><!--引入openapi支持--><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><vers…

MySQL - Zero date value prohibited

问题: timestamp字段报Caused by: com.mysql.cj.exceptions.DataReadException: Zero date value prohibited 原因: timestamp字段存入了0值, 超出了最小值1900-01-01 00:00:00, 转Java对象的时候报错 解决: 1.修复或删除原数据 2. mysqlurl 中添加zeroDateTimeBehaviorconve…

【漏洞复现】Drupal XSS漏洞复现

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 复现环境&#xff1a;Vulhub 环境启动后&#xff0c;访问 http://192.168.80.141:8080/ 将会看到drupal的安装页面&#xff0c;一路默认配置下一步安装。因为没有mysql环境&#xff0c;…

Linux ----------------------- 文本处理工具

&#xff08;一&#xff09;绪论 awk、grep、sed和cut 是Linux 操作文本的四大利器&#xff0c;合称文本四大金刚&#xff0c;也是必须掌握的Linux 命令之一。这四个工具的功能各有侧重&#xff1a; awk&#xff1a;功能最强大&#xff0c;用于处理和格式化文本&#xff0c;可…

万宾科技管网水位监测助力智慧城市的排水系统

以往如果要了解城市地下排水管网的水位变化&#xff0c;需要依靠人工巡检或者排查的方式&#xff0c;这不仅加大了人员的工作量&#xff0c;而且也为市政府带来了更多的工作难题。比如人员监管监测不到位或无法远程监控等情况&#xff0c;都会降低市政府对排水管网的管理能力&a…

如何实现多租户系统

shigen日更文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 不知道为什么&#xff0c;最近老是有一些失眠&#xff0c;凌晨睡&#xff0c;两点半还在醒着。脑子里想着自己生…

nodelist 与 HTMLCollection 的区别

原地址 https://cloud.tencent.com/developer/article/2013289 节点与元素 根据 W3C 的 HTML DOM 标准&#xff0c;HTML 文档中的所有内容都是节点&#xff1a; 整个文档是一个文档节点每个 HTML 元素是元素节点HTML 元素内的文本是文本节点每个 HTML 属性是属性节点注释是注…

【ChatOCR】OCR+LLM定制化关键信息抽取(附开源大语言模型汇总整理)

目录 背景技术方案存在的问题及解决思路关键信息提取结果其他解决方案替换文心一言LangChain大型多模态模型&#xff08;Large Multimodal Model, LMM&#xff09; 开源大模型汇总LLaMA —— Meta 大语言模型Stanford Alpaca —— 指令调优的 LLaMA 模型Lit-LLaMA —— 基于 na…

生成式人工智能:网络攻击者手中的破坏性力量

2022 年底&#xff0c;公开可用的生成式人工智能工具的推出使我们进入了人类历史上最大的技术革命之一。 一些人声称它的影响与互联网、手机、智能手机和社交媒体的引入一样大&#xff0c;甚至更大。这些新的生成式人工智能技术的采用和发展速度是我们以前从未见过的。 虽然这…

Spring Task(定时任务)框架

文章目录 一、Spring Task介绍二、cron表达式1.cron表达式介绍2.cron表达式在线生成器 三、fixedDelay四、fixedRate五、initialDelay六、Spring Task的使用1.导入maven坐标spring-context2.启动类添加注解EnableScheduling开启任务调度3.自定义定时任务类 一、Spring Task介绍…

45基于matlab的ARIMA:AutoregressiveIntegratedMovingAverage model。

基于matlab的ARIMA&#xff1a;AutoregressiveIntegratedMovingAverage model。自回归差分移动平均模型(p,d,q)&#xff0c;AR自回归模型&#xff0c;MA移动平均模型&#xff0c;时间序列模型步骤包括&#xff1a;1. 数据平稳性检验&#xff1b;2. 确定模型参数&#xff1b;3. …