• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 40, 文章 - 0, 評(píng)論 - 9, 引用 - 0
            數(shù)據(jù)加載中……

            SQL語言簡介

            1、           SQL

            SQL是一種面向數(shù)據(jù)庫的通用數(shù)據(jù)處理語言規(guī)范,能完成以下幾類功能:提取查詢數(shù)據(jù),插入修改刪除數(shù)據(jù),生成修改和刪除數(shù)據(jù)庫對(duì)象,數(shù)據(jù)庫安全控制,數(shù)據(jù)庫完整性及數(shù)據(jù)保護(hù)控制。

            數(shù)據(jù)庫對(duì)象包括表、視圖、索引、同義詞、簇、觸發(fā)器、函數(shù)、過程、包、數(shù)據(jù)庫鏈、快照等(表空間、回滾段、角色、用戶)。數(shù)據(jù)庫通過對(duì)表的操作來管理存儲(chǔ)在其中的數(shù)據(jù)。

             

            1)SQL*PLUS界面:

            登錄:輸入SQLPLUS回車;輸入正確的ORACLE用戶名并回車;輸入用戶口令并回車,顯示提示符:SQL>

            退出:輸入EXIT即可。

            2)命令的編輯與運(yùn)行:

            l      在命令提示符后輸入SQL命令并運(yùn)行,以分號(hào)結(jié)束輸入;以斜杠結(jié)束輸入;以空行結(jié)束輸入;

            l      利用SQL緩沖區(qū)進(jìn)行PL/SQL塊的編輯和運(yùn)行;

            l      利用命令文件進(jìn)行PL/SQL塊的編輯和運(yùn)行。

             

            2、           數(shù)據(jù)庫查詢

            1)              SELECT語句從表中提取查詢數(shù)據(jù)。語法為

            SELECT [DISTINCT] {column1,column2,…} FROM tablename WHERE {conditions} GROUP BY {conditions} ORDER BY {expressions} [ASC/DESC];

            說明:SELECT子句用于指定檢索數(shù)據(jù)庫的中哪些列,FROM子句用于指定從哪一個(gè)表或視圖中檢索數(shù)據(jù)。

            2)              SELECT中的操作符及多表查詢WHERE子句。(LIKE,IS,…)

              WHERE子句中的條件可以是一個(gè)包含等號(hào)或不等號(hào)的條件表達(dá)式,也可以是一個(gè)含有INNOT INBETWEENLIKEIS NOT NULL等比較運(yùn)算符的條件式,還可以是由單一的條件表達(dá)通過邏輯運(yùn)算符組合成復(fù)合條件。

            3)              ORDER BY   子句

            ORDER BY 子句使得SQL在顯示查詢結(jié)果時(shí)將各返回行按順序排列,返回行的排列順序由ORDER BY 子句指定的表達(dá)式的值確定。

            4)              連接查詢

            利用SELECT語句進(jìn)行數(shù)據(jù)庫查詢時(shí),可以把多個(gè)表、視圖的數(shù)據(jù)結(jié)合起來,使得查詢結(jié)果的每一行中包含來自多個(gè)表達(dá)式或視圖的數(shù)據(jù),這種操作被稱為連接查詢。

            連接查詢的方法是在SELECT命令的FROM子句中指定兩個(gè)或多個(gè)將被連接查詢的表或視圖,并且在WHERE子句告訴ORACLE如何把多個(gè)表的數(shù)據(jù)進(jìn)行合并。根據(jù)WHERE子句中的條件表達(dá)式是等還是不等式,可以把連接查詢分為等式連接和不等式連接。

            5)              子查詢

            如果某一個(gè)SELECT命令(查詢1)出現(xiàn)在另一個(gè)SQL命令(查詢2)的一個(gè)子句中,則稱查詢1是查詢2的子查詢。

             

            3、              基本數(shù)據(jù)類型(NUMBER,VARCHAR2,DATE  O

             RACEL支持下列內(nèi)部數(shù)據(jù)類型:

            l       VARCHAR2 變長字符串,最長為2000字符。

            l       NUMBER   數(shù)值型。

            l       LONG      變長字符數(shù)據(jù),最長為2G字節(jié)。

            l       DATE       日期型。

            l       RAW       二進(jìn)制數(shù)據(jù),最長為255字節(jié)。

            l       LONG RAW  變長二進(jìn)制數(shù)據(jù),最長為2G字節(jié)。

            l       ROWID      二六進(jìn)制串,表示表的行的唯一地址。

            l       CHAR       定長字符數(shù)據(jù),最長為255

             

            4、              常用函數(shù)用法:

                 一個(gè)函數(shù)類似于一個(gè)算符,它操作數(shù)據(jù)項(xiàng),返回一個(gè)結(jié)果。函數(shù)在格式上不同于算符,它個(gè)具有變?cè)刹僮?/span>0個(gè)、一個(gè)、二個(gè)或多個(gè)變?cè)问綖椋?/span>

            函數(shù)名(變?cè)冊(cè)?#8230;)

            函數(shù)具有下列一般類形:

            l         單行函數(shù)

            l         分組函數(shù)

            1)單行函數(shù)對(duì)查詢的表或視圖的每一行返回一個(gè)結(jié)果行。它有數(shù)值函數(shù),字符函數(shù),日期函數(shù),轉(zhuǎn)換函數(shù)等。

            2)分組函數(shù)返回的結(jié)果是基于行組而不是單行,所以分組函數(shù)不同于單行函數(shù)。在許多分組函數(shù)中可有下列選項(xiàng):

            l         DISTRNCT 該選項(xiàng)使分組函數(shù)只考慮變?cè)磉_(dá)式中的不同值。

            l         ALL該選項(xiàng)使分組函數(shù)考慮全部值,包含全部重復(fù)。

            全部分組函數(shù)(除COUNT*)外)忽略空值。如果具有分組函數(shù)的查詢,沒有返回行或只有空值(分組函數(shù)的變?cè)≈档男校瑒t分組函數(shù)返回空值。

             

             

            5  數(shù)據(jù)操縱語言命令:

            數(shù)據(jù)庫操縱語言(DML)命令用于查詢和操縱模式對(duì)象中的數(shù)據(jù),它不隱式地提交當(dāng)前事務(wù)。它包含UPDATEINSERTDELETEEXPLAIN PLANSELECTLOCK TABLE 等命令。下面簡單介紹一下:

            1)  UPDATE tablename SET {column1=expression1,column2=expression2,…} WHERE {conditions};

            例如:S      QL>UPDATE EMP

                  SET JOB =’MANAGER’

                  WHERE ENAME=’MAPTIN’;

                  SQL >SELECT * FROM EMP;

            UPDATE子句指明了要修改的數(shù)據(jù)庫是EMP,并用WHERE子句限制了只對(duì)名字(ENAME)’MARTIN’的職工的數(shù)據(jù)進(jìn)行修改,SET子句則說明修改的方式,即把’MARTION’的工作名稱(JOB)改為’MARAGER’.

             

            2) INSERT INTO tablename {column1,column2,…} VALUES {expression1,expression2,…};

            例如:SQL>SELECT INTO DEPTDNAME DEPTNO

                  VALUES (‘ACCOUNTING’,10

             

            3)   DELETE FROM tablename WHERE {conditions};

            例如:SQL>DELETE FROM EMP

                 WHERE EMPNO = 7654;

            DELETE命令刪除一條記錄,而且DELETE命令只能刪除整行,而不能刪除某行中的部分?jǐn)?shù)據(jù).

             

             

            4  事務(wù)控制命令

            提交命令(COMMIT):可以使數(shù)據(jù)庫的修改永久化.設(shè)置AUTOCOMMIT為允許狀態(tài):SQL >SET AUTOCOMMIT ON;

            回滾命令(ROLLBACK):消除上一個(gè)COMMIT命令后的所做的全部修改,使得數(shù)據(jù)庫的內(nèi)容恢復(fù)到上一個(gè)COMMIT執(zhí)行后的狀態(tài).使用方法是:

            SQL>ROLLBACK;

             

            5、           創(chuàng)建表、視圖、索引、同義詞、用戶。

            1)、表是存儲(chǔ)用戶數(shù)據(jù)的基本結(jié)構(gòu)。

            建立表主要指定義下列信息:

            l         列定義

            l         完整性約束

            l         表所在表空間

            l         存儲(chǔ)特性

            l         可選擇的聚集

            l         從一查詢獲得數(shù)據(jù)

                    語法如下:CREATE TABLE tablename

                         (column1 datatype [DEFAULT expression] [constraint],

                          column1 datatype [DEFAULT expression] [constraint],

                          ……)

                         [STORAGE子句]

                         [其他子句…]

            例如:

            SQL>CREATE TABLE NEW_DEPT

                 (DPTNO NUMBER(2),

                 DNAME CHAR(6),

            LOC CHAR(13);

            更改表作用:

            l         增加列

            l         增加完整性約束

            l         重新定義列(數(shù)據(jù)類型、長度、缺省值)

            l         修改存儲(chǔ)參數(shù)或其它參數(shù)

            l         使能、使不能或刪除一完整性約束或觸發(fā)器

            l         顯式地分配一個(gè)范圍

            2)、視圖

            視圖是一個(gè)邏輯表,它允許操作者從其它表或視圖存取數(shù)據(jù),視圖本身不包含數(shù)據(jù)。視圖所基于的表稱為基表。

            引入視圖有下列作用:

            l         提供附加的表安全級(jí),限制存取基表的行或/和列集合。

            l         隱藏?cái)?shù)據(jù)復(fù)雜性。

            l         為數(shù)據(jù)提供另一種觀點(diǎn)。

            l         促使ORACLE的某些操作在包含視圖的數(shù)據(jù)庫上執(zhí)行,而不在另一個(gè)數(shù)據(jù)庫上執(zhí)行。

             

             

                    3)、索引

             索引是種數(shù)據(jù)庫對(duì)象。對(duì)于在表或聚集的索引列上的每一值將包含一項(xiàng),為行提供直接的快速存取。在下列情況ORACLE可利用索引改進(jìn)性能:

            l       按指定的索引列的值查找行。

            l       按索引列的順序存取表。

                   建立索引: CREATE [UNIQUE] INDEX indexname ON tablename(column ,。。。)

            例如:SQL>CREAT INDEX IC_EMP

                      ON CLUSTER EMPLOYEE

             

            4)、同義詞

            同義詞:為表、視圖、序列、存儲(chǔ)函數(shù)、包、快照或其它同義詞的另一個(gè)名字。使用同義詞為了安全和方便。對(duì)一對(duì)象建立同義詞可有下列好處:

            l         引用對(duì)象不需指出對(duì)象的持有者。

            l         引用對(duì)象不需指出它所位于的數(shù)據(jù)庫。

            l         為對(duì)象提供另一個(gè)名字。

            建立同義詞:

            CREATE SYNONYM symnon_name FOR [username.]tablename;

            例如:CREAT PUBLIC SYNONYM EMP

                  FOR SCOTT.EMP @SALES

             

            5)、用戶

            CREATE USER username IDENTIFIED BY password;

            例如:SQL>CREATE USER SIDNEY

                       IDENTIFIED BY CARTON ;

            Oracle擴(kuò)展PL/SQL簡介

            1、             PL/SQL概述。

            PL/SQLOracle對(duì)SQL規(guī)范的擴(kuò)展,是一種塊結(jié)構(gòu)語言,即構(gòu)成一個(gè)PL/SQL程序的基本單位(過程、函數(shù)和無名塊)是邏輯塊,可包含任何數(shù)目的嵌套了快。這種程序結(jié)構(gòu)支持逐步求精方法解決問題。一個(gè)塊(或子塊)將邏輯上相關(guān)的說明和語句組合在一起,其形式為:

            DECLARE

            ---說明

            BEGIN

            ---語句序列

            EXCEPTION

            ---例外處理程序

            END

            它有以下優(yōu)點(diǎn):

            l        支持SQL;

            l        生產(chǎn)率高;

            l        性能好;

            l        可稱植性;

            l        ORACLE集成.

             

            2、             PL/SQL體系結(jié)構(gòu)

            PL/SQL運(yùn)行系統(tǒng)是種技術(shù),不是一種獨(dú)立產(chǎn)品,可認(rèn)為這種技術(shù)是PL/SQL塊和子程序的一種機(jī),它可接收任何有效的PL/SQL塊或子程序。如圖所示:

             

             

            PL/SQL

                          PL/SQL機(jī)

             

                                 

            PL/SQL

            過程性語句

            執(zhí)行器

            SQL語句

             

             

             

             

             

             

             

             

             

             

             


            PL/SQL機(jī)可執(zhí)行過程性語句,而將SQL語句發(fā)送到ORACLE服務(wù)器上的SQL語句執(zhí)行器。在ORACLE預(yù)編譯程序或OCI程序中可嵌入無名的PL/SQL塊。如果ORACLE具有PROCEDURAL選件,有名的PL/SQL塊(子程序)可單獨(dú)編譯,永久地存儲(chǔ)在數(shù)據(jù)庫中,準(zhǔn)備執(zhí)行。

             

             

            3、             PL/SQL基礎(chǔ):

            PL/SQL有一字符集、保留字、標(biāo)點(diǎn)、數(shù)據(jù)類型、嚴(yán)密語法等,它與SQL有相同表示,現(xiàn)重點(diǎn)介紹。

            1)、數(shù)據(jù)類型:如下表所示

             

             

            數(shù)據(jù)類型

            子類型

            純量類型

            數(shù)值

            BINARY_INTEGER

            NATURAL,POSITIVE

            NUMBER

            DEC,DECIMAL,DOUBLE PRECISION,PLOAT,INTEGER,INT,NUMERIC,REAL,SMALLINT

            字符

            CHAR

            CHARACTER,STRING

            VARCHAR2

            VARCHAR

            LONG

             

            LONG RAW

             

            RAW

             

            RAWID

             

            邏輯

            BOOLEAN

             

            日期

            DATE

             

            組合

            類型

            記錄

            RECORD

             

            TABLE

             

             

            2)、變量和常量

            PL/SQL程序中可將值存儲(chǔ)在變量和常量中,當(dāng)程序執(zhí)行時(shí),變量的值可以改變,而常量的值不能改變。

             

            3)、程序塊式結(jié)構(gòu):

            DECLARE

                    變量說明部分;

            BEGIN

                    執(zhí)行語句部分;

            [EXCEPTION

                    例外處理部分;]

            END;

             

            4、             控制語句:

            分支語句:

            IF condition THEN

                    Sequence_of_statements;

            END IF;

             

            IF condition THEN

                    Sequence_of_statement1;

            ELSE

                    Sequence_of_statement2;

            END IF;

             

            IF condition1 THEN

                    Sequence_of_statement1;

            ELSIF condition2 THEN

                    Sequence_of_statement2;

            ELSIF condition3 THEN

                    Sequence_of_statement3;

            END IF;

             

             

            5、             循環(huán)語句:

            LOOP

                    Sequence_of_statements;

                    IF condition THEN

                           EXIT;

                    END IF;

            END LOOP;

                  WHILE condition LOOP

                    Sequence_of_statements;

            END LOOP;

             

            FOR counter IN lower_bound..higher_bound LOOP

                    Sequence_of_statements;

            END LOOP;

             

            6、             子程序:

            存儲(chǔ)過程:

                    CREATE PROCEDURE 過程名 (參數(shù)說明1,參數(shù)說明2 。。。) IS

                           [局部說明]

                    BEGIN

                           執(zhí)行語句;

                    END 過程名;

             

            存儲(chǔ)函數(shù):

                    CREATE FUNCTION 函數(shù)名 (參數(shù)說明1,參數(shù)說明2 。。。)

            RETURN 類型 IS

                           [局部說明]

                    BEGIN

                           執(zhí)行語句;

                                 END 函數(shù)名;

            posted on 2007-12-29 17:25 閱讀(260) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久久亚洲AV无码去区首| 中文精品久久久久国产网址| 东方aⅴ免费观看久久av| 国产精品久久婷婷六月丁香| 久久只有这里有精品4| 久久综合香蕉国产蜜臀AV| 国产精品久久久久久久久免费| 国产福利电影一区二区三区久久久久成人精品综合 | 久久久青草青青亚洲国产免观| 久久99久久无码毛片一区二区| 波多野结衣久久| 亚洲国产综合久久天堂| 精品久久久久久无码中文字幕一区| 欧美成a人片免费看久久| 欧美色综合久久久久久| 久久香蕉国产线看观看乱码| 久久99中文字幕久久| 久久久国产打桩机| 精品久久久久久无码中文野结衣 | 亚洲国产精品成人久久蜜臀| 香蕉99久久国产综合精品宅男自 | 国产精品久久久久影院色| 精品国产一区二区三区久久| 99国内精品久久久久久久| 久久国产精品二国产精品| 精品久久久久中文字| 老司机午夜网站国内精品久久久久久久久 | 国产亚洲色婷婷久久99精品| 久久国产高清字幕中文| 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 亚洲精品tv久久久久| 国产亚洲精久久久久久无码77777| 亚洲精品乱码久久久久久中文字幕| 久久久久亚洲精品天堂久久久久久 | 久久一区二区三区免费| 亚洲一区精品伊人久久伊人| 亚洲精品蜜桃久久久久久| 亚洲狠狠综合久久| 久久久无码精品午夜| 日日噜噜夜夜狠狠久久丁香五月| 久久91精品国产91久久户|