数据库相关常见面试题
表和视图的区别是什么?
问题分析
考察面试者对数据库中一些基本概念的理解,了解面试者个人的理解学习能力。
核心问题讲解
1、视图是已经编译好的sql语句,而表不是。
2、视图没有实际的物理记录,而表有。
3、表是内容,视图是窗口。
4、表占用物理空间而视图不占用物理空间,视图只是逻辑概念的存在;表可以及时对它进行修改,但视图只能用创建的语句来修改。
5、表是内模式,视图是外模式。
6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
8、视图的建立和删除只影响视图本身,不影响对应的基本表。
问题扩展
视图的优点有什么?
减少数据的冗余,方便对数据操作;
数据的安全和保密
结合项目中使用
控制用户对表中某些列的访问
数据库的增删改查去重命令是什么?
问题分析
查面试者对数据库的基本操作的熟练度,看面试者是否真的有工作经验。
核心问题讲解
增:
insert into (列名,列名,列名,...) values(值,值,值,....)
insert into 表名 values(值,值,值,值,....)
删:
delete from表名——删除全部数据
delete from表名where 条件 ——这里的条件是跟select的条件是一样的。
改:
update 表名 set 列名=值,列名=值..... where 条件
查:
简单查询
select * from 表名
select 列名,列名,...from 表名 ——投影
等值与不等值查询
select * from 表名 where 列名=值 --等值查询
不等值查询
select * from 表名 where 列名 <> 值
select * from 表名 where 列名 > 值 >=
select * from 表名 where 列名 < 值 <=
多条件查询 逻辑与(and),逻辑或(or)
select * from 表名 where 条件1 and 条件2 ...
select * from 表名 where 条件1 or 条件2 ...
如果在where筛选条件中,既出现and又出现or,则先运算and。除非使用小括号改变优先级。
范围查询
select * from Car where Price >=30 and Price<=50
select * from Car where Price between 30 and 50
select * from Car where Oil=7.4 or Oil=8.5 or Oil=9.4
select * from Car where Oil in(7.4,8.5,9.4)
模糊查询。 一般不用=,而是用like
%——任意多个任意字符
_——一个任意字符
select * from Car where Name like '宝马%'
宝马%——以宝马开头的
%宝马——以宝马结尾的
%宝马%——只要含有宝马这两个字就可以。
__宝马%——代表第三个字符以宝马开头的。
去重
select distinct 列名 from car ——如果列中有重复值,则只查1个出来。
问题扩展
物理删除和逻辑删除的区别:
逻辑删除: 自己设置一个逻辑字段,例如1表示有效,0表示删除即可,默认是1
逻辑删除:其实是UPDATE,增加一个逻辑状态的列(0|1)0表示删除
结合项目中使用
主要用到查询,从数据库中获取数据