sql面试

1.在一个表中,只可以定义一个primary key约束,但可定义几个unique约束;
2.对此指定为primary
key的一个列或三个列的三结合,其中任何一个列都不可以冒出空值,而对于unique所约束的唯一键,
则允许为null,只是null值最多有一个。

内链接:也叫自然连接,多表作为联查,满意条件的数码才能突显;
外链接:分为左外连接,右外连接,全外连接,全外连接假诺有on条件,在肯定程度上同样内对接,假诺没有on条件表示笛卡尔积。

字符串函数: 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。

—-13.jdbc的施行步骤
1.class.forname加载数据库驱动;
2.创建connection连接;
3.通过connection对象创造Statement对象;
4.透过Statement对象执行sql语句达成增删查改操作;
5.即使是询问,再次回到一个结实集对象,循环迭代结果集。

 

 

分组函数:AVG (columname) 重回指定列的平均值
MAX (columname) 重回指定列的最大值
MIN (columname) 再次来到指定列的最小值
SUM (columname) 重返指定列的总值
COUNT
COUNT (*) 计算所有行个数,包罗重复行和空值得行
COUNT (columname) 计算指定列非空值的个行数
COUNT (DISTINCR columname) 总计指定列中 非重复,非空值得行个数

  1. 点名结果集中一定行的职位。
  2. 基于当前的结果集地方检索一行或一而再的几行。
  3. 在结果集的当前职分修改行中的数据。
  4. 对其余用户所做的多少变动定义差距的敏感性级别。
  5. 可以以编程的主意访问数据库。

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;

日狗时间函数: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),否则重返第二个值

一、主键约束:表中定义一个主键来唯一确定表中每一行数据的标识符;(非空,唯一)
二、唯一约束:有限支撑在一个字段或者一组字段里的数目与表中别的行的数码相比较是唯一的;
三、非空约束:强制列不收受 NULL 值;
四、null约束:只用于定义列约束,没有其余约束时默许是null约束;
五、默许值约束:用于向列中插入默许值,如若没有确定任何的值,那么会将默许值添加到所有的新记录;
六、check[枚举]封锁:用于限制列中的值的限制;
七、外键约束:用于避免破坏表之间总是的动作;
八、长度约束:

—-1.数据库的三范式?
一范式: 每个列都是不可分割的原子单元;
二范式: 必须满意第一范式;每个列都器重于主键。
三范式:必须满意第二范式;每个列无法传递看重于主键。

—-4.主键约束和唯一约束有哪些差别?

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

—-11.仓储进度的缺点 和 优点?
优点:
1.囤积进程只在创即刻展开编译,未来每一回执行存储进程都不需再重新编译,可提升数据库执行进程。
2.当对数据库举行复杂操作时,可将此复杂操功能存储进度封装起来与数据库提供的事务处理结合一起使用。
3.存储进程可以重复使用,可减弱数据库开发人士的工作量
4.安全性高,可设定唯有某些用户才有所对点名存储进程的使用权
5.
由此存储进程可以使有关的动作在一齐发出,从而可以保养数据库的完整性和安全性。

—-9.常用的oracle的函数有哪些?

 

—-7.你采用过什么mysql函数.

—-2.主键的宏图规范有啥?
一、唯一的标识一行;
二、作为一个可以被外键有效引用的靶子;
三、不要求更新主键;
四、主键不应该包罗动态变化的数量,如时间戳 等;
五、主键应当有统计机自动生成。

左外连接:以左表为尺度,查询知足条件的列,右表没有匹配到的数据以null代替;
右外连接:以右表为准绳,查询满意条件的列,左表没有匹配到的数额以null代替;
全外连接:倘诺有on条件,在肯定程度上亦然内对接,假设没有on条件表示笛Carl积

  1. 可以减低网络的通信量。
  2. 使展现集团规则的运算程序放入数据库服务器中,以便集中控制;

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

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

语句级触发器
在指定的操作语句操作此前或之后执行一次,不管那条语句影响了多少行。
行级触发器(FOR EACH ROW)
触发语句功用的每一条记下都被触发。在行级触发器中利用 old 和 new
伪记录变量,识别值的景观。

—-14.触发器是怎样? 触发器的体系有啥?
数据库触发器:是一个与表相关联的、存储的 PL/SQL
程序。每当一个一定的数据操作语句(Insert,update,delete)在指定的表上发出时,
Oracle 自动地执行触发器中定义的语句体系。

—-8.视图是怎么着? 视图的亮点有哪些?
视图:是根据一个表或多个表或视图的逻辑表,本身不包括数据,通过它可以对表里面的数额开展询问和改动
视图的优点:
1.对数据库表的拜会,因为视图可以有拔取性的拔取数据库里的一片段。
2.用户通过不难的询问可以从繁杂查询中收获结果, 从而隐藏数据复杂性 。
3.维护数据的独立性,视图可从八个表检索数据。
4.对于同样的多寡可发生分化的视图, 以不一样的角度来突显基表中的数据.
5.视图中可以利用连接(join),用多少个表中相关的列构成一个新的多少集。此视图就对用户隐藏了数码来源多少个表的谜底。
6.由此视图可以设定允许用户访问的列和数目行,从而为表提供了附加的安全控制。

字符函数:initcap首字母大写,
lower字母全体转换成小写,
upper字母全部转换成大写,
replace替换,
substr截取字符串,
concat连接字符串,
lpad 和 和 rpad 左填充字符和右填充字符,
length重回字符串的尺寸;

—–15.游标的听从?

—-19.oracle的索引.
目录是关周详据库中用来存放每一条记下的一种对象,首要目标是加快数据
的读取速度和完整性检查。

缺点:
1.调剂麻烦;
2.移植难题,数据库端代码当然是与数据库相关的;
3.再一次编译难点,因为后端代码是运作前编译的,若是含有引用关系的目的暴发改变时,
受影响的贮存进程、包将索要重新编译(然则也足以设置成运行时刻自动编译);
4.只要在一个主次系统中多量的使用存储进度,到程序提交使用的时候随着用户要求的增
加会导致数据结构的变化。

—-3.数量的约束有怎么着特征(主键约束,唯一约束, 非空约束, null约束,
默许值约束, check[枚举]自律, 外键约束, 长度约束)

—-10.存储函数和存储进度的区分?
1.仓储函数有且只有一个重返值,而存储进度也许有再次来到值。
2.囤积函数只能够有输入函数 而存储进程可以有多少个 in,out,inout 参数。
3.存储进程中的语句效能更强有力,存储进程可以完毕很复杂的事情逻辑,而函数有过多限量,如不可能在函数中利用
insert,update,delete,create 等说话;存储函数只完毕查询的
工作,可接受输入参数并赶回一个结出,也就是函数达成的法力针对性对比强。
4.囤积进度可以调用存储函数。但函数不可以调用存储进度。
5.仓储进程相似是用作一个独门的一些来实施(call
调用)。而函数能够当做查询语句的一个部分来调用。

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

—-12.jdbc中什么调用存储进程?
1.class.forname加载数据库驱动;
2.创建connection连接;
3.透过connection对象创制callableStatement对象;
4.安装传入的参数和登记传出参数;
5.履行sql语句,获取传出参数;
6.放出资源,关闭结果集,callableStatement对象、connection对象。

—-18.简单说下数据库的政工;
事务是保持数据的一致性,它由相关的 DDL 或者 DML
语句做为载体,那组语句执行的
结果如故一起成功,要么一起败北;
数据库事务的七个性状(ACID):原子性,一致性,隔离性,持久性。

相关文章