数据库常见面试题都给你准备好了
目录
(1)表的操作
(2)什么是数据库约束,常见的约束有哪几种?
(3)主键和外键的区别?
(4)什么是索引?优缺点?
(5)order by和group by的区别?
(6)sql的表连接方式有哪些?
(7)在数据库中查询语句速度很慢,如何优化?
(8)什么是游标?
(9)如何在删除主表记录时,一并删除从表相关联的记录?
(10)列举几种常用的聚合函数?
(11)oracle基本数据类型?
(12)oracle和mysql的区别?
(13)union和union all有什么不同?
(14)truncate和delete的区别?
(15)行转列、列转行怎么转?
(16)oracle怎么去重?怎么获取系统时间?
(17)序列的作用?
(18)什么是存储过程?存储过程的优缺点?
(19)存储过程与函数的区别?
(1)表的操作
表的创建:create table 表名 (列名1 类型 约束, 列名2 类型 约束...)
表的删除:drop table 表名
表的更改:alter table 表名 add|drop 列名|约束名
插入记录:insert into 表名... value...
更新记录:update 表名 set 列名=值 where 条件
删除记录:delete from 表名 where 条件
查询记录:select 列名... from 表名 where 条件
(2)什么是数据库约束,常见的约束有哪几种?
约束可以分为:主键约束primary key、
外键约束foreign key、
唯一约束unique、
检查约束check、
空值约束not null、
默认值约束default
(3)主键和外键的区别?
主键在本表中是唯一的,不可为空的,外键可以重复可以为空。
外键和另一张表的主键关联,不能创建对应表中不存在的外键。
(4)什么是索引?优缺点?
对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
优缺点:优点:利用索引可以加速对数据的检索,索引是可以唯一的,创建索引允许指定单个列或者多个列
缺点:减慢了数据录入速度,同时也增加了数据库的尺寸大小
(5)order by和group by的区别?
order by为排序查询、
ASC升序 DESC降序
group by为分组查询、
having只能用于group by子句、作用于组内、
having条件子句的查询语句需要使用聚合函数
(6)sql的表连接方式有哪些?
内连接、外连接、交叉连接
内连接:inner join in ,两表都满足的组合
外连接:分为左连接、右连接、全连接
左连接 A left(outer) join B
以A表为基础,A表的全部数据,B表有的组合,没有的为null
右连接 A right(outer) join B
以B表为基础,B表的全部数据,A表有的组合,没有的为null
全连接 A full(outer) join
两表相同的组合在一起,A表有,B表没有的数据(显示为null),同样B表有,A表没有的显示为null
交叉连接:cross join,即使笛卡尔乘积
(7)在数据库中查询语句速度很慢,如何优化?
① 建立索引
② 减少表之间的关联
③ 优化sql语句,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据量大的排在前面
④ 简化查询字段,没用的字段不要
⑤ 尽量用PreparedStatement来查询,不要用Statement
(8)什么是游标?
游标是一种能从包括多条数据记录的结果中每次提取一条记录进行处理的机制。
游标的使用步骤:① 定义游标 declare cursor 游标名称 for select 查询语句[for {readonly|update}]
② 打开游标 open cursor
③ 从游标中操作数据 fetch... current of cursor
④ 关闭游标 close cursor
(9)如何在删除主表记录时,一并删除从表相关联的记录?
如果两张表存在主外键关系,那么在删除主键表的记录时,如果从表有相关联的记录那么将导致删除失败
在定义外键约束时,可以同时指定3种删除策略:一是将从表记录一并删除(级联删除);
二是将从表记录外键字段设置为NULL;
(10)列举几种常用的聚合函数?
sum函数 avg函数 max函数 min函数 count函数
(11)oracle基本数据类型?
① 字符串类型 char 、nchar 、 varchar 、 vachar2
② 数字类型 number 、 integer
③ 浮点类型 float
④ 日期类型 date 、 timestamp
⑤ LOB类型 blob 、 clob 、 nclob 、 bfile
(12)oracle和mysql的区别?
① 库函数不同
② oracle是用表空间来管理的,mysql不是
③ 显示当前所有的表、用户、改变连接用户、显示当前连接用户、执行外部脚本的语句的不同
④ 分页查询时,mysql用limit ;oracle用rownum
(13)union和union all有什么不同?
union在进行表连接后筛选重复的记录,所以在表连接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果
union all 只是简单地将两个结果合并后返回
从效率上说,union all比union快很多,所以,如果可以确认合并的两个结果集中不包括重复的数据的话,那么就使用union all
(14)truncate和delete的区别?
相同处:二者均删除表中的全部行
不同处:① truncate table比delete速度快
② delete语句每次删除一行,并在事务日志中为所删除的每行记录一项;truncate通过释放存储数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
③ truncate table删除内容,释放空间但不删除定义
④ delete table删除内容,不删除定义但不释放空间
⑤ drop table删除内容和定义,释放空间
(15)行转列、列转行怎么转?
① 使用decode函数
② 使用case when语句
(16)oracle怎么去重?怎么获取系统时间?
去重:使用distinct关键字 select distinct name from A
获取系统时间:select to_char(sysdate, 'yyyy-MM-dd HH24:mi:ss') from dual;
(17)序列的作用?
oracle使用序列来生成唯一编号,用来处理一个表中自增字段。
一旦访问一个序列号,oracle将在处理下一个请求之前自动递增下一个编号,从而确保不会出现重复值。
(18)什么是存储过程?存储过程的优缺点?
存储过程一个预编译的sql语句,优点是允许模块化的设计
就是说只需创建一次,以后在该程序中就可以调用多次,如果某次操作需要执行多次sql,使用存储过程比单纯的sql语句执行要快。
存储过程的优缺点:
优点:① 存储过程是预编译过的,执行效率高
② 存储过程的代码存放于数据库中,通过存储过程名直接调用,减少网络通讯。
③ 安全性高,执行存储过程需要有一定权限的用户
④ 存储过程可以重复使用,可减少数据库开发人员的工作量
缺点:移植性差
(19)存储过程与函数的区别?
① 函数有返回值,存储过程没有返回值
② 因为存储过程没有返回值,所以不能将存储过程的执行结果赋值给变量;函数有返回值类型,调用函数时,可以将函数的执行结果赋值给变量。
也就是是说,函数可以在select语句中使用,而存储过程则不能。
下面是一些sql语句练习:
-- 查询所有学生的数学成绩
select s.name,g.score
from student s, grade g
where s.id=g.id and g.kemu='数学';
-- 统计每个学生的总成绩,显示字段:姓名、总成绩
select a.name sum(b.score) as sum_score
from student a, grade b
where a.id = b.id group by name;
-- 列出各门课程成绩最好的学生,要求显示字段:学号、姓名、科目、成绩
select a.id, a.name, g.kemu, max(g.score)
from student a, grade g
where a.id = g.id group by g.kemu
-- 列出数学成绩前三名的学生信息
select a.id, a.name, g.kemu, g.score
from student a, grade g
where g.score = '数学' order by score limit 3;
-- 统计英语课少于80分的人
select a.id, a.name, g.kemu, g.score
from student a, grade g where a.id g.id
and g.kemu = '英语' orader by g.score <80;
-- 查询每科成绩的前两名
select a.id , a.name, g.kemu, g.score
from student a, grade g
where a.id = g.id
order by g.kemu limit 2;
感谢每一个认真阅读我文章的人!!!
我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片加入群聊与我一起学习交流,群里也会有大佬帮忙解答问题。
数据库常见面试题都给你准备好了相关推荐
- 数据库常见面试题(带答案,开发者必看)
数据库常见面试题(开发者篇) 什么是存储过程?有哪些优缺点? 什么是存储过程?有哪些优缺点? 存储过程就像我们编程语言中的函数一样,封装了我们的代码(PLSQL.T-SQL). 存储过程的优点: 能够 ...
- 数据库常见面试题总结
参考如下: 数据库常见面试题(开发者篇) 数据库优化 SQL数据库面试题及答案 常见面试题整理--数据库篇 转载于:https://www.cnblogs.com/threetop/p/9425172 ...
- MySQL数据库常见面试题总结
1.数据库的常用范式: 第一范式(1NF):指表的列不可再分,数据库中表的每一列都是不可分割的基本数据项,同一列中不能有多个值: 第二范式(2NF):在 1NF 的基础上,还包含两部分的内容:一是表必 ...
- 数据库常见面试题——索引
如何设计一个关系型数据库 索引模块 为什么要使用索引 快速查询数据 什么样的信息能够成为索引 主键.唯一键以及普通键等 索引的数据结构 生成索引,建立二叉查找树进行二分查找树(平衡二叉树.红黑树) 生 ...
- 【Database】数据库常见面试题【转】
数据库基础(面试常见题) 一.数据库基础 1. 数据抽象:物理抽象.概念抽象.视图级抽象,内模式.模式.外模式 2. SQL语言包括数据定义.数据操纵(Data Manipulation),数据控制( ...
- 软件测试mysql常用语句_【松勤软件测试】数据库常见面试题总结
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 数据库在笔试题的时候会让你写,但是在面试的时候,面试官不会说出题目给你,让你口头回答这道题这么做,有时候他可能会问删除用什么命名或者啥的,虽然基础,但是真 ...
- 软件测试mysql基础面试题_【松勤软件测试】数据库常见面试题总结
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 数据库在笔试题的时候会让你写,但是在面试的时候,面试官不会说出题目给你,让你口头回答这道题这么做,有时候他可能会问删除用什么命名或者啥的,虽然基础,但是真 ...
- mysql数据库的笔试题_MySQL数据库常见面试题
SQL基础 1.MySQL的数据类型 2.MySQL的SQL语句分类 DDL(Data Definition Language)语句:数据定义语言,这些语句定义了不同的数据段.表.列.索引等数据库对象 ...
- 计算机考研复试数据库常见面试题
本文是我2021年考研时准备的复试面试题,现在拿出来给大家分享一下 觉得好的点个赞哦,毕竟当初我也是整理了好久,改了好几次版本呢 祝大家都上岸!!!! 1.三级模式结构是什么?二级映射有什么优点? 1 ...
最新文章
- 更新假设raw file(audio file format) How to convert endianness
- boost::coroutine模块实现非对称协程的测试程序
- PHP设置文本框背景透明度,如何给background-image设置透明度?
- springboot对象方式注入
- 在Centos 7中开放80端口
- 堆以及stl堆的使用
- 刚毕业就要求月薪10K?我觉得没毛病
- UNIX域套接字编程和socketpair 函数
- html转为纯文本并且保留换行,使用jsoup将html转换为纯文本时,如何保留换行符?...
- linux串口tx缓冲区大小,[Linux C]自己写的串口缓冲区
- 动态规划---01背包问题(2种方法)
- 给VS2008中c#代码自动添加版权信息
- SPSS 相关与回归小结(图文+数据集)【SPSS 026期】
- oracle财务系统优劣势,ERP系统财务系统功能的优缺点分析对比
- Java 解析epub格式电子书,helloWorld程序,附带源程序和相关jar包
- Tensorflow Saver
- Linux下安装docker与kubernetes(k8s)
- 微服务的设计模式,你用了几个
- 深度学习图像标签标注软件labelme超详细教程
- python爬虫--爬取-猫眼电影-代码