天天看點

ORACLE基礎知識

ORACLE基礎知識

一:oracle資料庫的連結與退出:

#sqlplus /nolog    連接配接資料庫,但沒有使用賬号登入
>conn oracleuser/123456    使用oracleuser使用者登入
#sqlplus / as sysdba    以資料庫管理者的身份登入
>disconnect        退出目前使用者
>exit            退出資料庫      

二:建立使用者、賦權、建立表空間:

SQL> create tablespace TBspace datafile '/root/TBspace.dbf' size 30m;      

        建立表空間TBspace,大小30m,位置/root/TBspace.dbf。

SQL> create temporary tablespace TMPTBspace tempfile '/root/TBspace.dbf' size 30m;      

       建立臨時表間。臨時表空間的主要用途是在資料庫進行排序運算、管理索引、通路試圖等操作時提供臨時的運算空間,當運算完成之後系統會自動清理臨時表空間。

>create user USER identified by 123456 default tablespace TBspace|temporary tablespace TMPTBspace;      

          建立使用者USER,密碼123456,表空間為TBspace(或臨時表空間為TMPTBspace)    

SQL>drop user USER;                删除使用者USER
SQL>grant connect dba to USER;      向USER使用者賦予連接配接和管理者角色
SQL>select * from all_user;        檢視所有使用者
SQL>select * from all_sys_privs;    檢視所有系統權限
SQL>select * from all_tab_privs;    檢視所有對象權限
SQL>select * from dba_roles;        檢視所有角色
SQL>select * from user_role_privs;    檢視使用者所擁有的角色      

三:oracle常用語句   

SELECT 資料檢索

INSERT

UPDATE

DELETE

MERGE

資料操縱語言(DML)

CREATE

ALTER

DROP

RENAME

TRUNCATE

資料定義語言(DDL)

COMMIT

ROLLABCK

SAVEPOINT

事物處理控制

GRANT

REVOKE

資料控制語言(DCL)

oracle中SQL語句規範:  

    1:SQL語句不區分大小寫。

    2:SQL語句可以是一行,也可以是多行。

    3:關鍵字不能縮寫或在中間另起一行。

    4:子句通常放在單獨的行中。

    5:縮進隻是為了增強可讀性,沒有具體實際意義。

SQL>create table tb1(name varchar2(10),job varchar2(20),gongzi varchar2(20))tablespace TBspace;    建立表tb1
SQL>alter table tb1 add id varchar(10);    添加字段
SQL> alter table tb1 drop column id;    删除字段
SQL> insert into tb1(NAME,JOB,GONGZI,ID)values('jim','baidu','5600','3');    插入資料
SQL>truncate table tb1;    清空表tb1中的資料
SQL>drop table tb1;    删除表      

基本SELECT語句

    SELECT *|{[DISTINCT] column|expression [alias],...} FROM table;

    SELECT确認處理哪些列,FROM确認處理哪些表。

    使用算術運算符,可以建立數字和日期資料表達式。如運算符+,-,*,/等。

    例如:select name,gongzi,12*gognzi from tb1;

    定義空值:空值是指不可用、未配置設定、未知或不适用的值;空值不同于零或空格。

    例如:select name,gongzi,commission_pct from tb1;    在查詢結果中會建立一個名為commission_pct的空列。

定義列别名

    列别名具有以下特點和功能:

    1:重命名列标題。

    2:有助于計算。

    3: 緊跟在列名的後面,在列名和别名之間有可選的關鍵字AS。

    4:如果列别名包含空格或特殊字元或者區分大小寫,則需要使用雙引号。

    例如:select name as"Name",gongzi*12"NIANgongzi"from tb1;       

連接配接運算符

    連接配接運算符具有以下特點和功能:

    1:将列或字元串連接配接到其它列。

    2:有兩條豎線(||)表示。

    3:建立一個合成列,它是字元表達式。

     例如:selectname||jobas "GongZuo" from tb1;    就會将name和job兩列連接配接起來作為一個單獨列“GongZuo”。

文字字元串

    1:文字是指包含select清單中的字元、數字或日期。

    2:日期和字元文字必須包含在單引号中。

    3:在結果輸出中,每個傳回的行都回将每個字元串顯示一次。

    例如:select name ||'de gognzi shi'||gognzi as "GongZi" from tb1;    就會顯示一個名為GongZi的列,列中的資訊是“XX de gongzi shi XXX”`。

重複行

    查詢時預設會顯示重複行,想消除重複行需要使用關鍵字"DISTINCT"。

    例如:select DISTINCT gongzi from tb1;

顯示表結構:

    DESC tb1;

限制和排序資料:

    使用where子句限制傳回的行:‘

    SELECT *|{[DISTINCT] column|expression [alias],...} FROM table[where condition(s)];

    例如:select * from tb1 where gongzi > 5600;    

    where中的字元串和日期:

    1:字元串和日期值包含在單引号中。

    2:字元值是區分大小寫的,而日期值是區分格式的。

    3:預設日期格式為 DD-MON-YY

    比較條件:=,>,>=,<,<=,<>            其中<>為不等于。

    邏輯條件:AND,OR,NOT

     例如:select name job from tb1 where gognzi NOT IN (5300,5600,5900);  

    其它條件:

運算符 含義
BETWEEN...AND... 介于兩值之間(包含這兩個值)
IN(SET) 與值清單中的任一值比對
LIKE 與某個字元模式比對
IS NULL 為空值

    例如:select name job from tb1 where gognziIN (5300,5600,5900);    

    使用LIKE條件可以對有效字元串執行通配符搜尋,其中"%"比對零個或人一個字元,"_"比對一個字元。    例如:select * from tb1 where jobLIKE 't%';

ORDER BY子句

     SELECT *|{[DISTINCT] column|expression [alias],...} FROM table [where condition(s)]ORDER BY {column,expr,alias} [ASC|DESC];

    1:使用ORDER BY子句可以對行進行排序。

            ASC 升序,也是預設設定

            DESC 降序

    2:ORDER BY子句在SELECT語句的最後。

    例如:SELECT * FROM TB1 order by gognzi desc;    就會按gongzi降序排列。

四:oracle常用函數

    oracle中有許多内置的SQL函數,可以友善的實作某些功能。通過向SQL函數傳遞參數,函數執行後會為每行後傳回結果;接受的參數可以是列也可以是表達式,函數可以嵌套。

    function_name [(arg1,arg2,...)]

    一些常用SQL函數:

    1:大小寫處理函數

    這些函數主要用于轉換字元串的大小寫:

函數 處理結果
LOWER('SQL Function') sql function
UPPER('SQL Function') SQL FUNCTION
INITCAP('SQL Function') Sql Function

    例如:select * from tb1 where LOWER(name)='landy orten';

    字元串處理函數:

結果
CONCAT('Hello','World') HelloWorld
SUBSTR('HelloWorld',1,5) Hello
LENGTH('HelloWorld') 10
INSTR('HelloWorld',W) 6
LPAD(aaaaa,10,'*') *****aaaaa
RPAD(aaaaa,10,'*') aaaaa*****
TRIM('H' FROM 'HelloWorld') elloWorld

        SUBSTR取得字元串中指定起始位置和長度的字元串 ,substr ( string, start_position, [ length ] ),當start_position為負數時,表示從字元串末尾向前算起。

        RPAD(String a,int length,String addString),将addString添加到a的右邊,length 是傳回值的長度。

    2:數字函數

        ROUND:将值舍入到制定的小數位

                ROUND(33.363,2)——>33.36

          TRUNC:将數值截取到指定的小數位(不舍入)

                TRUNC(33.363,2)——>33.36

        MOD:傳回除法運算的餘數

                  MOD(16,3)——>1

    例如:select ROUND(33.336,2),MOD(16,3) from DUAL;    //DUAL是用于檢視函數或計算結果的空表。

    3:日期處理

    oracle資料庫以内部數字格式存儲日期:世紀、年、月、日、小時、分鐘和秒。

    預設日期格式為:DD-MON-YY    例如:07-MAY-13

    ‍‍SYDATE函數是一個日期函數,它會傳回資料庫伺服器的目前日期‍‍‍時間。

    例如:select SYSDATE from DUAL;‍‍‍‍‍‍‍‍‍

    與日期有關的運算:    

    1:對日期進行加減運算,以獲得新的日期值。

    2:将兩個日期相減,以得到他們之間的天數。

    3:将小時除以24,以将小時添加到日期中。

    例如:select name,(SYSDATE-hire_date)/7 AS weeks from tb1 ;