更新时间:2020-02-05 10:08:42 来源:极悦 浏览4115次
数据库篇
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数据库面试题大全带答案”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
相关推荐
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习