根据提供的文件内容,我们可以归纳出以下几个重要的Oracle面试题目及其解答: ### 1. 创建表与数据插入 **题目描述:** 创建两个表`A`和`B`,并为它们填充一些示例数据。 **解答:** #### 表A - `incount`: 整型,主键,不允许为空。 - `content`: 字符串类型,最大长度为10个字符。 ```sql CREATE TABLE A ( incount INTEGER PRIMARY KEY NOT NULL, content VARCHAR2(10) ); INSERT INTO A SELECT 4, 'ABC' FROM DUAL UNION ALL SELECT 2, 'CDF' FROM DUAL UNION ALL SELECT 3, 'DDA' FROM DUAL; ``` #### 表B - `phone`: 整型,主键,不允许为空。 - `ismember`: 整型,表示成员身份。 - `content`: 字符串类型,最大长度为10个字符。 ```sql CREATE TABLE B ( phone INTEGER PRIMARY KEY NOT NULL, ismember INTEGER, content VARCHAR2(10) ); INSERT INTO B SELECT 138, 1, 'ABC' FROM DUAL UNION ALL SELECT 133, 1, 'ABC' FROM DUAL UNION ALL SELECT 131, 1, 'CDF' FROM DUAL UNION ALL SELECT 132, 0, 'DDA' FROM DUAL UNION ALL SELECT 139, 1, 'DDA' FROM DUAL UNION ALL SELECT 130, 0, 'DDA' FROM DUAL UNION ALL SELECT 135, 0, 'CDF' FROM DUAL UNION ALL SELECT 136, 0, 'ABC' FROM DUAL UNION ALL SELECT 137, 1, 'ABC' FROM DUAL; ``` **知识点解析:** - 使用`CREATE TABLE`语句定义表结构。 - `PRIMARY KEY`约束用于指定主键。 - `NOT NULL`约束确保列不接受空值。 - `UNION ALL`用于合并多条`SELECT`语句的结果集,并包含所有记录(包括重复记录)。 ### 2. 数据聚合查询 **题目描述:** 查询表`A`中的所有列,同时从表`B`中获取`content`对应的`ismember`的总和,并按`content`分组排序。 **解答:** ```sql SELECT A.*, T.Ա AS count_member, T.ǻԱ AS count_non_member FROM A, (SELECT content, SUM(DECODE(ismember, 1, 1)) AS Ա, SUM(DECODE(ismember, 0, 1)) AS ǻԱ FROM B GROUP BY content) T WHERE A.CONTENT = T.CONTENT ORDER BY A.CONTENT; ``` **知识点解析:** - `SUM`函数用于计算数值的总和。 - `DECODE`函数用于条件判断,当`ismember`为1时返回1,否则返回0。 - `GROUP BY`子句用于按特定列对结果集进行分组。 - `ORDER BY`子句用于按指定列对结果集进行排序。 ### 3. 删除表 **题目描述:** 删除表`A`和`B`。 **解答:** ```sql DROP TABLE A PURGE; DROP TABLE B PURGE; ``` **知识点解析:** - `DROP TABLE`语句用于删除表。 - `PURGE`关键字用于立即从数据库中移除表及其依赖项,释放存储空间。 ### 4. 分段汇总查询 **题目描述:** 创建表`bill`并插入一些示例数据,然后实现分段汇总功能。 **解答:** #### 创建表`bill` - `mark`: 字符类型。 - `billno`: 整型。 - `amount`: 整型。 ```sql CREATE TABLE bill ( mark CHAR(1), billno INTEGER, amount INTEGER ); INSERT INTO bill SELECT 'A', 1, 50 FROM DUAL UNION ALL SELECT 'A', 2, 100 FROM DUAL UNION ALL SELECT 'A', 3, 150 FROM DUAL UNION ALL SELECT 'A', 4, 200 FROM DUAL UNION ALL SELECT 'A', 8, 300 FROM DUAL UNION ALL SELECT 'A', 9, 150 FROM DUAL UNION ALL SELECT 'A', 12, 200 FROM DUAL UNION ALL SELECT 'B', 13, 300 FROM DUAL; ``` #### 实现分段汇总 ```sql SELECT mark, MIN(billno) AS "start", MAX(billno) AS "end", SUM(amount) FROM bill GROUP BY billno - ROWNUM, mark; ``` **知识点解析:** - `ROWNUM`函数返回当前行在查询结果集中的位置。 - `GROUP BY`与`ROWNUM`结合使用可以实现分段汇总的功能。 - 通过将`billno`减去`ROWNUM`来创建新的分组标准,从而实现连续编号的汇总。 以上就是根据提供的内容整理出来的Oracle面试题目及解答。这些题目涵盖了表的创建、数据插入、数据聚合查询以及高级查询技巧等多个方面,对于准备Oracle相关面试的求职者来说非常有用。
如下:
表A
incount content
4 ABC
2 CDF
3 DDA
表B
phone ismember content
138 1 ABC
133 1 ABC
131 1 CDF
132 0 DDA
139 1 DDA
130 0 DDA
135 0 CDF
136 0 ABC
137 1 ABC
表C
incount content 会员数 非会员数
4 ABC 3 1
2 CDF 1 1
3 DDA 1 2
注:B表中的字段当ismember=1 时代表会员
ismember=0时代表非会员*/
create table A(incount integer primary key not null, content varchar2(10));
insert into A
select 4, 'ABC' from dual union all
- 粉丝: 1
- 资源: 19
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助