当前位置: 首页 > news >正文

数据库面试常见问题

数据库

Delete Truncate Drop 区别

答:这三个操作都是针对数据库的表进行操作,都有删除表的功能,其中的区别在于:

Delete:只将表中的数据进行删除,不删除定义不释放空间,是dml语句,需要提交事务,如果不想删除可以回滚。delete每次删除一行,并在事务日志中为所删除的每行记录一项。数据两大的情况下,执行速度相较于其他两个而言较慢。

Truncate:仅仅删除表中数据,不删除定义但释放表空间,是DDL语句,操作立刻生效,无法通过binlog回滚,会清空所有数据且速度较快。

Drop:表中的数据和表的结构都会被删除,且释放空间,是DDL语句,操作立刻生效,无法回滚,操作速度相较于其他两个最快。

数据库语句操作分类:DML,DDL,DCL,DQL,TCL

DML(数据操作语言):对表中的数据进行操作,语句包括增删改查:insert,delete,update,select

DDL(数据定义语言):对表进行操作,语句包括:create,truncate,drop,alter

DCL(数据控制语言):用来管理数据库用户、控制数据库的访问权限:grant……to……,revoke……from……

DQL(数据查询语言):执行顺序:先从表中获取数据(from),然后根据条件进行筛选(where),再根据分组字段进行分组(group by……having),查出数据(select),然后根据查到的数据进行排序(order by),最后进行分页操作(limit)

SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数

常用函数

decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)

nvl:nvl(string1, replace_with)

mod(m,n): m/n的余数

round(n,p): 四舍五入

length 长度

lower 小写

upper 大写

to_date 转化日期

to_char 转化字符

to_number 转变为数字
ltrim/rtrim/trim 去左/右/中 空格

substr(c,p,n) 截取字符串,从p位开始截,包含p位,截取n位

KETTLE内存溢出解决方案

答:找到kettle的安装路径,找到spoon.bat,点击进行编辑,找到对应的字段进行调整:-Xmx1024m 加大,最好是265m的整数倍,修改默认缓存条数(默认为1万),双击Transformation空白地方,会弹出一个界面,修改Nr of rows in rowset值。

kettle中黄色的锁,绿色的对勾,红色的停止代表的意思

黄色的锁:表示不论上一步是否执行成功,将会继续向下执行,下一步可以正常执行

绿色的对勾:表示只有当上一步的任务执行成功并且没有任何错误的时候才会执行下一步

红色停止:表示当上一个作业项的执行结果为假或者没有成功执行时,执行下一个作业项

双斜线:并行启动下一个条目,右键菜单launch next entries in parallel可以设置

Oracle的五种约束

  1. 非空(not null) 约束:不能为空;
  2. 主键(PRIMARY KEY)约束:唯一的标识表中的每一行;
  3. 唯一(UNIQUE)约束:每列字段的值不能相同;
  4. 外键(FOREIGN KEY)约束:用来维护从表与主表之间的引用完整性;
  5. 条件(CHECK)约束:表中每行都要满足该约束条件

Oracle和MySQL的区别

1、Oracle是大型数据库,而MySQL是中小型数据库。

2、Oracle的内存占有量非常大,而mysql非常小

3、MySQL支持主键自增长,指定主键为auto increment,插入时会自动增长。Oracle主键一般使用序列。

4、group by用法:MySQL中group by在select语句中可以随意使用,但是在Oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的或者是group by子句中的列,否则报错。

5、引号方面:MySQL中用双引号包起字符串,Oracle中只可以用单引号包起字符串。

创建索引的优缺点

优点:
索引是数据库优化
表的主键会默认自动创建索引
大量降低数据库的IO磁盘读写成本,极大提高了检索速度
索引事先对数据进行了排序,降低查询是数据排序的成本,降低CPU的消耗
缺点:
索引本身也是一张表,该表保存

http://www.xdnf.cn/news/1341793.html

相关文章:

  • gsplat在windows本地部署
  • Dockerfile
  • Claude Code 已支持【团队版】和【企业版】订阅
  • Webpack的使用
  • 15. 多线程(进阶2) --- CAS 和 多线程常用的类
  • Mokker AI:一键更换照片背景的AI神器
  • 粗粮厂的基于flink的汽车实时数仓解决方案
  • selenium一些进阶方法如何使用
  • K8s快速上手-微服务篇
  • 机器学习中的聚类与集成算法:从基础到应用
  • 前端视频流处理从 0 到 “能跑”:可复制 Demo+WebGL/Worker 优化,覆盖会议 / 直播 / 监控场景
  • 【尝试】在macOS上安装cvat
  • 【51单片机】【protues仿真】基于51单片机水位监测系统
  • 鸿蒙开发中的List组件详解
  • 机器学习-集成算法
  • Django的生命周期
  • 项目1总结其三(图片上传功能)
  • leetcode-python-242有效的字母异位词
  • 阿里巴巴推出Qoder:面向真实软件开发的智能编程平台
  • 计算机视觉(opencv)实战六——图像形态学(腐蚀、膨胀、开运算、闭运算、梯度、顶帽、黑帽)
  • 计算机视觉第一课opencv(三)保姆级教学
  • 大语言模型原理(Transformer架构)
  • c# 和 c++ 怎样结合
  • Chrome 插件开发实战:从入门到进阶
  • Docker:安装配置
  • 【框架篇二】FastAPI路由与请求处理
  • Linux 网络命令大全
  • uniapp 自定义组件封装、easycom匹配规则
  • 2025-08-21 Python进阶4——错误和异常
  • 用 Python 写的自动化测试 WPF 程序的一个案例