oracle数据库第八章答案,Oracle培训(三十)——Oracle 11g 第八章知识点小结——处理数据...
Oracle培訓(三十)——Oracle 11g 第八章知識點總結——處理數據
Oracle 11g 第八章知識點總結——處理數據
知識點預覽
復習
處理數據
復習
--建表t_user
create table t_user(
id number(4),
name varchar2(10),
password varchar2(20),
gender char(1),
birthday date
);
--插入數據
insert into t_user values(1,'小文','123','1');
insert into t_user values(2,'小文2','123','1',to_date('1990-09-09','YYYY-MM-DD'));
insert into t_user(id,name,gender) values(3,'曉曉','0');
--復制一張表
create table t_emp2
as
select* from emp where deptno=100;
--更新數據
update t_user
setgender='1',password='123456'
where name='曉曉';
--刪除數據
delete [from] t_user
where(sysdate-created_time)/365>99
--事務
一個事務當中的操作要么同時成功,要么同時失敗
commit
rollback
--刪除表
Drop table
Purge table “BIN$JFszxZKrTvqrZdo2+rW+2g==$0”
處理數據
1.??????數據控制語言
a)????????DML 可以在下列條件下執行:
向表中插入數據
修改現存數據
刪除現存數據
b)???????事務是由完成若干項工作的DML語句組成的。
2.??????插入數據——INSERT 語句語法
a)????????使用 INSERT 語句向表中插入數據。
INSERT INTO????? table[(column[,column...])]
VALUES??????? (value[, value...]);
b)???????使用這種語法一次只能向表中插入一條數據。
3.??????插入數據
a)????????為每一列添加一個新值。
b)???????按列的默認順序列出各個列的值。
c)????????在 INSERT 子句中隨意列出列名和他們的值。
d)???????字符和日期型數據應包含在單引號中。
INSERT INTOdepartments(department_id, department_name,
manager_id, location_id)
VALUES (70, 'Public Relations', 100, 1700);
1 row created.
4.??????向表中插入空值
a)????????隱式方式: 在列名表中省略該列的值。
INSERT INTO departments (department_id,
department_name )
VALUES (30, 'Purchasing');
1 row created.
b)???????顯示方式: 在VALUES 子句中指定空值。
INSERT INTO departments
VALUES (100, 'Finance', NULL, NULL);
1 row created.
5.??????插入指定的值
SYSDATE 記錄當前系統的日期和時間。
INSERT INTOemployees (employee_id,
first_name, last_name,
email, phone_number,
hire_date, job_id, salary,
commission_pct, manager_id,
department_id)
VALUES (113,
'Louis', 'Popp',
'LPOPP', '515.124.4567',
SYSDATE, 'AC_ACCOUNT', 6900,
NULL, 205, 100);
1 row created.
加入新員工
INSERT INTOemployees
VALUES (114,
'Den', 'Raphealy',
'DRAPHEAL', '515.127.4561',
TO_DATE('FEB 3, 1999', 'MON DD,YYYY'),
'AC_ACCOUNT', 11000, NULL, 100,30);
6.??????創建腳本
a)????????在SQL 語句中使用& 變量指定列值。
b)???????& 變量放在VALUES子句中。
INSERT INTOdepartments
(department_id, department_name,location_id)
VALUES (&department_id,'&department_name',&location);
7.??????從其它表中拷貝數據
a)????????在 INSERT 語句中加入子查詢。
INSERT INTOsales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary,commission_pct
FROM employees
WHERE job_id LIKE '%REP%';
4 rows created.
b)???????不必書寫 VALUES 子句。
c)????????子查詢中的值列表應于 INSERT 子句中的列名對應。
8.??????更新數據——UPDATE 語句語法
a)????????使用 UPDATE 語句更新數據。
UPDATE????????????? table
SET??????? column= value [, column = value, ...]
[WHERE ??????????? condition];
b)???????可以一次更新多條數據。
9.??????更新數據
a)????????使用 WHERE 子句指定需要更新的數據
UPDATE employees
SET department_id= 70
WHEREemployee_id = 130;
1 rows updated.
b)???????如果省略WHERE子句,則表中的所有數據都將被更新
UPDATE copy_emp
SET department_id= 110;
22 rows updated.
10.??在UPDATE語句中使用子查詢
a)????????更新 114號員工的工作和工資使其與205號員工相同。
UPDATE employees
SET job_id = (SELECT job_id
FROM employees
WHERE employee_id = 205),
salary = (SELECT salary
FROM employees
WHERE employee_id = 205)
WHERE employee_id = 114;
1 row updated.
b)???????在 UPDATE 中使用子查詢,使更新基于另一個表中的數據。
UPDATE copy_emp
SET department_id = (SELECT department_id
FROM employees
WHERE employee_id =100)
WHERE job_id = (SELECT job_id
FROM employees
WHERE employee_id =200);
1 row updated.
11.??更新中的數據完整性錯誤。
UPDATE employees
SET department_id = 55
WHERE department_id = 110;
UPDATEemployees
*
ERROR at line1:
ORA-02291:integrity constraint (HR.EMP_DEPT_FK) violated - parent key not found
不存在55號部門
12.??刪除數據——DELETE 語句
使用 DELETE 語句從表中刪除數據。
DELETE [FROM] ? table
[WHERE ? condition];
13.??刪除數據
a)????????使用WHERE 子句指定刪除的記錄。
DELETE FROM departments
WHERE department_name = 'Finance';
1 row deleted.
b)???????如果省略WHERE子句,則表中的全部數據將被刪除。
DELETE FROM copy_emp;
22 rows deleted.
14.??在 DELETE 中使用子查詢
在 DELETE 中使用子查詢,使刪除基于另一個表中的數據。
DELETE FROMemployees
WHERE department_id =
(SELECT department_id
FROM departments
WHERE department_name LIKE '%Public%');
1 row deleted.
15.??刪除中的數據完整性錯誤
DELETE FROMdepartments
WHERE department_id = 60;
DELETE FROMdepartments
*
ERROR at line1:
ORA-02292:integrity constraint (HR.EMP_DEPT_FK) violated - child record found
You cannot delete a row that contains a primary key that isused as a foreign key in another table.
16.??在INSERT語句中使用子查詢
INSERT INTO
(SELECT employee_id, last_name,
email, hire_date, job_id, salary,
department_id
FROM employees
WHERE department_id = 50)
VALUES (99999,'Taylor', 'DTAYLOR',
TO_DATE('07-JUN-99', 'DD-MON-RR'),
'ST_CLERK', 5000, 50);
1 row created.
SELECTemployee_id, last_name, email, hire_date,
job_id, salary, department_id
FROM employees
WHERE department_id = 50;
17.??在DML語句中使用 WITHCHECK OPTION 關鍵字
a)????????使用子查詢表示 DML 語句中使用的表
b)???????WITH CHECK OPTION 關鍵字避免修改子查詢范圍外的數據
INSERT INTO (SELECT employee_id, last_name, email,
hire_date, job_id, salary
FROM employees
WHERE department_id = 50 WITH CHECK OPTION)
VALUES (99998, 'Smith', 'JSMITH',
TO_DATE('07-JUN-99', 'DD-MON-RR'),
'ST_CLERK', 5000);
INSERT INTO
*
ERROR at line1:
ORA-01402:view WITH CHECK OPTION where-clause violation
18.??顯式默認值
a)????????使用 DEFAULT 關鍵字表示默認值
b)???????可以使用顯示默認值控制默認值的使用
c)????????顯示默認值可以在 INSERT 和 UPDATE 語句中使用
19.??顯示使用默認值
a)????????在插入操作中使用默認值:
INSERT INTOdepartments
(department_id, department_name, manager_id)
VALUES (300,'Engineering', DEFAULT);
b)???????在更新操作中使用默認值:
UPDATEdepartments
SET manager_id =DEFAULT WHERE department_id = 10;
20.??合并語句
a)????????按照指定的條件執行插入或更新操作
b)???????如果滿足條件的行存在,執行更新操作;否則執行插入操作:
i.?????????????避免多次重復執行插入和刪除操作
ii.?????????????提高效率而且使用方便
iii.?????????????在數據倉庫應用中經常使用
21.??合并語句的語法
可以使用merge語句,根據指定的條件進行插入或更新操作
MERGE INTO table_nametable_alias
USING (table|view|sub_query) alias
ON (join condition)
WHEN MATCHED THEN
UPDATE SET
col1 = col_val1,
col2 = col2_val
WHEN NOT MATCHED THEN
INSERT (column_list)
VALUES (column_values);
22.??合并語句舉例
在對表COPY_EMP使用merge語句,根據指定的條件從表EMPLOYEES中插入或更新數據。
MERGE INTOcopy_emp c
USING employees e
ON (c.employee_id = e.employee_id)
WHEN MATCHEDTHEN
UPDATE SET
c.first_name = e.first_name,
c.last_name = e.last_name,
...
c.department_id = e.department_id
WHEN NOT MATCHEDTHEN
INSERT VALUES(e.employee_id, e.first_name,e.last_name,
e.email, e.phone_number, e.hire_date,e.job_id,
e.salary, e.commission_pct,e.manager_id,
e.department_id);
SELECT *
FROM COPY_EMP;
no rows selected
MERGE INTOcopy_emp c
USING employees e
ON (c.employee_id = e.employee_id)
WHEN MATCHEDTHEN
UPDATE SET
...
WHEN NOT MATCHEDTHEN
INSERT VALUES...;
SELECT *
FROM COPY_EMP;
20 rows selected.
23.??數據庫事務
a)????????數據庫事務由以下的部分組成:
i.?????????????一個或多個DML 語句
ii.?????????????一個 DDL 語句
iii.?????????????一個 DCL 語句
b)???????以第一個 DML 語句的執行作為開始
c)????????以下面的其中之一作為結束:
i.?????????????COMMIT 或 ROLLBACK 語句
ii.?????????????DDL 或 DCL 語句(自動提交)
iii.?????????????用戶會話正常結束
iv.?????????????系統異常終了
24.??COMMIT和ROLLBACK語句的優點
使用COMMIT 和 ROLLBACK語句,我們可以:
確保數據完整性。
數據改變被提交之前預覽。
將邏輯上相關的操作分組。
25.??控制事務
26.??回滾到保留點
a)????????使用 SAVEPOINT 語句在當前事務中創建保存點。
b)???????使用 ROLLBACK TO SAVEPOINT 語句回滾到創建的保存點。
UPDATE...
SAVEPOINT update_done;
Savepoint created.
INSERT...
ROLLBACK TO update_done;
Rollback complete.
27.??事務進程
a)????????自動提交在以下情況中執行:
i.?????????????DDL 語句。
ii.?????????????DCL 語句。
iii.?????????????不使用 COMMIT 或 ROLLBACK 語句提交或回滾,正常結束會話。
b)???????會話異常結束或系統異常會導致自動回滾。
28.??提交或回滾前的數據狀態
a)????????改變前的數據狀態是可以恢復的
b)???????執行 DML 操作的用戶可以通過SELECT 語句查詢之前的修正
c)????????其他用戶不能看到當前用戶所做的改變,直到當前用戶結束事務。
d)???????DML語句所涉及到的行被鎖定, 其他用戶不能操作。
29.??提交后的數據狀態
a)????????數據的改變已經被保存到數據庫中。
b)???????改變前的數據已經丟失。
c)????????所有用戶可以看到結果。
d)???????鎖被釋放, 其他用戶可以操作涉及到的數據。
e)????????所有保存點被釋放。
30.??提交數據
a)????????改變數據
DELETE FROMemployees
WHERE employee_id = 99999;
1 row deleted.
INSERT INTOdepartments
VALUES (290,'Corporate Tax', NULL, 1700);
1 row inserted.
b)???????提交改變
COMMIT;
Commit complete.
31.??數據回滾后的狀態
使用 ROLLBACK 語句可使數據變化失效:
數據改變被取消。
修改前的數據狀態可以被恢復。
鎖被釋放。
DELETE FROM copy_emp;
22 rows deleted.
ROLLBACK;
Rollback complete.
32.??語句級回滾
a)????????單獨 DML 語句執行失敗時,只有該語句被回滾。
b)???????Oracle 服務器自動創建一個隱式的保留點。
c)????????其他數據改變仍被保留。
d)???????用戶應執行 COMMIT 或 ROLLBACK 語句結束事務。
33.??讀一致性
a)????????讀一致性為數據提供一個一致的視圖。
b)???????一個用戶的對數據的改變不會影響其他用戶的改變。
c)????????對于相同的數據讀一致性保證:
i.?????????????查詢不等待修改。
ii.?????????????修改不等待查詢。
34.??鎖
a)????????Oracle 數據庫中,鎖是 :
i.?????????????并行事務中避免資源競爭。
ii.?????????????避免用戶動作。
iii.?????????????自動使用最低級別的限制。
iv.?????????????在事務結束結束前存在。
v.?????????????兩種類型: 顯示和隱式。
b)???????兩種模式:
i.?????????????獨占鎖:屏蔽其他用戶。
ii.?????????????共享鎖:允許其他用戶操作。
c)????????高級別的數據并發性:
i.?????????????DML:表共享,行獨占
ii.?????????????Queries:不需要加鎖
iii.?????????????DDL:保護對象定義
d)???????提交或回滾后鎖被釋放。
35.??總結
總結
以上是生活随笔為你收集整理的oracle数据库第八章答案,Oracle培训(三十)——Oracle 11g 第八章知识点小结——处理数据...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle instead of up
- 下一篇: java 连接janusgraph_基于