1 没有where条件的update语句不会被执行?会执行但不产生改变任何数据?2 说明删除表时 drop delete truncate的不同效果3 union 和 union all 的区别 考虑到效率推荐用哪个?4 sql输出这个字符串“abcd一个字符串”的长度 写出这个语句 结果是多少?5 检索时if exists() 和 IN 哪个效率高?为什么?6 Employee表 字段 salary birthday
查出大于平均工资的员工姓名
查出生日是同一天的员工姓名7 A表的a字段类型为int 默认值为10 将这个默认值改为12 写出sql语句
A表的b字段类型为int c字段类型为varchar2 写出sql语句 如果b大于20小于30 则将c的值改为“oracle”8 列举索引不起作用的几种情况
查出大于平均工资的员工姓名
查出生日是同一天的员工姓名7 A表的a字段类型为int 默认值为10 将这个默认值改为12 写出sql语句
A表的b字段类型为int c字段类型为varchar2 写出sql语句 如果b大于20小于30 则将c的值改为“oracle”8 列举索引不起作用的几种情况
2REDO
3union滤去重复的,union all效率高点
4 select length('abcd一个字符串') from dual 结果9
5大部分情况是exists效率高点,不是绝对的
2.首先drop语句是用来删除表用的,具体语法为:drop table,当然这种删除是删除的整个表,而且是不能恢复的。
Delete语句是用来删除记录的,语法为delete table,大家都明白记录和表有什么区别吧!用这种语句删除,表会依然存在
Truncate语句也是用来删除表中的所有数据的,语法为:truncate table,这条语句和容易和delete语句混淆,但是使用这条语句来删除数据的话,是不能恢复的,而使用delete语句删除表中的记录的话,我们还可以恢复表。
3.Union all
4. 9
5.认为是if exists()
第8题 我自己查。
2: drop 删除表, delete 和 truncate 是删除表纪录,但是truncate分区表上的全局索引会使索引失效,但truncate速度快一些.
3: union 会合并重复的纪录,union all 不会. union效率高。
4: select length('abcd一个字符串') from dual; 9
5: 如果外表和内表的记录数相差很大, IN 的效率会高些. 因为in 是把外表和那表作hash join,而exists是对外表作loop,每次loop再对那表进行查询。6: 1>:select *
from Employee
where Employee.salary > (select avg(Employee.salary) from Employee);
2>:select *
from Employee E1
where exists (select 1
from Employee E2
where E1.birthday = E2.birthday
and E1.Employee_id <> E2.Employee_id);
7: 1>: ALTER TABLE A MODIFY(A int default 12);2>: update A
set A.c = 'oracle'
where A.b > 20 and A.b < 30;
8: 相关表记录数不多;truncate分区表上的全局索引的情况;不正确的查询条件 etc ..
union all 和 union 哪个效率高? 现在答案是2比1
当SQL语句需要UNION两个查询结果集合时,这两个结果集合会以UNION-ALL的方式被合并, 然后在输出最终结果前进行排序. 如果用UNION ALL替代UNION, 这样排序就不是必要了. 效率就会因此得到提高.
会执行,整个表都成了一条记录