欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      黑馬程序員c語言教程:子查詢簡介

      時間:2019-05-12 21:03:45下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《黑馬程序員c語言教程:子查詢簡介》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《黑馬程序員c語言教程:子查詢簡介》。

      第一篇:黑馬程序員c語言教程:子查詢簡介

      --為什么要用子查詢

      先求scott的工資

      select sal from emp

      where ename='SCOTT'

      select *

      from emp

      where sal > 3000

      //===>

      select *

      from emp

      where sal >(select sal from emp

      where ename='SCOTT')

      /

      子查詢的場景

      對于一個問題,1步不能求解,需要多步

      where ename='SCOTT')子查詢的本質(zhì) select語言的嵌套

      子查詢知識架構(gòu)

      合理的書寫風格

      子查詢的()不要丟掉

      子查詢和主查詢可以不是同一張表,只要子查詢返回的結(jié)果,主查詢能用就行...4 可以在主查詢的什么地方放一個子查詢

      select a, b, c,(select *......)//ok //在select后面的子查詢 必須是單行子查詢

      from tab1, tab2,(select **)//ok

      where...(select *...)//ok

      order by...//err

      group by...//err

      havning...(select ****)//

      子查詢的分類

      按照子查詢返回的條目數(shù),分為: 單行子查詢和多行子查詢

      --單行子查詢只能用單行比較操作符(= <>)

      --多行子查詢只能用多行比較操作符(in any all)

      按照子查詢和主查詢的執(zhí)行順序來分

      一般子子查詢 子查詢把結(jié)果返回給主查詢....一般

      相關(guān)子查詢 主查詢把select列中的參數(shù)傳遞給 子查詢

      子查詢返回空值的問題

      子查詢中一般不使用order by,但是Top-N問題,子查詢必須要用order by

      eg: 求工資的前三名 分頁....M<=x<=N

      子查詢結(jié)果集一般不排序 ,Top-N問題除外

      解釋3-eg 查詢部門名稱是SALES 的員工信息

      分析思路: 因為SALES在部門表中,,查找部門表,才能獲取部門編號,.....===>員工信息

      //子查詢

      select *

      from emp

      where deptno =(select deptno

      from dept

      where dname='SALES')

      //多表查詢

      select e.*

      from emp e, dept d

      where e.deptno = d.deptno and d.dname = 'SALES'

      SQL優(yōu)化

      select *

      select a, b, c, from....//效率高

      // 多表查詢 效率高

      解釋4-1

      select empno, ename, sysdate, 'ddddd',(select dname from dept where deptno=10)十號部門名稱

      from emp

      select empno, ename, sysdate, 'ddddd',(select dname from dept)十號部門名稱

      from emp

      第 1 行出現(xiàn)錯誤:

      ORA-01427: 單行子查詢返回多個行

      解釋4-2

      ---from是一個集合,tab表 本身就是I個集合 select a, b, c,from(select *......)//ok //在select后面的子查詢 必須是單行子查詢

      查詢員工名字 編號

      select *

      from

      ___________________

      select *

      from

      (select empno, ename from emp)

      解釋5-1

      --單行子查詢只能用單行比較操作符(= <>)ppt

      select *

      from emp

      where sal >(select sal from emp

      where ename='SCOTT')

      解釋5-2 多行子查詢 多行比較操作符

      in

      --查詢部門名稱為 SALES 和 ACCOUNTING 的員工信息

      --查詢部門名稱為 不是 SALES 和 ACCOUNTING 的員工信息

      select *

      from emp

      where deptno in(select deptno from dept where dname='SALES' or dname='ACCOUNTING')

      select *

      from emp

      where deptno not in(select deptno from dept where dname='SALES' or dname='ACCOUNTING')

      all any

      --查詢薪水 比30號部門 所有員工薪高的員工信息 all

      select *

      from emp

      where sal >(select max(sal)from emp where deptno = 30)

      select *

      from emp

      where sal > all(select sal from emp where deptno = 30)

      --大于這個集合的最大值 就可以

      --查詢薪水 比30號部門 任意一個員工薪高的員工信息

      select *

      from emp

      where sal >(select min(sal)from emp where deptno = 30)

      select *

      from emp

      where sal > any(select sal from emp where deptno = 30)

      --大于這個集合的最小值 就可以

      --any/all的運算 和 前面的邏輯比較運算 相互關(guān)聯(lián)

      解釋6 有關(guān)子查詢中的空值 not in(10, 20, null)--查詢不是經(jīng)理的員工信息

      --思路 先按照: 查詢是經(jīng)理的員工信息

      分析1 是經(jīng)理的員工信息 1

      select *

      from emp

      where empno in(select mgr from emp)

      EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

      ----------------------------------------------------------------------------------

      7566 JONES MANAGER 7839 02-4月-81 2975 20

      7698 BLAKE MANAGER 7839 01-5月-81 2850 30

      7782 CLARK MANAGER 7839 09-6月-81 2450 10

      7788 SCOTT ANALYST 7566 19-4月-87 3000 20

      7839 KING PRESIDENT 17-11月-81 5000 10

      7902 FORD ANALYST 7566 03-12月-81 3000 20 2

      select *

      from emp

      where empno not in(select mgr from emp)

      select *

      from emp

      where empno not in(select mgr from emp where mgr is not null)

      //------------面試強化

      第二篇:黑馬程序員c語言教程:多表查詢

      笛卡爾積

      部門表

      笛卡爾積產(chǎn)生結(jié)果: 行數(shù) 兩個表相乘

      列數(shù): 行數(shù)相加 原因

      條件等值連接

      select ****

      from tab1, tab2

      where tab1.a = tab2.a

      select count(e.ename)

      from emp e, dept d

      3* where e.deptno = d.deptno

      SQL> /

      COUNT(E.ENAME)

      --------------

      多表查詢關(guān)鍵點:

      等值連接 eg:查詢員工信息,員工號,姓名,月薪,部門名稱

      select e.empno, e.ename, e.sal, d.dname

      from emp e, dept d

      3* where e.deptno = d.deptno

      SQL> /

      EMPNO ENAME SAL DNAME

      --------------------------------------------

      7369 SMITH 800 RESEARCH

      7499 ALLEN 1600 SALES

      7521 WARD 1250 SALES

      7566 JONES 2975 RESEARCH

      7654 MARTIN 1250 SALES

      7698 BLAKE 2850 SALES

      7782 CLARK 2450 ACCOUNTING

      7788 SCOTT 3000 RESEARCH

      7839 KING 5000 ACCOUNTING

      7844 TURNER 1500 SALES

      7876 ADAMS 1100 RESEARCH

      7900 JAMES 950 SALES

      7902 FORD 3000 RESEARCH

      7934 MILLER 1300 ACCOUNTING

      已選擇14行。

      不等值連接: eg:查詢員工信息,員工號,姓名,月薪, 薪水級別

      select e.empno, e.ename, e.sal, s.grade from emp e, salgrade s where e.sal >= s.losal and e.sal <=s.hisal

      select e.empno, e.ename, e.sal, s.grade from emp e, salgrade s where e.sal between s.losal and s.hisal

      外連接 eg:按部門統(tǒng)計員工人數(shù): 部門號 部門名稱 各部門人數(shù)

      分析1: 10 20 30 ====> 分組

      分析2: 因為各部門人數(shù) 是在員工表中..多表查詢

      步驟1

      select d.deptno, d.dname, count(e.empno)

      from dept d, emp e

      where d.deptno = e.deptno

      group by d.deptno, d.dname

      DEPTNO DNAME COUNT(E.EMPNO)

      -------------------------------------

      ACCOUNTING 3

      RESEARCH 5

      SALES 6

      步驟2 外連接....分析:為什么40號部門沒有統(tǒng)計出來

      原因: 因員工表里面 沒有40號部門的員工(現(xiàn)象)

      where d.deptno = e.deptno(sql)問題的本質(zhì)

      40 =====>期望: 在連接條件不成立的條件下,也要把部門編號40 給顯示出來....外連接...select d.deptno, d.dname, count(e.empno)

      from dept d, emp e

      where d.deptno = e.deptno(+)

      group by d.deptno, d.dname

      左外連接:(+)寫在=號的右邊

      自連接:--查詢員工信息 ,老板信息

      顯示: ****的老板是**** 自連接: 把一張表看成兩張表,自連接

      --員工表的老板 是 老板表的員工

      select e.ename, b.ename

      from emp e, emp b

      where e.mgr = b.empno

      select e.ename|| '的老板是' || b.ename

      from emp e, emp b

      where e.mgr = b.empno

      ====> 需求 把員工表的每一條記錄都顯示出來

      select e.ename|| '的老板是' || b.ename

      from emp e, emp b

      where e.mgr = b.empno(+)

      select e.ename|| '的老板是' || nvl(b.ename, '他自己')

      from emp e, emp b

      where e.mgr = b.empno(+)

      SMITH的老板是FORD

      MPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO----------------------------------------------------------------------------7369 SMITH CLERK 7902 17-12月-80 800 20 7499 ALLEN SALESMAN 7698 20-2月-81 1600 300 30 7521 WARD SALESMAN 7698 22-2月-81 1250 500 30 7566 JONES MANAGER 7839 02-4月-81 2975 20 7654 MARTIN SALESMAN 7698 28-9月-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-5月-81 2850 30 7782 CLARK MANAGER 7839 09-6月-81 2450 10 7788 SCOTT ANALYST 7566 19-4月-87 3000 20 7839 KING PRESIDENT 17-11月-81 5000 10 7844 TURNER SALESMAN 7698 08-9月-81 1500 0 30 7876 ADAMS CLERK 7788 23-5月-87 1100 20 7900 JAMES CLERK 7698 03-12月-81 950 30 7902 FORD ANALYST 7566 03-12月-81 3000 20 7934 MILLER CLERK 7782 23-1月-82 1300 10

      14行。

      第三篇:黑馬程序員c語言教程:Oracle簡介

      9.通過子查詢建表 通過子查詢建表的例子

      SQL>CREATE TABLE emp_41 AS SELECT id, last_name, userid, start_date FROM s_emp WHERE dept_id = 41;SQL> CREATE TABLE A as select * from B where 1=2;只要表的結(jié)構(gòu).10.用子查詢建表的注意事項

      可以關(guān)連多個表及用集合函數(shù)生成新表,注意選擇出來的字段必須有合法的字段名稱,且不能重復。

      用子查詢方式建立的表,只有非空NOT NULL的約束條件能繼承過來, 其它的約束條件和默認值都沒有繼承過來.根據(jù)需要,可以用alter table add constraint ……再建立其它的約束條件,如primary key等.11.Foreign Key的可選參數(shù)ON DELETE CASCADE 在創(chuàng)建Foreign Key時可以加可選參數(shù): ON DELETE CASCADE它的含義是如果刪除外鍵主表里的內(nèi)容,子表里相關(guān)的內(nèi)容將一起被刪除.如果沒有ON DELETE CASCADE參數(shù),子表里有內(nèi)容,父表里的主關(guān)鍵字記錄不能被刪除掉.12.如果數(shù)據(jù)庫表里有不滿足的記錄存在,建立約束條件將不會成功.13.給表創(chuàng)建和刪除同義詞的例子 SQL> CREATE SYNONYM d_sum 2 FOR dept_sum_vu;SQL> CREATE PUBLIC SYNONYM s_dept 2 FOR alice.s_dept;SQL> DROP SYNONYM s_dept;

      十、ORACLE里的數(shù)據(jù)字典

      1.什么是數(shù)據(jù)字典?ORACLE的數(shù)據(jù)字典是數(shù)據(jù)庫的重要組成部分之一,它隨著數(shù)據(jù)庫 的產(chǎn)生而產(chǎn)生, 隨著數(shù)據(jù)庫的變化而變化, 體現(xiàn)為sys用戶下所有的一些表和視圖.2.數(shù)據(jù)字典里存了以下內(nèi)容: 用戶信息

      用戶的權(quán)限信息

      所有數(shù)據(jù)對象信息表的約束條件統(tǒng)計分析數(shù)據(jù)庫的視圖等 不能手工修改數(shù)據(jù)字典里的信息.16

      J2EE @ zxw 3.常用的數(shù)據(jù)字典

      Dictionary 存放所有數(shù)據(jù)表,視圖,同義詞名稱和解釋 Dict_columns 數(shù)據(jù)字典里字段名稱的和解釋 Dba_users 用戶 Dba_tablespaces 表空間

      Dba_data_files 數(shù)據(jù)庫的文件 Dba_free_space 空閑表空間 Dba_rollback_segs 回滾段

      User_objects 數(shù)據(jù)對象 User_constraints 約束條件 User_sequences 序列號 User_views 視圖 User_indexes 索引 User_synonyms 同義詞

      Session_roles 用戶的角色 User_role_privs 用戶的角色權(quán)限 User_sys_privs 用戶的系統(tǒng)權(quán)限 User_tab_privs 用戶的表級權(quán)限 V$session 實時用戶情況 V$sysstat 實時系統(tǒng)統(tǒng)計 V$sesstat 實時用戶統(tǒng)計 V$sgastat 實時SGA使用 V$locked_object 實時鎖 V$controlfile 控制文件 V$logfile 日志文件 V$parameter 參數(shù)文件 4.數(shù)據(jù)字典的分類 數(shù)據(jù)字典四大類別

      User_ 用戶下所有數(shù)據(jù)庫對象

      All_ 用戶權(quán)限范圍內(nèi)所有的數(shù)據(jù)庫對象 Dba_ 所有的數(shù)據(jù)庫對象

      V$Content$nbsp;統(tǒng)計分析數(shù)據(jù)庫的視圖 賦于oem_monitor權(quán)限非DBA用戶也可查詢V$*視圖

      5.查詢數(shù)據(jù)字典

      SQL> select * from dictionary where instr(comments,'index')>0;SQL> select constraint_name, constraint_type, 2 search_condition, r_constraint_name 3 from user_constraints 4 where table_name = ‘&table_name';十一.控制數(shù)據(jù)、INSERT(往數(shù)據(jù)表里插入記錄的語句)SQL> insert into 表名(字段名1, 字段名2, ……)values(值1, 值2, ……);SQL> insert into 表名(字段名1, 字段名2, ……)select(字段名1, 字段名2, ……)from 另外的表名 where 條件;可以用&標記變量的方法多次輸入記錄

      快速插入數(shù)據(jù)的方法, 一般用于大于128M的數(shù)據(jù)轉(zhuǎn)移 SQL> insert /*+ append */ into 表名

      select * from 另外的用戶名.另外的表名 WHERE 條件;SQL> commit;注意事項:

      用INSERT /*+ APPEND */ 的方法會對target_tablename產(chǎn)生級別為6的獨占鎖,如果運行此命令時還有對target_tablename的DML操作會排隊在它后面, 對OLTP系統(tǒng)在用的表操作是不合適的。17

      J2EE @ zxw 2.插入字符串類型的字段的注意事項: 字符串類型的字段值必須用單引號括起來, 例如: ’GOOD DAY’

      如果字段值里包含單引號’ 需要進行字符串轉(zhuǎn)換, 我們把它替換成兩個 單引號’ ’

      字符串類型的字段值超過定義的長度會出錯, 最好在插入前進行長度校驗 ‘’ 標記是NULL, user 標明當前用戶

      日期字段的字段值可以用當前數(shù)據(jù)庫的系統(tǒng)時間SYSDATE, 精確到秒

      用字符串轉(zhuǎn)換成日期型函數(shù)TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)TO_DATE()還有很多種日期格式, 可以參看ORACLE DOC.年-月-日 小時:分鐘:秒 的格式Y(jié)YYY-MM-DD HH24:MI:SS NSERT時最大可操作的字符串長度小于等于4000個單字節(jié), 如果要插入更長的字符串, 請考慮字段用CLOB類型, 方法借用ORACLE里自帶的DBMS_LOB程序包.3、UPDATE(修改數(shù)據(jù)表里記錄的語句)SQL> UPDATE 表名 SET 字段名1=值1, 字段名2=值2, …… WHERE 條件;如果修改的值N沒有賦值或定義時, 將把原來的記錄內(nèi)容清為NULL, 最好在修改前進行非空校驗;值N超過定義的長度會出錯, 最好在插入前進行長度校驗.新功能,可以修改子查詢后的結(jié)果集

      例子:SQL> update(select * from s_dept)set id=50 where id=60;

      4、DELETE(刪除數(shù)據(jù)表里記錄的語句)SQL> DELETE FROM 表名 WHERE 條件;注意:刪除記錄并不能釋放ORACLE里被占用的數(shù)據(jù)塊表空間.它只把那些 被刪除的數(shù)據(jù)塊標成unused.如果確實要刪除一個大表里的全部記錄, 可以用 TRUNCATE 命令, 它可以釋放占用的數(shù)據(jù)塊表空間

      SQL> TRUNCATE TABLE 表名;此操作不可回退.5、SQL語句的分類 數(shù)據(jù)定義語言(DDL):create、alter、drop(創(chuàng)建、修改結(jié)構(gòu)、刪除)(其他:rename)數(shù)據(jù)操縱語言(DML):insert、delete、select、update(增、刪、查、改)(其他:truncate)

      數(shù)據(jù)控制語言(DCL):grant、revoke(授權(quán)、回收)、set role 事務控制:commit、rollback、savepoint(其他:lock table、set constraint、set transaction)

      審計控制:audit、noaudit 系統(tǒng)控制:alter system 會話控制:alter session 其他語句:comment(添加注釋)、explain plan、analyze、validate、call

      6、ORACLE里事務控制 Commit 提交事務 Rollback 回退事務

      Savepoint 設置斷點, 在事務中標記位置, 事務結(jié)束, 斷點釋放

      事務結(jié)束的情況遇到commit或者rollback遇到DDL和DCL語句發(fā)現(xiàn)錯誤,如死鎖用戶退出

      SQL*PLUS系統(tǒng)重啟或崩潰 7.DML操作的注意事項 18

      J2EE @ zxw 以上SQL語句對表都加上了行級鎖, 確認完成后, 必須加上事物處理結(jié)束的命令COMMIT 才能正式生效, 否則改變不一定寫入數(shù)據(jù)庫里.行級鎖也未能得到釋放.如果想撤回這些操作, 可以用命令 ROLLBACK 復原.在運行INSERT, DELETE 和 UPDATE 語句前最好估算一下可能操作的記錄范圍, 應該把它限定在較小(一萬條記錄)范圍內(nèi),.否則ORACLE處理這個事物用到很大的回退段.程序響應慢甚至失去響應.如果記錄數(shù)上十萬以上這些操作, 可以把這些SQL語句分段分次完成, 其間加上COMMIT 確認事物處理.太過頻繁的commit不好

      第四篇:黑馬程序員c語言教程:DML語言簡介

      sql語言的類型

      數(shù)據(jù)語言實現(xiàn)數(shù)據(jù)的crud

      DML語句(Data Manipulation Language)數(shù)據(jù)庫操作語言

      insert update delete select DDL語言 data definition Lanaguage

      create table

      create view index sequence synonym同義詞

      truncate table DCL語言 data control language數(shù)據(jù)語言

      commit rollback savetpointe

      OCA認證 OCP(dba)一起考, 參加oracle的培訓 2w Oracle數(shù)據(jù)庫管理員認證專員(OCA):Oracle Certified Associate Oracle數(shù)據(jù)庫管理員認證專家(OCP): Oracle Certified Professional

      Oracle數(shù)據(jù)庫管理員認證大師(OCM): Oracle Certified Master

      dba linux cocos2d-x 入行 4000 8500 10000 3年 8000 1.5

      1.7 10 年

      ...語法: INSERT INTO table [(column [, column...])] VALUES(value [, value...]);

      --1 向表中插入所有列 insert into emp values(1, 'tom_111', 'clerk', 7839, sysdate, 8500, 10000, 10)

      --2 向表中插入部分列

      insert into emp(empno, ename, sal, comm, deptno)values(2, 'tom_222', 8502, null, 10)

      --3 隱式插入空值: 沒有寫出的列,默認為null值

      --4 顯示插入空值:

      --5 sql插入語言的地址符 & 取地址符后面相當于一個變量

      mysql語言: preparedStatement語言

      insert into emp(empno, ename, sal, comm, deptno)values(&empno, &ename, 8502, null, 10)====>輸入字符串是,需要 加''

      1* insert into emp(empno, ename, sal, comm, deptno)values(&empno, &ename, 8502, null, 10)

      SQL> /

      輸入 empno 的值: 4

      輸入 ename 的值: 'tom_444'

      原值 1: insert into emp(empno, ename, sal, comm, deptno)values(&empno, &ename, 8502, null, 10)

      新值 1: insert into emp(empno, ename, sal, comm, deptno)values(4, 'tom_444', 8502, null, 10)

      已創(chuàng)建 1 行。

      SQL> /

      輸入 empno 的值: 5

      輸入 ename 的值: tom_555

      原值 1: insert into emp(empno, ename, sal, comm, deptno)values(&empno, &ename, 8502, null, 10)

      新值 1: insert into emp(empno, ename, sal, comm, deptno)values(5, tom_555, 8502, null, 10)

      insert into emp(empno, ename, sal, comm, deptno)values(5, tom_555, 8502, null, 10)

      *

      =====>事物拋磚....4條數(shù)據(jù)全部都回退了..這4條數(shù)據(jù)全部都在1個事物里面

      &地址符, 可以在任何sql語言中使用.在select 語言中也可以使用地址符

      select * from emp

      where sal >&sal

      --7 批量插入數(shù)據(jù)

      --一次性的將emp中所有10號部門的員工插入到emp10中

      --在insert語言中使用子查詢 子查詢 不光用在查詢套查詢, 也可用在DML語句套select語句

      create table emp20

      as select * from emp where 1=2

      insert into emp20

      select * from emp where deptno = 20

      有關(guān)update更新語句

      UPDATE table SET column = value [, column = value,...] [WHERE condition];--列子

      SQL> update emp20 set sal = 1800 , deptno = 22 where ename='SMITH'

      有關(guān)刪除數(shù)據(jù)

      DELETE [FROM] table [WHERE condition];

      eg

      delete from emp20 where empno = 7369

      delete emp20;

      delete和truncate表區(qū)別delete逐條刪除 truncate 先摧毀表再重建

      delete語言是DML語言 truncate是DDL

      DML語言可以閃回 做錯的并且提交了.可通過閃回,撤銷操作

      DDL語言不可以閃回 flashback

      delete是逐條刪除,會產(chǎn)生碎片, truncate不會產(chǎn)生碎片

      行移動功能: 要開啟閃回功能,必須要開啟行移動功能delete不會釋放空間 truncate會delete可以回滾 truncate不可以

      oracle delete快 mysql truncate快.實驗: 從文件中導入數(shù)據(jù), 通過命名delete 和 truncate刪除表數(shù)據(jù) 實驗

      從文件中導入數(shù)據(jù)

      SQL> set timing off;SQL> set feedback off;SQL> drop table testdelete purge;SQL> @c:Sql.sql;SQL> SQL> set timing on;//最后刪除數(shù)據(jù)表的時候,把時間打開,記錄時間

      SQL> delete from testdelete;已用時間: 00: 00: 00.03

      從文件中導入數(shù)據(jù)

      SQL> set timing off;@c:Sql.sql;

      set timing off;

      select count(*)from testdelete;set timing on;//最后刪除數(shù)據(jù)表的時候,把時間打開,記錄時間

      truncate table testdelete;已用時間: 00: 00: 00.45

      事務 基本概念(db2 infomix mysql sqlserver ===>)概念

      一個或者多個DML語言組成特點

      要么都成功,要么都失敗

      特性

      原子性 一致性 隔離性 持久性

      事物的隔離性 多個客戶端同時操作數(shù)據(jù)庫的時, 要隔離他們的操作

      否則:臟讀 不可重復讀 幻讀

      設置不同的擱置級別來解決oracle中的事務

      事務起始標志 DML語言(oracle默認事務似是打開的, 但是不自動提交)2 事務的結(jié)束標志

      提交: 顯示提交commit

      隱式提交

      1)執(zhí)行DDL語言

      eg create table語言 還有I個隱式的功能

      提交之前的沒有提交的DML語言(insert update)

      2)正常退出

      回滾: 顯示 rollback

      隱式 掉電/宕機/非正常退出==系統(tǒng)出錯了

      事物隔離實驗

      create table t1(tid number, tname varchar2(20));

      insert into t1(tid, tname)values(1, '111');

      insert into t1 values(2, '2222');

      事物隱式提交實驗 ===執(zhí)行DDL語言

      結(jié)論====>

      oracle:(oracle默認事務似是打開的, 但是不自動提交)

      mysql: mysql自動提交

      insert oracle事務控制--保存點

      create table testsavepoint(tid number, tname varchar2(20));set feedback on

      insert into testsavepoint values(1, 'tom1');insert into testsavepoint values(2, 'tom2');savepoint a;//創(chuàng)建一個保存點

      insert into testsavepoint values(3, 'tom3a);rollback to savepoint a;

      注意: 回退到savepoint a 前面插入的兩條sql語句還沒有提交;仍然還在一個事務里面;讓事務結(jié)束的方法 顯示 隱式 SQL> rollback / commit oracle數(shù)據(jù)的隔離級別問題

      read only ,數(shù)據(jù)庫幾乎不做串行化操作,增加了read only SQL99

      第五篇:黑馬程序員c語言教程:DML語言強化

      sql語言的類型

      數(shù)據(jù)語言實現(xiàn)數(shù)據(jù)的crud

      DML語句(Data Manipulation Language)數(shù)據(jù)庫操作語言

      insert update delete select DDL語言 data definition Lanaguage

      create table

      create view index sequence synonym同義詞

      truncate table DCL語言 data control language數(shù)據(jù)語言

      commit rollback savetpointe

      OCA認證 OCP(dba)一起考, 參加oracle的培訓 2w Oracle數(shù)據(jù)庫管理員認證專員(OCA):Oracle Certified Associate Oracle數(shù)據(jù)庫管理員認證專家(OCP): Oracle Certified Professional Oracle數(shù)據(jù)庫管理員認證大師(OCM): Oracle Certified Master

      語法: INSERT INTO table [(column [, column...])] VALUES(value [, value...]);

      --1 向表中插入所有列

      insert into emp values(1, 'tom_111', 'enginerr', 7839, sysdate, 5000, 100, 10)--2 向表中插入部分列

      insert into emp(empno, ename, job, hiredate)values(2, 'tom_2222', 'enginerr', sysdate)

      --3 隱式插入空值: 沒有寫出的列,默認為null值--4 顯示插入空值:--5 sql插入語言的地址符 & 取地址符后面相當于一個變量

      mysql語言: preparedStatement語言 SQL> insert into emp(empno, ename, job, hiredate)values(&empno, &ename, &job, &hiredate);輸入 empno 的值: 3

      輸入 ename 的值: 'tom_ccc' 輸入 job 的值: 'job' 輸入 hiredate 的值: '22-2月-81' 原值 1: insert into emp(empno, ename, job, hiredate)values(&empno, &ename, &job, &hiredate)新值 1: insert into emp(empno, ename, job, hiredate)values(3, 'tom_ccc', 'job', '22-2月-81')

      &地址符, 可以在任何sql語言中使用.在select 語言中也可以使用地址符

      SQL> select ename, job, &tt from emp;輸入 tt 的值: deptno 原值 1: select ename, job, &tt from emp 新值 1: select ename, job, deptno from emp

      --7 批量插入數(shù)據(jù)--創(chuàng)建一張表

      create table emp10 as

      select * from emp where 1=2;--一次性的將emp中所有10號部門的員工插入到emp10中

      --在insert語言中使用子查詢 子查詢 不光用在查詢套查詢, 也可用在DML語句套select語句

      insert into emp10--列完全一樣,可以不寫

      select * from emp where deptno=10;delete from emp10;

      有關(guān)update更新語句

      UPDATE table SET column = value [, column = value,...] [WHERE condition];--列子

      SQL> update emp10 set sal=2300 where empno=7934;

      有關(guān)刪除數(shù)據(jù)

      DELETE [FROM] table [WHERE condition];

      delete和truncate表區(qū)別

      delete逐條刪除 truncate先摧毀表再重建delete語言是DML語言 truncate是DDL

      DML語言可以閃回 做錯的并且提交了.可通過閃回,撤銷操作

      DDL語言不可以閃回 flashback

      delete是逐條刪除,會產(chǎn)生碎片, truncate不會產(chǎn)生碎片

      行移動功能: 要開啟閃回功能,必須要開啟行移動功能delete不會釋放空間 truncate會delete可以回滾 truncate不可以

      oracle delete快 mysql truncate快.實驗: 從文件中導入數(shù)據(jù), 通過命名delete 和 truncate刪除表數(shù)據(jù) 實驗

      從文件中導入數(shù)據(jù)

      SQL> set timing off;SQL> set feedback off;SQL> drop table testdelete purge;SQL> @c:Sql.sql;SQL> SQL> set timing on;//最后刪除數(shù)據(jù)表的時候,把時間打開,記錄時間

      SQL> delete from testdelete;已用時間: 00: 00: 00.03

      從文件中導入數(shù)據(jù)

      SQL> set timing off;@c:Sql.sql;

      set timing off;

      select count(*)from testdelete;set timing on;//最后刪除數(shù)據(jù)表的時候,把時間打開,記錄時間

      truncate table testdelete;已用時間: 00: 00: 00.39

      事務基本概念

      概念

      一個或者多個DML語言組成特點

      要么都成功,要么都失敗

      特性

      原子性 一致性 隔離性 持久性

      事物的隔離性 多個客戶端同時操作數(shù)據(jù)庫的時, 要隔離他們的操作

      否則:臟讀 不可重復讀 幻讀

      設置不同的擱置級別來解決oracle中的事務

      事務起始標志 DML語言(oracle默認事務似是打開的)2 事務的結(jié)束標志

      提交: 顯示提交commit

      隱式提交

      1)執(zhí)行DDL語言

      eg create table語言 還有I個隱式的功能

      提交之前的沒有提交的DML語言(insert update)

      2)正常退出

      回滾: 顯示 rollback

      隱式 掉電/宕機/非正常退出==系統(tǒng)出錯了 oracle事務控制--保存點

      create table testsavepoint(tid number, tname varchar2(20));set feedback on

      insert into testsavepoint values(1, 'tom1');insert into testsavepoint values(2, 'tom2');savepoint a;//創(chuàng)建一個保存點

      insert into testsavepoint values(3, 'tom3a);rollback to savepoint a;

      注意: 回退到savepoint a 前面插入的兩條sql語句還沒有提交;仍然還在一個事務里面;讓事務結(jié)束的方法 顯示 隱式 SQL> rollback / commit oracle數(shù)據(jù)的隔離級別問題

      read only ,數(shù)據(jù)庫幾乎不做串行化操作,增加了read only SQL99

      下載黑馬程序員c語言教程:子查詢簡介word格式文檔
      下載黑馬程序員c語言教程:子查詢簡介.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔相關(guān)法律責任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        黑馬程序員c語言教程:Oracle概念(推薦)

        七、在執(zhí)行SQL語句時綁定變量 1. 接收和定義變量的SQL*PLUS命令 ACCEPT DEFINE UNDEFINE & 2. 綁定變量SQL語句的例子 SQL> select id, last_name, salary from s_emp wh......

        黑馬程序員c語言教程:Oracle指令大全

        ------------------------- --order by的用法 --員工信息按照姓名正序排列 select * from emp order by ename asc; --員工信息按照倒敘排列 select * from emp order by en......

        黑馬程序員c語言教程:Oracle指令大全

        --sql structured query language --DML--Data Manipulation Language--數(shù)據(jù)操作語言 query information (SELECT), add new rows (INSERT), modify existing rows (UPDAT......

        黑馬程序員c語言教程:Oracle概念

        一、選擇行 1. 簡單的SELECT 語句 SELECT 字段名1 [AS] '字段名1 解釋' FROM table; 2. 處理NULL NVL函數(shù)可把NULL轉(zhuǎn)換成其它類型的符號 編程技巧: NVL函數(shù)在多條件模糊查詢......

        黑馬程序員c語言教程:Oracle指令大全

        --什么時候用外連接呢?比如領(lǐng)導向你要所有學生的列表,順便把所屬的班級也列出來,就需要外連接 --在Where語句中使用子查詢 --- --雇員中最高薪水的人員名稱 --1,先求出最高......

        黑馬程序員c語言教程:SQL函數(shù)

        日期 Oracle 中的日期型數(shù)據(jù)實際含有兩個值: 日期和時間。 默認的日期格式是 DD-MON-RR. 函數(shù)SYSDATE 返回: 日期 時間 在日期上加上或減去一個數(shù)字結(jié)果仍為日期。 兩個日......

        黑馬程序員C語言教程:文本三劍客之一(優(yōu)秀范文五篇)

        文本三劍客之一:awk簡介 以下內(nèi)容在linux可以使用info awk命令獲取 簡介 awk的功能主要在報表處理方面,有強大的功能。awk命令對文件每次讀入一行,默認按照空格分隔來進行處理......

        黑馬程序員c語言教程:Oracle概念(5篇)

        四、從多個表里選取數(shù)據(jù)記錄 1. 數(shù)據(jù)表間的連接 簡單的連接語法: SELECT 字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 表名1.字段名 = 表名2. 字段名 [ AND …......