




已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
基本的DML和DDL介紹,1.0,目標(biāo),通過這部分課程的學(xué)習(xí),您將了解以下內(nèi)容 : Select 語句的功能 執(zhí)行基本的Select語句 描述 DML 語句 在表中插入數(shù)據(jù)行 在表中修改數(shù)據(jù)行 從表中刪除數(shù)據(jù)行 合并表中的數(shù)據(jù)行 控制事務(wù)處理,SELECT語句的功能,Selection,Projection,Table 1,Table 2,Table 1,Table 1,Join,基礎(chǔ)SELECT 語句語法,SELECT *|DISTINCT column|expression alias,. FROM table;,SELECT * FROM departments;,選擇所有的列,選擇指定的列,SELECT department_id, location_id FROM departments;,如何寫SQL語句,SQL 語句不區(qū)分大小寫 關(guān)鍵字不能分行隔開 條件通常被分行放置 縮進被用來提高語句的可讀性,算術(shù)表達式,通過使用算術(shù)操作符來表達數(shù)值型和日期型數(shù)據(jù).,Operator + - * /,描述 加 Add 減 Subtract 乘 Multiply 除 Divide,使用算術(shù)操作符,SELECT last_name, salary, salary + 300 FROM employees;,算術(shù)操作符優(yōu)先級,乘除的優(yōu)先級高于加減. 相同優(yōu)先級從左到右依次處理. 括號被要求優(yōu)先執(zhí)行.,操作優(yōu)先級,SELECT last_name, salary, 12*salary+100 FROM employees;,使用圓括號,SELECT last_name, salary, 12*(salary+100) FROM employees;,定義空值,空值是一種不可用、不被指派、未知、不確定的值 空值不同于零或一個空格,SELECT last_name, job_id, salary, commission_pct FROM employees;,SELECT last_name, 12*salary*commission_pct FROM employees;,在算術(shù)操作中的空值,算術(shù)操作中如有空值,運算結(jié)果返回為空.,使用列的別名,SELECT last_name “Name“, salary*12 “Annual Salary“ FROM employees;,SELECT last_name AS name, commission_pct comm FROM employees;,使用連接符,SELECT last_name|job_id AS “Employees“ FROM employees;,使用字符串,SELECT last_name | is a |job_id AS “Employee Details“ FROM employees;,重復(fù)的行,查詢結(jié)果缺省顯示所有的行,包括重復(fù)的行.,SELECT department_id FROM employees;,排除重復(fù)的行,SELECT DISTINCT department_id FROM employees;,使用SQL語句限制顯示的行,“retrieve all employees in department 90”,EMPLOYEES,限制挑選出來的行,SELECT *|DISTINCT column|expression alias,. FROM table WHERE condition(s);,使用WHERE語句限制返回的行 WHERE語句應(yīng)該寫在FROM語句之后,使用 WHERE 條件,SELECT employee_id, last_name, job_id, department_id FROM employees WHERE department_id = 90 ;,字符串和日期值,都使用單引號 字符串值區(qū)分大小寫,日期值需注意格式,SELECT last_name, job_id, department_id FROM employees WHERE last_name = Whalen;,比較條件,操作符 = = ,含義 等于 大于 大于或等于 小于 小于或等于 不等于,SELECT last_name, salary FROM employees WHERE salary = 3000;,使用比較條件,其它的比較條件,操作符 BETWEEN .AND. IN(set) LIKE IS NULL,含義 兩個值之間 匹配值列表中值 匹配一個字符樣式 空值,使用 BETWEEN 條件,可以使用該條件顯示某范圍內(nèi)的值.,SELECT last_name, salary FROM employees WHERE salary BETWEEN 2500 AND 3500;,Lower limit,Upper limit,SELECT employee_id, last_name, salary, manager_id FROM employees WHERE manager_id IN (100, 101, 201);,使用 IN 條件,滿足成員列表中的條件.,使用 LIKE 條件,搜索條件能包括兩種模式匹配類型: % 表示許多字符 _ 表示一個字符,SELECT first_name FROM employees WHERE first_name LIKE S%;,可混合兩種模式匹配類型,使用 LIKE 條件,SELECT last_name FROM employees WHERE last_name LIKE _o%;,使用 NULL 條件,測驗空值使用 IS NULL 條件.,SELECT last_name, manager_id FROM employees WHERE manager_id IS NULL;,邏輯條件,Operator AND OR NOT,含義 兩部分條件都返回真值則結(jié)果返回真值 兩部分條件中有任意一部分返回真值則結(jié)果返回真值 如果條件返回假則結(jié)果返回真值,使用 AND 操作符,要求條件都為真,SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary =10000 AND job_id LIKE %MAN%;,使用 OR 操作符,SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary = 10000 OR job_id LIKE %MAN%;,滿足任意一個條件即可返回真值,SELECT last_name, job_id FROM employees WHERE job_id NOT IN (IT_PROG, ST_CLERK, SA_REP);,使用 NOT 操作符,優(yōu)先規(guī)則,使用括號可不遵照上述優(yōu)先規(guī)則.,優(yōu)先級別 操作符 1 算術(shù)操作符 2 連接操作符 3 比較操作符 4 IS NOT NULL, LIKE, NOT IN 5 NOT BETWEEN 6 NOT 邏輯條件 7 AND邏輯條件 8 OR 邏輯條件,SELECT last_name, job_id, salary FROM employees WHERE job_id = SA_REP OR job_id = AD_PRES AND salary 15000;,優(yōu)先規(guī)則,SELECT last_name, job_id, salary FROM employees WHERE (job_id = SA_REP OR job_id = AD_PRES) AND salary 15000;,優(yōu)先規(guī)則,使用括號,SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date ;,ORDER BY 條件,帶 ORDER BY 條件的排序 ASC: 升序,缺省 DESC: 降序 ORDER BY 條件在Select語句最后,降序排列,SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date DESC ;,使用列別名排序,SELECT employee_id, last_name, salary*12 annsal FROM employees ORDER BY annsal;,按ORDER BY 列表中的列名順序依次排序.,SELECT last_name, department_id, salary FROM employees ORDER BY department_id, salary DESC;,多列排序,數(shù)據(jù)操作語句,一條 DML 語句在下列情況下被執(zhí)行: 向表中增加新的數(shù)據(jù)行 修改表中存在的數(shù)據(jù) 從表中刪除數(shù)據(jù) 一個事務(wù)由DML語句集合形成的邏輯工作單元構(gòu)成.,向表中增加新的數(shù)據(jù)行,DEPARTMENTS,New row,INSERT 語句語法,.,INSERT INTO table (column , column.) VALUES (value , value.);,向表中插入新的數(shù)據(jù)行,插入的新行應(yīng)包括所有的列值. 插入的值應(yīng)按照表中列缺省的順序排列. 如插入所有的列, INSERT 條件中可隨意選擇是否列出所有列.,INSERT INTO departments(department_id, department_name, manager_id, location_id) VALUES (70, Public Relations, 100, 1700); 1 row created.,INSERT INTO departments VALUES (100, Finance, NULL, NULL); 1 row created.,INSERT INTO departments (department_id, department_name ) VALUES (30, Purchasing); 1 row created.,插入帶空值的數(shù)據(jù)行,隱性的方法: 省略為空的列名.,顯性的方法: 使用關(guān)鍵字NULL來指定為空的列.,INSERT INTO employees (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.,插入特殊的值,SYSDATE 函數(shù)記錄當(dāng)前的日期和時間.,INSERT INTO employees VALUES (114, Den, Raphealy, DRAPHEAL, 515.127.4561, TO_DATE(FEB 3, 1999, MON DD, YYYY), AC_ACCOUNT, 11000, NULL, 100, 30); 1 row created.,插入特殊的日期型值,增加一行數(shù)據(jù): 驗證:,帶子查詢的INSERT 語句 字段的數(shù)據(jù)類型必須匹配,INSERT INTO sales_reps(id, name, salary, commission_pct) SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE job_id LIKE %REP%; 4 rows created.,從另外一個表中復(fù)制行,修改表中數(shù)據(jù),EMPLOYEES,修改 EMPLOYEES 表中的某些行.,UPDATE 語句語法,可一次性修改多行,UPDATE table SET column = value , column = value, . WHERE condition;,UPDATE employees SET department_id = 70 WHERE employee_id = 113; 1 row updated.,在WHERE條件中指定需要修改的行. 修改表中所有的行.,修改表中數(shù)據(jù),UPDATE copy_emp SET department_id = 110; 22 rows updated.,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.,使用子查詢修改兩列的值,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.,基于另外表SELECT得到的值修改數(shù)據(jù),使用子查詢實現(xiàn):,UPDATE employees * ERROR at line 1: ORA-02291: integrity constraint (HR.EMP_DEPT_FK) violated - parent key not found,UPDATE employees SET department_id = 55 WHERE department_id = 110;,修改行時: 完整性約束錯誤,Department number 55 does not exist,從 DEPARTMENTS 表中刪除一行.,從表中刪除一行,DEPARTMENTS,DELETE 語句語法,DELETE FROM table WHERE condition;,通過WHERE條件指定刪除的行. 省略 WHERE 條件,所有的行都將被刪除.,從表中刪除多行,DELETE FROM departments WHERE department_name = Finance; 1 row deleted.,DELETE FROM copy_emp; 22 rows deleted.,DELETE FROM employees WHERE department_id = (SELECT department_id FROM departments WHERE department_name LIKE %Public%); 1 row deleted.,基于另外表SELECT得到的值刪除數(shù)據(jù),通過子查詢語句從另外表中得到值作為刪除條件.,刪除行時: 完整性約束錯誤,DELETE FROM departments WHERE department_id = 60;,DELETE FROM departments * ERROR at line 1: ORA-02292: integrity constraint (HR.EMP_DEPT_FK) violated - child record found,不能刪除被另外一個表作為外鍵的主鍵對應(yīng)的行.,在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.,在INSERT 語句中使用的子查詢,驗證結(jié)果,SELECT employee_id, last_name, email, hire_date, job_id, salary, department_id FROM employees WHERE department_id = 50;,在DML語句中使用 WITH CHECK OPTION 關(guān)鍵字,WITH CHECK OPTION 關(guān)鍵字禁止改變不在子查詢結(jié)果中的值.,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 line 1: ORA-01402: view WITH CHECK OPTION where-clause violation,使用顯性的缺省值,INSERT INTO departments (department_id, department_name, manager_id) VALUES (300, Engineering, DEFAULT);,UPDATE departments SET manager_id = DEFAULT WHERE department_id = 10;,INSERT中使用缺省值: UPDATE中使用缺省值:,數(shù)據(jù)庫事務(wù),一個數(shù)據(jù)庫完整事務(wù)包含以下情況: 構(gòu)成對數(shù)據(jù)的一次一致性改變的DML語句(一條或多條) 一條DDL 語句,數(shù)據(jù)庫事務(wù),當(dāng)?shù)谝粭l DML SQL 語句執(zhí)行時開始 當(dāng)下列任意事件發(fā)生時結(jié)束: 提交或回滾語句執(zhí)行 一條DDL 執(zhí)行(自動提交) 系統(tǒng)崩潰,COMMIT 和 ROLLBACK 語句的優(yōu)勢,保證數(shù)據(jù)一致性 在改變永久生效之前預(yù)覽改變 可以將一些操作按邏輯相關(guān)性分組,控制事務(wù),ROLLBACK to SAVEPOINT B,ROLLBACK to SAVEPOINT A,ROLLBACK,UPDATE. SAVEPOINT update_done; Savepoint created. INSERT. ROLLBACK TO update_done; Rollback complete.,回滾改變到一個標(biāo)記,在當(dāng)前的事務(wù)中可通過 SAVEPOINT 語句創(chuàng)建標(biāo)記. ROLLBACK TO SAVEPOINT 語句可回滾到標(biāo)記.,自動的 commit 發(fā)生在 : DDL 語句執(zhí)行,隱性的事務(wù)處理,COMMIT 或 ROLLBACK前數(shù)據(jù)狀態(tài),數(shù)據(jù)可恢復(fù)到原先狀態(tài) 當(dāng)前用戶通過SELECT 看到DML操作后數(shù)據(jù)的結(jié)果 其它用戶不能SELECT 看到當(dāng)前用戶DML操作后數(shù)據(jù)的結(jié)果. 受影響的行可能被鎖,其它用戶不能改變受影響的行.,COMMIT后數(shù)據(jù)狀態(tài),被改變的數(shù)據(jù)在數(shù)據(jù)庫中永久改變. 前面的數(shù)據(jù)狀態(tài)信息被永久丟失. 所有用戶將看到同樣的數(shù)據(jù)結(jié)果. 受影響的行鎖被釋放; 這些行能被其它用戶使用.,COMMIT; Commit compl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 服務(wù)專員保密協(xié)議書范本
- 高端車展場地租賃及展會期間清潔維護協(xié)議
- 緊急電力搶修專用低壓開關(guān)柜快速采購合同
- 城市綠化插花項目合作協(xié)議
- 門市部轉(zhuǎn)讓協(xié)議書范本
- 智能化廠房裝修與智能控制系統(tǒng)集成合同
- UHPC超高性能混凝土澆筑技術(shù)
- 智慧醫(yī)院建筑智能化建設(shè)方案
- 智慧生態(tài)茶園項目匯報
- 工廠環(huán)保培訓(xùn)
- 小學(xué)語文-“實用性閱讀與交流”學(xué)習(xí)任務(wù)群設(shè)計與實施例談
- 移動破碎施工方案
- 國開(山東)地域文化(本)形成性考核1-3答案
- 厚皮甜瓜設(shè)施栽培技術(shù)規(guī)程
- 駐足思考瞬間整理思路并有力表達完整版
- 成都市青羊區(qū)2023年數(shù)學(xué)四下期末教學(xué)質(zhì)量檢測試題含解析
- TSGR0003-2023年《簡單壓力容器安全技術(shù)監(jiān)察規(guī)程》
- 2023年山東濟南市婦幼保健院招考聘用勞務(wù)派遣人員筆試題庫含答案解析
- 2023年考研英語大綱樣題
- 廣州市預(yù)拌混凝土企業(yè)名單及分布圖
- 駕照體檢表通用
評論
0/150
提交評論