根据提供的文件信息,我们可以整理出一系列与Java及数据库操作相关的知识点。尽管标题提到的是“Java经典语句”,但实际内容更多地涉及了SQL语言在Oracle数据库中的应用。下面将对这些知识点进行详细的解释和总结:
### 1. 删除特定部门的数据
**知识点:** DELETE 语句用于删除表中的数据。
```sql
DELETE FROM departments WHERE department_name = 'Finance';
```
这条语句的作用是删除`departments`表中所有`department_name`为`Finance`的记录。
### 2. 使用 BETWEEN 进行范围查询
**知识点:** BETWEEN 用于指定一个值的范围,该值可以是数值或日期等类型。
```sql
SELECT ename, sal, deptno FROM emp WHERE sal BETWEEN 2500 AND 3000;
```
这条语句选取了`emp`表中薪资在2500到3000之间的所有记录。
**替代写法:**
```sql
SELECT ename, sal, deptno FROM emp WHERE sal >= 2500 AND sal <= 3000;
```
使用`>=`和`<=`同样可以达到相同的效果。
### 3. 使用 IN 进行多值匹配
**知识点:** IN 用于匹配多个可能的值之一。
```sql
SELECT empno, ename, sal, deptno FROM emp WHERE deptno IN (10, 20);
```
这条语句选取了`emp`表中`deptno`为10或20的所有记录。
### 4. 使用 LIKE 进行模式匹配
**知识点:** LIKE 用于基于模式进行字符串匹配。
- `%` 代表任意数量的字符(包括零个字符)。
- `_` 代表单个字符。
```sql
SELECT ename FROM emp WHERE ename LIKE 'S%';
```
这条语句选取了所有名字以"S"开头的员工。
```sql
SELECT ename FROM emp WHERE ename LIKE 'S__T_';
```
这条语句选取了所有名字以"S"开头,并且第三个和第四个字符之后跟"T"的员工。
### 5. 使用 IS NULL 来匹配空值
**知识点:** IS NULL 用于检查某个字段是否为空值。
```sql
SELECT ename FROM emp WHERE ename IS NULL;
```
这条语句选取了所有名字为空的员工记录。
### 6. GROUP BY 和 HAVING 的使用
**知识点:** GROUP BY 用于按一个或多个列对结果集进行分组;HAVING 用于对分组后的结果进行过滤。
```sql
SELECT COUNT(*), deptno FROM emp GROUP BY deptno HAVING COUNT(*) > 5;
```
这条语句选取了每个部门中员工数超过5人的部门编号及其对应的员工总数。
### 7. COMMIT、ROLLBACK 和 SAVEPOINT
**知识点:** 在数据库事务处理中,COMMIT 用于提交更改,ROLLBACK 用于撤销更改,而 SAVEPOINT 用于设置回滚点。
```sql
-- 提交当前事务
COMMIT;
-- 撤销到上一个保存点
ROLLBACK TO SAVEPOINT C;
-- 设置保存点
SAVEPOINT C;
```
### 8. INTERSECT、MINUS 和 UNION
**知识点:** INTERSECT 返回两个查询结果集的交集;MINUS 返回第一个查询结果集中不在第二个查询结果集中的记录;UNION 返回两个查询结果集的并集。
```sql
SELECT * FROM table1 INTERSECT SELECT * FROM table2;
```
返回两个表共有的记录。
```sql
SELECT * FROM table1 MINUS SELECT * FROM table2;
```
返回`table1`中有而`table2`中没有的记录。
```sql
SELECT * FROM table1 UNION SELECT * FROM table2;
```
返回两个表的所有不重复记录。
### 9. 分区表
**知识点:** 分区是数据库表的一种组织方式,用于提高大型表的性能。
```sql
CREATE TABLE sales2 (
product_id VARCHAR2(5),
sales_date DATE NOT NULL,
sales_cost NUMBER(10)
) PARTITION BY RANGE(sales_date) (
PARTITION p1 VALUES LESS THAN (DATE '2003-01-01'),
PARTITION p2 VALUES LESS THAN (DATE '2004-01-01'),
PARTITION p3 VALUES LESS THAN (MAXVALUE)
);
```
这条语句创建了一个按照销售日期进行范围分区的表。
### 10. 视图的创建和使用
**知识点:** 视图是一种虚拟表,其内容由存储在一个查询中的数据组成。
```sql
CREATE VIEW emp_view1 AS SELECT * FROM emp WHERE deptno = 20;
```
这条语句创建了一个名为`emp_view1`的视图,该视图包含`emp`表中所有`deptno`为20的记录。
### 11. 视图的操作
**知识点:** 可以通过INSERT、UPDATE和DELETE来修改视图,但在某些情况下需要使用WITH CHECK OPTION来限制修改。
```sql
-- 插入数据到视图
INSERT INTO emp_view1 (ename) VALUES ('John Doe');
-- 更新视图中的数据
UPDATE emp_view1 SET ename = 'Jane Doe' WHERE ename = 'John Doe';
-- 从视图中删除数据
DELETE FROM emp_view1 WHERE ename = 'Jane Doe';
```
以上操作均需要确保符合视图创建时的条件。
### 12. REF CURSOR
**知识点:** REF CURSOR 是一种特殊的游标,它可以被作为参数传递给存储过程或函数。
```sql
DECLARE
TYPE toys_curtype IS REF CURSOR RETURN toys%ROWTYPE;
BEGIN
OPEN toys_cur FOR SELECT * FROM toys;
END;
```
这段代码展示了如何定义和使用REF CURSOR。
通过上述知识点的总结,我们不仅可以了解到Java之外的一些数据库操作知识,也能更好地理解如何利用SQL来管理数据库中的数据。