悲惨的总结一下考试错题~
吃一堑,长一智。
- 带有(for update)字句的select语句可以在表的一行或多行放置排他锁
分析:数据库默认的为共享锁,即多个事务可以同时访问一条数据。排它锁就是指对于多个不同的事务,对同一个资源只能有一把锁,在需要执行的语句后面加上 for update就可以了。
- 有关索引描述正确的是(可以在多个列上创建复合索引)
分析:什么是复合索引?
索引可以包含一个、两个或更多个列。两个或更多个列上的索引被称作复合索引。
如果某表的某个字段有主键约束和唯一约束,则数据库会自动在相应的约束列上建立唯一索引。创建复合索引应当包含少数几个列,并且这些列经常在select查询里使用。
主键/主码、候选码的例子:假设在学生关系中,没有重名的学生,则“学号”或“姓名”都可作为学生关系的候选码,若选定“学号”作为数据操作的变量,则被选用的候选码称为主键/主码。
- 对于SQL语句:
select 输出的列 from 表名 where 条件 group by 分组 having 分组之后的条件过滤 order by 排序
,其执行的顺序应该是(from - where - group by - having - select - order by) - 有sql语句
select ename,to_char(HIREDATE-10, 'yyyy-mm-dd') from EMP;
,其中HIREDATE是一个date日期类型。
分析:该句正确的原因是参数是一个日期类型。
SYSDATE是Oracle日期常用函数,SYSDATE函数可以得到目前系统的时间。
-10是什么意思?答:天数减了10天。
to_date和to_char分别实现了字符串和时间互转,其代码如下:
select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual //字符串转换为日期,其参数必须为字符串!
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串,其参数必须为日期类型!
- nvl函数:
nvl(参数1, 参数2)
即:若参数1为null,则返回参数2,否则返回参数1。 - 在Oracle中,字符串拼接用
concat(str1, str2)
,Oracle特有的连接符是||
。SQL中 两个连续的单引号 就是一个引号。SQL中输出字符串用单引号括起来。 - Oracle中属于集合操作符的是(
union
并集运算:去重、minus
差集运算、intersect
交集运算) - 视图:一个或几个基表或视图中导出的虚表。
- 创建索引Create index i_deptno_job on emp(empno, job),错误的索引查询是
(select * from emp where empno=11 or job=‘SALESMEN’)
分析:注意:在创建索引时,如果在where子句中有or操作符或单独引用job列(索引后边的列)则将不会走索引,将会进行全表扫描。
- 对小数的操作:
ceil()
向上取整;round()
四舍五入;floor()
向下取整
分析:
ceil
是天花板的意思,因此要向上取整,floor
是地板的意思要向下取整。
round语法格式:ROUND(number,[,decimals])
其中number
,待处理的数值,decimals
,小数点后保留的位数;为负,则从小数点往前截取。与trunc函数不同的是,round函数需要四舍五入。
- 数据库Oracle中,通过(
Rowid
)访问能够以最快的方式访问表中的一行。
分析:oracle数据库的表中的每一行数据都有一个唯一的标识符,或者称为Rowid,在oracle内部通常就是使用它来访问数据的。
rowid是伪列,表示的每行记录在磁盘中存放的物理位置,主要是运用在索引查询中。
- SQL中,描述正确的是:
sysdate
函数返回Oracle服务器的日期和时间;substr
函数从字符串指定的位置返回指定长度的字符串。
分析:
round
截取数字格式如下:ROUND(number[,decimals])
。
其中number是要截取的数字,decimals是指定的位数,按这个来进行截取。若该值为0,则在小数点左侧进行四舍五入;若不为0,则四舍五入到指定的小数位。
add_months
日期函数add_months(date, n)
在给定的日期的月份上再加 n 个月,当 n 为负数时,月份减 n。
date: 给定的日期数据(注意:不能是字符串形的日期,只能是日期数据类型的)
n: 月份要增加的数
- 以下哪些事物的特性属于ACID:(原子性、一致性、隔离性、持久性)
lower()
是将字符串转换成小写;upper
是将字符串转换成大写。- 数据库中有哪些约束类型(主键约束,非空约束,唯一约束,自定义约束,外键约束)。
- oracle数据库中
字符串数据
是区分大小写的。
分析:注意是字符串数据,而不是字符串定义语句。
- drop属于DDL数据定义语言。
分析:
DDL是数据定义语言,主要是对表格结构或数据类型的操作,常用的create
,alter
,drop
。
DML是数据操纵语言,主要有insert
,update
,delete
。
- insert语句中不能使用where子句!!!
where这个语句是用在select语句中的,注意!
多表查询,为了查询结果更全更有意义可以直接做查询,不添加任何连接条件。
错。
分析:这里连接条件,只要做连接操作了where也算,where也算是连接的条件!
with check option
with check option
分析:
如果创建的视图中带有where等条件,则with check option子句可以保证让你只能在视图的where条件之内对视图进行DML操作。
创建视图的时候with check option选项可以检查一些数据检查,避免脏数据的录入。
对视图进行update或者insert操作时,保证更新或者插入的行满足图中定义的谓词条件
参考文献
反思错题的原因:未认真学习,审题不细心,看错题,没好好记重点,没将要事放第一。