中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      Oracle復習知識點

      時間:2024-10-17 07:14:29 Oracle認證 我要投稿
      • 相關推薦

      Oracle復習知識點匯總

        Oracle認證考試由Oracle公司授權國際考試認證中心對考生進行資格認證的。那么Oracle認證考試復習要點有哪些呢?下面跟yjbys小編一起來學習吧!

      Oracle復習知識點匯總

        desc emp; 顯示emp表的結構

        select count(*) FROM emp; 統計記錄條數 count(*)是統計函數

        SELECT * FROM emp; 查詢所有的列

        SELECT ename,hiredate FROM emp; 查詢員工的入職時間(投影)

        SELECT ename,sal AS Salary,job FROM emp; 查詢員工的sal,顯示為Salary---------結果是顯示為SALARY

        SELECT ename,sal "Salary",job "Job" FROM emp; 更改5為如此,as可以省略

        ******************select 子句的功能****************

        SELECT ename,sal,sal*12 "Year_Salary" FROM emp; 查詢員工的年薪,顯示為Year_Salary

        SELECT ename,sal,comm,sal+comm "Month_sal" FROM emp; 查詢員工月總酬勞(月薪+獎金)-------結果出現NULL

        SELECT ename,sal,nvl(comm,0) "Comm",sal+nvl(comm,0) "Month_sal" FROM emp; 更改點7,nvl(列名,值)表示如果該字段為NULL則把它轉換為該值

        SELECT ename || ' works as '|| job "work" FROM emp; ||為連接表達式,可隨意連接額外的字符-------注意:額外字符要用''括起來

        SELECT distinct job FROM emp; distinct作用是去掉重復值

        ***************where 子句的功能******************

        SELECT ename,deptno,job from emp where deptno=&no; 利用綁定變量的形式查詢不同部門的員工姓名,所在部門,職位;&no是我們待輸入的值

        SELECT ename,job FROM emp WHERE sal between &sal1 and &sal2 需要多少個參數就定義多少個變量

        SELECT ename,sal,job FROM emp where job='MANAGER';查詢職位是“MANAGER”的職員信息-----注意:=后要用' ',表中的數據有大小寫區分

        SELECT ename,sal FROM emp where sal between 1500 and 3000; between...and的用法,查詢工資在1500~3000員工信息;取反為:not between

        SELECT ename, deptno,job from emp where deptno=10 or deptno=20; or的用法,只要一個滿足條件就顯示

        SELECT ename, deptno,job from emp where job in('MANAGER','ANALYST'); 14、in的用法,可代替or,只要滿足括號里的一個字段就顯示;取反為:not in

        SELECT ename,job from emp where ename like 'M%' like用作模糊查詢,%表示0或多個字符,_表示任意單個字符,如'_M%'則表示第二個字符為M的字段;取反為:not like

        SELECT ename,job from emp where ename like 'A\_%' ESCAPE '\'; 顯示以A_***格式的字段,escape表示\后面的字符不作為通配符來用

        SELECT ename,comm FROM emp where comm is NULL; 查詢沒有獎金的員工,即comm為空,不可以寫為comm=null;取反:is not null

        SELECT ename,job FROM emp WHERE job <> 'SALESMAN'; 查詢職位表示SALESMAN的員工,<>表示為不等于

        SELECT ename,sal,deptno FROM emp WHERE sal>=1000 and deptno=10 or deptno=20; 先對A和B求交集,再和C求并集

        SELECT ename,sal,deptno FROM emp WHERE sal>=1000 and (deptno=10 or deptno=20); 先對B和C求并集,再和A求交集

        Alter session set nls_language='AMERICAN'; 轉換為英文環境

        Select *from emp where hiredate between '01-JAN-81' and '31-DEC-81'; 查詢入職年份為1981的員工信息

        ***************order by子句的功能***************************

        正序(asc)是從小到大,倒序(desc)是從大到小

        SELECT ename,sal,deptno

        SELECT ename,sal,deptno FROM emp order by deptno,sal DESC; 先對deptno進行正序排序(asc省略了),后對sal進行倒序(DESC)排序

        desc dual; dual是一個虛表,只有一個字段

        select * FROM dual;

        ***********************單行函數**************************

        *******1、字符函數*******

        SELECT lower('Sql Server') from dual; lower()轉換為小寫

        SELECT initcap('sql server') FROM dual; initcap()首字母大寫

        SELECT * FROM emp WHERE upper(ename)='SCOTT'; upper()轉換為大寫,在不知道其數據的大小寫情況下使用方便

        SELECT concat('hello', 'world') from dual;concat()連接字符串

        SELECT substr('helloworld', 3, 3) FROM dual; substr(字符串,開始位置,截取長度)截取子串,從1開始算

        SELECT length('helloworld') FROM dual; length()求字符串長度

        SELECT lpad('hello',10,'#') FROM dual; lpad(原字符串,設置的總長度,定義字符),不足總長度就左邊補字符

        SELECT rpad('hello',10,'#') FROM dual; rpad(原字符串,設置的總長度,定義字符),不足總長度就右邊補字符

        *******2、數字函數********

        SELECT round(45.678,2) from dual; round()四舍五入,默認有效位為0---------特例,當有效位為-1,結果是50

        SELECT trunc(45.678,-1) FROM dual; trunc()截取----------- 特例,當有效位為-1,結果是40

        select mod(16,5) FROM dual; mod()取模,相當于C語言中的%運算符,如16%5=1

        *******3、日期函數********

        SELECT sysdate FROM dual; sysdate獲取當前系統日期

        SELECT ename, round(sysdate-hiredate,2) hiredate FROM emp;計算員工入職天數

        SELECT ename, round((sysdate-hiredate)/365) hiredate FROM emp; 計算員工入職年數

        SELECT to_char (sysdate,'yyyy-mm-dd hh24:mi:ss') FROM dual; to_char()指定日期時間數據的格式

        SELECT to_char (sysdate,'yyyy"年"mm"月"dd"日"') FROM dual; 注釋:補to_char(),加入非日期格式的內容用""引起來

        select ename,round(months_between(sysdate,hiredate)) hiredate from emp; months_between()表示間隔多少個月

        select add_months(sysdate,6) FROM dual; add_months()表示加上多少個月--------注意區分sysdate+6(加6天)

        SELECT next_day(sysdate,'星期一') FROM dual; next_day()表示下一個周幾的哪一天,周日代表1,周一代表2...'星期一'是在中文環境里的表示方法,非中文要表示為'mon'

        Alter session set nls_language='AMERICAN'; 轉換為英文環境

        Alter session set nls_language='SIMPLIFIED CHINESE'; 轉換為中文環境

        select last_day('21-NOV-2012') from dual; last_day()表示本月最后一天是幾號

        ********4、轉換函數********

        select to_number('12')*12 from dual; to_number()字符串轉換為數字

        select to_number('$12,345.67','$99,999.99') from dual; 補to_number(),表示僅僅取數字,不取美元符號(即帶兩個參數,同樣的格式)

        select to_char(12345.67,'$000,000.00') from dual;to_char(數值,表示格式)數字轉換為字符串,0的作用是顯示數字,如果位數不夠,用0補齊;若0改為9,則9的用法是顯示數字并忽略前面的0;最常用的是小數點前為9,后為0

        insert into emp(empno,ename,hiredate)

        values ('2233','amy1',to_date(' 2012-10-01','yyyy-mm-dd')); to_date(日期,格式)字符串轉換為日期---------注意,插入數據時,類型要對應

        ********5、通用函數*******

        select ename,sal,comm,nvl(comm,100) bonus from emp; nvl(列名,數據)空值處理函數,數據可以是數字、日期和字符串

        select ename,comm,sal,coalesce(comm,sal*0.5m,100) bonus from emp; coalesce()參數列表函數,作用是返回參數列表第一個非空參數;該語句含義是:如果comm不是null,則獎金額為comm,如果為null,則獎金額為sal*0.5,如果comm和sal都是null,則安慰獎100

        select ename,job,sal decode

        (job,'SALESMAN',1.1*sal,'ANALYST',1.05*sal,'MANAGER0',1.02*sal,sal) new_salary from emp; decode(判斷條件,匹配1,值,匹配2,值,...,默認值,相當于C語言中的case語句)

        *******6、組函數*******

        如果函數中寫列名,默認忽略空值

        select count(*) from emp; count(列名)統計記錄總數

        select sum(sal),avg(sal) from emp; sum(列名)計算總和;avg(列名)計算平均數---------注意:這兩個函數只針對數字類型

        select max(sal),min(sal) from emp; min(列名)求最小值;max(列名)求最大值-----------注意:這兩個函數適用于任何類型

        ************GROUP BY及HAVING子句*******************

        select deptno,sum(sal) from emp group by deptno; 計算每個部門員工的工資和,一個一個部門來,

        select job,avg(sal) from emp;報錯:不是單組分組函數。應該改為:select avg(sal) from emp group by job;即先分組,再求平均數

        注意:select后出現的列,凡是沒有被組函數包圍的列, 必須出現在group by短語中;出現在group by后面的列,不一定出現在select后面,但是信息不完整。

        結論:select后面的非組函數的列和group by后面列保持一致。*/

        select job,max(sal) Max_s,min(sal) Min_s,count(*) from emp group by job; 注釋:區別where 是對表中數據的過濾;having是對分組得到的結果數據進一步過濾。select--from--where--group by--having--order by 正常執行順序

        select deptno,avg(sal) from emp group by deptno having avg(sal)>2000; 查詢哪些部門的平均薪水大于2000;對部門進行分組,求平均薪水,但只有平均薪水大于2000才顯示出來----------注意:凡是對組函數過濾,使用having,非組函數用where

        select job,count(*) from emp where job is not null group by job having count(*)>2 order by count(*); 先找出job不為空的記錄,接著對job進行分組,然后選取人數大于2的記錄,最后按每組記錄個數從小到大排序輸出(asc省略了)

        select deptno,count(*) from emp group by deptno having count(*)>5 order by count(*);

        ****************非關聯子查詢*****************

        select ename from emp where sal>(select sal from emp where ename='FORD'); 先執行子查詢,然后在作為一個結果參與主查詢的執行*/

        select ename,sal from emp where sal=(select max(sal)from emp); 找出最大工資的值,然后與其它值進行比較,相等的輸出------------注意:單行比較運算符都只能和一個值比較*/

        select ename,job from emp where deptno in (select deptno from emp where job='CLERK'); 如果子查詢返回多行數據,必須使用多行比較運算符:in

        select deptno,ename,sal from emp where (deptno,sal) in (select deptno,max(sal) from emp group by deptno); 子查詢執行后是多行,所以要使用in,查詢結果2列,where顯示要與之對應*/

        select deptno,avg(sal) from emp group by deptno having avg(sal)>(select avg(sal) from emp where deptno=20); 先算出每個部門的平均工資,再和20部門的平均工資進行比較

        select ename,job from emp where deptno in (select deptno from emp group by deptno having avg(sal)>2000)

        select ename form emp where empno not in (select mgr from emp) 查詢哪些人不是領導,返回結果有null值,且使用not in 運算符,則無結果*/

        *************關聯子查詢************

        select ename,sal,deprno from emp outer where sal>(select avg(sal) from emp where deptno=outer.deptno) 查詢哪些員工薪水比本部門的平均薪水高,子查詢不再是獨立的Sql語句,需要以來主查詢傳來的參數*/

        select ename,job,deptno from emp outer where exists (select 'a'from emp where mgr=outer.empno); exists關鍵字判斷子查詢有沒有數據返回,有則為ture,沒有則為false。它不關心子查詢的結果,所以select后寫什么都行*/

        ************多表查詢***************

        select e.deptno,e,ename,d.dname from emp e join dept d on e.deptno=d.deptno; 兩個表連接,表1 join 表2 on 條件,結論:沒有部門的員工和沒有員工的部門都不會出現

        ***內連接的表現形式***

        1、等值連接

        select e.ename,e.job,e.sal,d.dname from emp e join dept d on e.deptno =d.deptno and e.job='MANAGER'; 先用條件e.job = ‘MANAGER’對emp表進行過濾,結果集再和dept表進行內連接。

        2、非等值連接

        select e.ename, e.sal, s.grade,s.losal, s.hisal from emp e join salgrade s on e.sal between s.losal and s.hisal; 查詢emp表中員工的工資屬于哪個級別

        3、自連接

        select worker.ename,manager.ename from emp worker join emp manager on worker.mgr=manager.empno; 涉及同一張表的數據

        內連接總結:一張表里的記錄一定在另一張表中存在匹配的記錄,否則不能出現在結果集中

        外連接的特征:

        如果驅動表在匹配表中找不到匹配記錄,則匹配一行空行。

        外連接結果集=內連接結果集+驅動表在匹配表中匹配不上的記錄和空值。

        外連接的本質是驅動表中的數據一個都不能少。

        left outer join以左邊的表為驅動表。

        right outer join以右邊的表為驅動表。

        select e.empno , e.ename , d.dname from emp e left outer join dept d on e.deptno = d.deptno ; 結果集中包括有部門的員工和沒有部門的員工 */

        select e.empno , e.ename , d.dname from dept d left outer join emp e on e.deptno = d.deptno; 結果集中包括有員工的部門和沒有員工的部門*/

        結論:t1 left outer join t2等價于: t2 right outer join t1

        t1 right outer join t2等價于:t2 left outer join t1

        全外連接的結果集 = 內連接的結果集 +

        驅動表中在匹配表中找不到匹配記錄的數據和null值 +

        匹配表中在驅動表中找不到匹配記錄的數據和null值

        ***************集合***************

        A = {1,2,3,4,5,6}

        B = {2,4,6,8}

        A union B = {1,2,3,4,5,6,8}

        A union all B = {1,2,2,3,4,4,5,6,6,8}

        A intersect B = {2,4,6}

        A minus B = {1,3,5}

        ********數據操作語言(DML)*********

        ****1、insert語句****

        一次增加多條記錄,使用子查詢代替values 。在emp表中查詢部門10的員工編號,員工姓名,那么id、name與empno和ename相對應。

        insert into student_ning(id, name) select empno, ename from emp where deptno = 10;

        ****2、復制表****

        create table 表名 as 查詢語句; 注釋:復制全表

        create table salgrade_yyy as select * from salgrade where 1<>1; 只復制結構,不復制數據*

        create table emp_yyy as select empno,ename,sal*12 year_sal from emp where deptno = 10;復制一部分數據

        create table emp_bak as select * from emp where 1=0; 創建一個空表

        ****3、update語句****

        update emp_ning set sal = 1000 where empno = 7369; update語法結構: update 表名 set 列名 = 新的列值, 列名 = 新的列值. ….where 條件;

        ****4、delete語句****

        語法結構: delete [from] 表名 where 條件;

        drop table 會刪除表結構和數據;truncate 刪除表數據,保留表結構。drop 和truncate 都不可以回退。delete 僅刪除數據,可以回退。

        ***5、事務語句****

        包括:

        commit事務提交:將所有的數據改動提交

        rollback:事務回滾、回退到事務之初,數據的狀態和事務開始之前完全一致。

        savepoint:設置保存點 , 可以回滾( rollback )到指定的保存點。

        結論

        1) 提交、回滾前事務內部的數據改變只有在自己的會話中能夠看到。

        2) 提交、回滾前事務會對操作的數據加鎖,不允許其它事務操作。

        3) 如果提交( commit )后,數據的改變被確認,則

        4) 所有的會話都能看到被改變的結果;

        5) 數據上的鎖被釋放;

        6) 保存數據的臨時空間被釋放

        7) 如果回滾( rollback ) , 則

        8) 數據的改變被取消;

        9) 數據上的鎖被釋放;

        0) 臨時空間被釋放。

        *************數據定義語言***************

        包括create / drop / alter / truncate

        ****1、建表****

        建表的兩種方式:

        第1種,自定義表的列和數據類型

        create table 表名(

        列名 列的數據類型, ....

        );

        第2種,由一個現存的表復制新表

        create table 表名

        as

        查詢語句 ;

        ****2、刪表****

        drop 語法結構: drop table 表名 ;

        select a.table_name,b.created from user_tables a join user_objects b on a.table_name = b.object_name where b.created > '10-SEP-12'; 找出12年9月10日后創建的表,刪除過時的表。

        ****3、截取****

        1) truncate 保留表結構,刪除表中所有數據

        2) truncate 操作不需提交( commit ),沒有回退( rollback )的機會

        3) 語法結構: truncate table 表名 ;

        4) truncate 和 delete 的區別:

        ? truncate 在功能上等同于:delete + commit。

        ? delete 操作將刪除數據存儲到臨時空間中,不直接刪除,可以回退。

        truncate 操作直接刪除,不占用臨時空間,不能回退。

        ****4、修改****

        alter table temp_ning add(name char(10)); 增加列(只能增加在最后一列)

        alter table temp_ning rename column password to pwd;修改字段命名

        alter table temp_ning modify(pwd char(8)); 修改列的數據類型

        alter table temp_ning drop column pwd; 刪除列

        **************數據控制語言****************

        grant select on emp to zhang; 將查看emp 表的權限賦予zhang , zhang只能看不能改

        revoke select on emp from zhang; 將select權限回收;zhang 賬戶再次訪問時出錯。

        **************約束條件*********************

        表上的約束(CONSTRAINTS)保證數據的完整性一致性

        約束條件:

        主鍵:primary key,PK = unique + not null,是約束條件的一種,

        用于標識唯一+非空。

        外鍵:foreign key,FK。Major: 專業。

        唯一:unique。注冊一個論壇,e-mail是唯一的。允許為空

        非空:not null。注冊郵箱時候,用戶名、密碼是非空。

        檢查:check。學生的年齡只能是正數。性別設定只能男/女,M:male / F:female,還可以設置為空。

        ****1、主鍵約束****

        創建主鍵約束有2種方式:

        1)建表時創建,可以建立在列級或表級(列級約束是跟在列定義后邊的約束定義;表級約束就是定義完列后再定義的約束。)。

        2)在建表后創建,建立在表級。

        CREATE TABLE student_ning1(

        id NUMBER,

        name VARCHAR2(20),

        CONSTRAINT stuning1_id_pk PRIMARY KEY(id));

        主鍵約束建立在表級

        ****2、非空約束***

        創建非空約束:只能建立在列級。

        create table student_ning(

        id number primary key,

        name varchar2(20) not null);

        ****3、唯一約束****

        唯一約束可以定義在表級、列級。

        ****4、check約束****

        create table student_ning (

        id number primary key,

        name varchar2(20),

        sex char,

        constraint stuning_sex_ck check (sex in ('M','F')));

        ****5、外鍵約束****

        constraint stuning_mid foreign key (mid) references major_ning(id) ); 語法結構:foreign key (外鍵名) references 子表(主鍵名)

        在建立子表時,外鍵約束增加設定條件,有兩個可選短語:on delete set null(一旦主表數據被刪除,從表的外鍵列值設置為null。)和on delete cascade(級聯刪除(主表數據刪除,從表相關聯數據統統刪除) 。)。

        alter table student_ning drop constraint stuning_mid_fk; 刪除約束條件

      【Oracle復習知識點】相關文章:

      Oracle數據庫知識點:SQLPLUS介紹08-23

      Oracle認證:ORACLE綁定變量BINDPEEKING08-25

      Oracle認證:Oracle控制件文件修復07-27

      Oracle認證:Oracle避免全表掃描方式10-04

      Oracle認證:Oracle內存結構研究-PGA篇09-22

      oracle的sql語句01-21

      Oracle認證作用07-31

      Oracle最新認證07-13

      Oracle認證簡介11-30

      主站蜘蛛池模板: 国产美女胸大一区二区三区| 成在线人免费无码高潮喷水| 亚洲av网一区天堂福利| 狠狠综合亚洲综合亚色| 国产亚洲AV天天夜夜无码| 和龙市| 手机av男人天堂免费网址| 国产精品一区二区久久精品不卡 | 免费在线日韩| 欧美综合自拍亚洲综合百度| 国产午夜精品美女裸身视频69| 常熟市| 微山县| 宁明县| 呈贡县| 亚洲av岛国片在线观看| 国产成人香蕉久久久久| 亚洲av永久精品一区二区三区| 动漫av纯肉无码av在线播放| 卓尼县| 美女视频永久黄网站免费观看国产| 在线亚洲精品国产成人二区| 欧洲无码一级毛片无遮挡| 在线免费观看视频一区二区 | 国产精品久久久久久久y| 国产日韩AV无码免费一区二区 | 3亚洲日韩在线精品区| 偷拍av一区二区三区| 亚洲AV无码乱码一区二区三区| 北条麻妃精品一区二区三区| 亚洲国产成人精品毛片九色| 99久久精品国产片| 国产成人精品亚洲日本在| 介休市| 99久久综合国产精品免费| 精品在免费线中文字幕久久| 日韩人妻系列在线视频| 亚洲最稳定资源在线观看| 亚洲国产成人久久综合三区 | 亚洲精品美女久久久久网站| 亚洲无码啊啊啊免费体验|