Oracle中的SQL语句的题目,求解答啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle中的SQL语句的题目,求解答啊相关的知识,希望对你有一定的参考价值。

1、在loademp.sql的文本文件中编写一条插入语句,以便将多个行加载到My_Employee表中。将名字的第一个字母和姓氏的前七个字符连接起来,从而作为用户标识。

参考技术A 截取字符串的语句:
取名字的第一个字母:substr(名字, 0,1)
取姓氏的前七个字符:substr(姓氏, 0,7)

语句:
insert into My_Employee
(用户标识,列2,列3,...)
values
(substr(名字, 0,1)+substr(姓氏, 0,7),列2的值,列3的值,...)

oracle语句的级联问题,这个语句e.mgr=m.empno(+) 谁可以给我讲讲这个是啥意思还带有(+)详细解答哦!

还有oracle数据库中的scott用户 emp、dept、还有两张表。表名称的中文名字是什么?

(+)是外连接,表示当前条件等号左侧的表为主表,如果等号条件成立,查询中如果有等号右侧表中的字段,按照关联条件查询出数据,如果右侧没有条件符合,那么查询中补空。
举个例子,假设emp和dept表数据如下:
emp: emp_id, emp_name, dept_id
001 张三 10
002 李四 10
003 王五 20
004 赵六 30
dept: dept_id dept_name
10 部门1
20 部门2

查询语句:select emp_id, emp_name, dept_name
from emp, dept
where emp.dept_id = dept.dept_id(+);
从上面两表能看出来,emp表中的最后一行数据,dept_id为30,在dept表没有对应的数据,使用直连(即不带加号)只能查询到前三行数据,可是使用外连,以emp为主表,那么emp表的数据就都可以查到。结果如下:
emp_id emp_name dept_name
001 张三 部门1
002 李四 部门1
003 王五 部门2
004 赵六 NULL(空,没有数据)
参考技术A 一楼完全误导啊。。(+)真是外连接的意思,你这么写就相当于是左外连接,也就是e.mgr这个表的内容将全部被查询
第二个问题这写表是数据库的实例表,没有中文名,emp代表employer也就是雇员表,而dept代表的department也就是部门表
参考技术B 这个(+)代表内连接的意思,举个例子 MGR字段对应的EMPNO字段如果没有数的话也显示结果。
例子:不使用(+)结果是:
mgr empno
cleck 7759
jobs 8792
cleck 8100
这样对显示2个字段都有值才显示。
如果加(+)
mgr empno
cleck 7759
jobs 8792
cleck 8100
linkes
-----linkes 对应的没有值但是也显示,+在那边那边就有无值.
参考技术C (+)是oracle的语法,相当于SQL99标准当中的LETF JOIN,RIGHT JOIN ,如果(+)出现在左连表示RIGHT JOIN ,出现在右连表示LEFT JOIN 。这种写法只限于oracle数据,如果迁移到其它数据库无法运行.
scott用户中有什么表建议用scott用户登录到数据库后执行以下语句:
SELECT object_name FROM user_objects WHERE object_type='TABLE'
参考技术D 左连接。 employee department

以上是关于Oracle中的SQL语句的题目,求解答啊的主要内容,如果未能解决你的问题,请参考以下文章

如何写sql语句去掉oracle返回结果中的空值(NULL)

为啥mssql的OPENQUERY取oracle某表时只返回了一行数据,而在pl/sql中可以查到表中有两行数据,求解答?

Oracle查询语句区分大小写吗?

Oracle SQL中的Merge用法

高手进!如何把Sql里面的datediff()方法,在Oracle里面如何替换使用啊?

oracle:求百分比,保留小数点后两位,不会出现.01的情况,也不会出现#######的情况,写一条sql语句