首页 课程 师资 教程 报名

Java数据库面试题大全带答案

  • 2020-02-05 10:08:42
  • 3887次 动力节点


Java数据库面试题大全带答案


  数据库篇


  1:数据库的分类


  关系型数据库ORDBMS:(oracle、MySQL、SqlServer等)


  特点:二维表存储,使用sql语言操作,有事务可以控制数据操作的完整性可以复杂的联查


  非关系型数据库nosql:(MongoDB、redis等)


  特点:键值对或json存储,弱事务或无事务操作数据效率更高可以用于充当缓存


  2:SQL语句分为哪几种?


  SQL语句主要可以划分为以下几类:


  DDL(DataDefinitionLanguage):数据定义语言,定义对数据库对象(库、表、列、索引)的操作。


  包括:CREATE、DROP、ALTER、RENAME、TRUNCATE等


  DML(DataManipulationLanguage):数据操作语言,定义对数据库记录的操作。


  包括:INSERT、DELETE、UPDATE、SELECT等


  DCL(DataControlLanguage):数据控制语言,定义对数据库、表、字段、用户的访问权限和安全级别。


  包括:GRANT、REVOKE等


  TransactionControl:事务控制


  包括:COMMIT、ROLLBACK、SAVEPOINT等


  3:排序


  关键字:orderby


  使用方法:select*from表名orderby字段排序方式


  Orderby都写在查询语句的最后,如果不加排序方式,默认升序,多个字段排序用逗号分隔


  4:分组


  关键字:groupby


  使用方法:select*from表名where条件groupby字段orderby字段排序方式


  注意:使用groupby查询时,查询字段只能是分组字段或聚合函数,当查询的条件为非聚合函数时,可以在groupby之前使用where条件判断,如果查询条件为聚合函数,必须在groupby之后使用having进行条件判断,having是在分组之后执行的查询条件,having后跟的查询条件必须是聚合函数或者分组字段。


  groupby多个字段分组,使用逗号分隔,只有分组字段完全相同时,才会正常分租,否则数据全部显示。


  5:伪列


  Rowid:唯一的物理地址用rowid作为条件查询可以提升查询效率。


  Rownum:查询结果的序号可以用于条件查询,不能用于修改和删除


  (1)id,Rowid,Rownum的区别?


  rowid物理位置的唯一标识。


  而id是逻辑上的唯一标识,所以rowid查找速度要快于id,是目前最快的


  定位一条记录的方式


  rowid和rownum都是"伪数列"


  所谓“伪数列”也就是默认隐藏的一个数列。


  rownum用于标记结果集中结果顺序的一个字段,


  它的特点是按顺序标记,而且是连续的,


  换句话说就是只有有rownum=1的记录,才可能有rownum=2的记录。


  rownum关键字只能和<或者<=直接关联


  如果是>或者=则需要给他0起个别名


  6:约束


  1.主键约束(PrimayKeyCoustraint)唯一性,非空性;


  altertable表名addconstraint主键名称primarykey(字段名)


  注意:主键字段不能重复(唯一的),不可以为空


  一般使用id作为一张表的主键,主键在创建时,会生成一个索引。


  2.唯一约束(UniqueCounstraint)唯一性,可以空,但只能有一个;


  Altertableaddconstraint约束名unique(字段名)


  3.默认约束(DefaultCounstraint)该数据的默认值;


  4.检查约束(CheckCounstraint)对该列数据的范围、格式的限制(如:年龄、性别等


  Altertable表名addconstraint约束名check(字段名条件)


  5.外键约束(ForeignKeyCounstraint)需要建立两表间的关系;


  Altertable表名addconstraint约束名foreignkey(主表字段名)references外键到的表名(字段名)


  6.非空约束(NotNullCounstraint):设置非空约束,该字段不能为空。


  altertable表名modify字段名[notnull非空|null允许为空]


  注意:该字段存储的数据不能为空,但是可以重复。


  7:序列(oracle)


  oracle中,是通过使用序列(sequence)来处理自动增长列。


  (1)可以为表中的列自动产生值。


  (2)由用户创建数据库对象,并可由多个用户共享。


  (3)一般用于主键或唯一列。


  (4)可以生成唯一标识


  创建序列基本语法:


  createsequence序列名称


  startwith开始数字


  incrementby增长数字


  minvalue最小值


  maxvalue最大值


  cycle


  nocache


  详细说明:


  startwith开始数字从几开始


  incrementby增长步长,每次增长几个数


  minvalue最小值


  maxvalue最大值可以不设置,不设置应写为nomaxvalue,也就是无穷大


  cycle循环,也就是说当长增长到最大值后,再从最小值开始重新增长


  nocache不设缓存


  序列的使用


  序列当前值:序列名.currval


  根据增量获取序列下一个值:序列名.nextval


  8:表联查


  根据两张或两张以上表之间的关联关系,进行多张表的同时展示。


  内连接(innerjoin):只会显示两张表中关联字段均不为空的数据


  左连接(leftjoin):会显示连接左侧表的所有数据(左侧表为主表)


  右连接(rightjoin):会显示连接右侧表的所有数据(右侧表为主表)


  全连接(fulljoin):会将两张表所有的数据全部显示


  9:Delete、truncate、drop都是删除语句,它们有什么区别?


  delete属于DML语句,删除数据,保留表结构,需要commit,可以回滚,如果数据量大,很慢。


  truncate属于DDL语句,删除所有数据,保留表结构,自动commit,不可以回滚,一次全部删除所有数据,速度相对较快。


  Drop属于DDL语句,删除数据和表结构,不需要commit,删除速度最快。


  10:Where和having都是条件筛选关键字,它们有什么分别?


  WHERE是在数据分组前进行条件过滤,HAVING子句是在数据分组后进行条件过滤,WHERE子句中不能使用聚合函数,HAVING子句可以使用聚合函数。


Java数据库面试题大全带答案


      以上就是动力节点Java培训机构小编介绍的“Java数据库面试题大全带答案”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


相关推荐


最新最全java面试题及答案(初级到高级)


史上最全的中高级JAVA工程师面试题及答案汇总


Java高级开发工程师面试题


2019史上最全java面试题题库大全800题


哪有资深java工程师面试题


选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交