sql面试

—-1.数据库的三范式?
相同范式: 每个列都是不可分割的原子单元;
二范式: 必须满足第一范式;每个列都依赖让主键。
其三范式:必须满足第二范式;每个列不可知传递依赖让主键。

 

—-2.主键的统筹标准有哪?
平等、唯一的标识一行;
第二、作为一个可给外键有效引用的靶子;
老三、不待创新主键;
季、主键不应当包含动态变化的数,如时间戳 等;
五、主键应当有计算机自动生成。

 

—-3.数据的羁绊有什么样特色(主键约束,唯一约束, 非空约束, null约束,
默认值约束, check[枚举]律, 外键约束, 长度约束)

平等、主键约束:表中定义一个主键来唯一确定表中列一行数的标识符;(非空,唯一)
老二、唯一约束:保证在一个字段或者同一组字段里的数据以及表中其它行之数据比是唯一的;
其三、非空约束:强制列非收受 NULL 值;
季、null约束:只用于定义列约束,没有其他约束时默认是null约束;
五、默认值约束:用于为列着插入默认值,如果没有规定外的值,那么会用默认值添加到有的新记录;
六、check[枚举]封锁:用于限制列被的值的限定;
七、外键约束:用于防止破坏表之间连续的动作;
八、长度约:

—-4.主键约束和唯一约束有怎样区别?

1.于一个表中,只能定义一个primary key约束,但可定义多只unique约束;
2.于指定为primary
key的一个排或多单列的咬合,其中任何一个排列都无克冒出空值,而对此unique所约束之唯一键,
虽然允许吗null,只是null值最多生一个。

 

—-5.内连接和外接连的分

外链接:也给自然连接,多表作为联查,满足条件的数码才能够展现;
外链接:分为左外连接,右外连接,全外连接,全外连接而产生on条件,在必程度及一样于外连,如果没有on条件表示笛卡尔积。

—-6.左外接连,右外连接和全外连接的区别

左外连接:以左表为基准,查询满足条件的排,右表没有匹配到的数目为null代替;
右外连接:以右表为极,查询满足条件的排,左表没有匹配到之多少以null代替;
全外连接:如果发on条件,在自然水准达到同于内对接,如果无on条件表示笛卡尔积

—-7.你使用了怎么mysql函数.

字符串函数: concat连接,lpad左填充,rpad右填充
,ltrim删除左边空格,rtrim删除右边空格,replace替换,length返回字符长度
substring截取;
数字函数:ceil向达取整,floor向下取整,abs绝对值,mod取余,rand产生0~1的随意数,round四放弃五合,可装保留位数,
truncate可安装保留小数,但无会见四放弃五抱
日期函数:now返回年月日时常转,curdate返回年月日,curtime返回时转,week返回时日子是当前年底第几宏观,
year返回当前日期的岁,date_format可设置时间格式,date_add可拿日期为前方推进或朝后推
流程函数:if(n,t,f)n为true时执行t,否则执行f
,ifnull(n,t,f)n为空时执行t,否则执行f。

—-8.视图是呀? 视图的长有安?
视图:是因一个申明要多个说明要视图的逻辑表,本身不包含数据,通过她好对表里面的数开展询问及改
视图的长:
1.针对性数码库表的走访,因为视图可以来选择性的挑数据库里之均等片段。
2.用户通过简单的询问好由繁杂查询中落结果, 从而隐藏数据复杂性 。
3.保障数据的独立性,视图可于多单说明检索数据。
4.于同一之数据只是生不同的视图, 以不同之角度来展示基表中的数据.
5.视图中得下连接(join),用几近个表中相关的列构成一个初的数集。此视图就对用户隐藏了多少来自多单说明底真相。
6.经过视图可以设定允许用户访问的排列和数据实施,从而为表提供了额外的安全控制。

—-9.常用底oracle的函数有什么样?

字符函数:initcap首字母大写,
lower字母全部换成小写,
upper字母全部变成为那个写,
replace替换,
substr截取字符串,
concat连接字符串,
lpad 和 和 rpad 左填充字符和右侧填充字符,
length返回字符串的长;

日期时函数:add_months 增加还是减去月份,
months_between计算指定的有限个日子里月数之异,
last_day 返回日期的终极一上,
round 和 和 trunc按照指定的精度进行四放弃五契合,
next_day 给出日期 date 和星期几测算下一个星期的日期,
数字函数:abs绝对值,
round四放弃五称,
trunc指定截尾取整的数字与截取精度之数字
mod取余
ceil向达取整
floor向下取整
Power(x,y) 返回 x 的 的 y
Mod (x ,y )返回 x 除 除 y 的余数
转移函数:to_char转换成为字符类型
to_date转换成时项目
to_number转换成数字型
夹函数:nvl(string1, replace_with)如果 string1 为 null,则 nvl
函数返回 replace_with
的价值,否则回 string1 的值
nvl2(e1, e2, e3) 如果 e1 呢 null,则函数返回 e3,否则回 e2。
nullif(exp1,expr2)如果 exp1 和 exp2 对等则回空(null),否则回第一只价

分组函数:AVG (columname) 返回指定列的平均值
MAX (columname) 返回指定列的极度大值
MIN (columname) 返回指定列的不过小值
SUM (columname) 返回指定列的总值
COUNT
COUNT (*) 统计有执行个数,包括再复行和空值得行
COUNT (columname) 统计指定列非空值的个行数
COUNT (DISTINCR columname) 统计指定列被 非重复,非空值得行个数

—-10.存储函数和储存过程的分?
1.囤函数有还只来一个回值,而存储过程可能来返回值。
2.囤积函数只能有输入函数 而存储过程得起差不多单 in,out,inout 参数。
3.存储过程被的语功能再强有力,存储过程得实现深复杂的工作逻辑,而函数有许多范围,如不克在函数中使
insert,update,delete,create 等说话;存储函数只完成查询的
工作,可承受输入参数并返一个结出,也便是函数实现的效果对比较强。
4.存储过程得调用存储函数。但函数不能够调用存储过程。
5.囤积过程相似是作一个独立的片段来实施(call
调用)。而函数可以看作查询语句的一个有些来调用。

—-11.囤积过程的缺点 和 优点?
优点:
1.存储过程只是在创立时进行编译,以后每次执行存储过程还无欲重新另行编译,可提高数据库执行进度。
2.当对准数据库进行复杂操作时,可拿此复杂操作用存储过程封装起来与数据库提供的事务处理结合并以。
3.仓储过程可重复使用,可减数据库开发人员的工作量
4.安全性高,可设定只有少数用户才具有对点名存储过程的使用权
5.
透过囤过程可使有关的动作在共同发生,从而可以保障数据库的完整性和安全性。

  1. 好降网络的通信量。
  2. 如若体现企业规则的运算程序放入数据库服务器遭受,以便集中控制;

缺点:
1.调剂麻烦;
2.移植问题,数据库端代码当然是跟数据库相关的;
3.更编译问题,因为后端代码是运行前编译的,如果含有引用关系的对象有变动时,
叫影响的积存过程、包将待再编译(不过呢得设置成运行时刻自动编译);
4.而在一个程序系统受大量之动存储过程,到程序提交使用的时候就用户需求的增加
加会导致数据结构的转变。

—-12.jdbc中如何调用存储过程?
1.class.forname加载数据库让;
2.创建connection连接;
3.由此connection对象创建callableStatement对象;
4.装置传入的参数和报传出参数;
5.执sql语句,获取传出参数;
6.保释资源,关闭结果集,callableStatement对象、connection对象。

—-13.jdbc的推行步骤
1.class.forname加载数据库让;
2.创建connection连接;
3.经connection对象创建Statement对象;
4.透过Statement对象执行sql语句完成增删查改操作;
5.如果是查询,返回一个结果集对象,循环迭代结果集。

—-14.触发器是呀? 触发器的品类有哪?
数据库触发器:是一个及申相关联的、存储的 PL/SQL
程序。每当一个一定的数据操作语句(Insert,update,delete)在指定的表上发出时,
Oracle 自动地履行触发器中定义的晓词序列。

语句级触发器
以指定的操作语句子操作前要之后执行同样不行,不管这漫长告句影响了不怎么行。
行级触发器(FOR EACH ROW)
触发语句子作用的各个一样长达记下还给硌。在行级触发器中动用 old 和 new
伪记录变量,识别值的状态。

—–15.游标的图?

  1. 指定结果集中一定行的职位。
  2. 依据当前之结果集位置检索一行要连续的几乎执行。
  3. 以结果集的此时此刻位置修改行吃之多少。
  4. 针对其他用户所开的多寡变动定义不同之敏感性级别。
  5. 可因编程的法访数据库。

—-16.mysql的端口? oracle的端口?
mysql的端口:3306;
oracle的端口:1521;

—-17.mysql的分页? oracle的分页?

limit分页:Select * from table_name limit
n,m;//n为发端行数,m为要截取的行数;
rownum分页:select a.* ,rownum rn from (select * from table_name
rownum<=n) a where rn>m;

—-18.简单说生数据库的作业;
作业是保持数据的一致性,它由相关的 DDL 或者 DML
语句做啊载体,这组语句执行的
结果或者一起成功,要么一起失败;
数据库事务的季个性状(ACID):原子性,一致性,隔离性,持久性。

—-19.oracle的索引.
目是关系数据库中用来存放每一样长长的记下的一律栽对象,主要目的是加快数据
的读取速度和完整性检查。

相关文章