SQL語言簡介

 

 
一、SQL概述
 
   SQL是一種面向數據庫的通用數據處理語言規範,能完成如下幾類功能:
提取查詢數據,插入修改刪除數據,生成修改和刪除數據庫對象,數據庫安全控制,
數據庫完整性及數據保護控制。
 
數據庫對象包括:
    表、視圖、索引、同義詞、簇、觸發器、函數、過程、包、數據庫鏈、快照等
(表空間、回滾段、角色、用戶)。數據庫經過對錶的操做來管理存儲在其中的數據。
 
1)SQL*PLUS界面:
登陸:輸入SQLPLUS回車;
      輸入正確的ORACLE用戶名並回車;
      輸入用戶口令並回車,顯示提示符:SQL>
退出:輸入EXIT便可。
 
2)命令的編輯與運行:
    在命令提示符後輸入SQL命令並運行,以分號結束輸入;以斜槓結束輸入;以空行結束輸入;
    利用SQL緩衝區進行PL/SQL塊的編輯和運行;
    利用命令文件進行PL/SQL塊的編輯和運行。
 
二、數據庫查詢 
   用SELECT語句從表中提取查詢數據。
語法爲:
SELECT [DISTINCT] {column1,column2,…} 
FROM tablename 
WHERE {conditions} 
GROUP BY {conditions} 
ORDER BY {expressions} [ASC/DESC];
 
 
說明:
一、SELECT子句用於指定檢索數據庫的中哪些列,FROM子句用於指定從哪個表或視圖中檢索數據。
 
二、SELECT中的操做符及多表查詢WHERE子句。(LIKE,IS,…)
  WHERE子句中的條件能夠是一個包含等號或不等號的條件表達式,也能夠是一個含有IN、NOT IN、BETWEEN、LIKE、IS NOT NULL等比較運算符的條件式,還能夠是由單一的條件表達經過邏輯運算符組合成複合條件。
 
三、ORDER BY 子句
ORDER BY 子句使得SQL在顯示查詢結果時將各返回行按順序排列,返回行的排列順序由ORDER BY子句指定的表達式的值肯定。
 
四、鏈接查詢
利用SELECT語句進行數據庫查詢時,能夠把多個表、視圖的數據結合起來,使得查詢結果的每一行中包含來自多個表達式或視圖的數據,這種操做被稱爲鏈接查詢。
鏈接查詢的方法是在SELECT命令的FROM子句中指定兩個或多個將被鏈接查詢的表或視圖,而且在WHERE子句告訴ORACLE如何把多個表的數據進行合併。根據WHERE子句中的條件表達式是等仍是不等式,能夠把鏈接查詢分爲等式鏈接和不等式鏈接。
 
五、子查詢
若是某一個SELECT命令(查詢1)出如今另外一個SQL命令(查詢2)的一個子句中,則稱查詢1是查詢2的子查詢。
 
三、基本數據類型(NUMBER,VARCHAR2,DATE)  
 ORACEL支持下列內部數據類型:
VARCHAR2 變長字符串,最長爲2000字符。
NUMBER   數值型。
LONG     變長字符數據,最長爲2G字節。
DATE     日期型。
RAW      二進制數據,最長爲255字節。
LONG RAW 變長二進制數據,最長爲2G字節。
ROWID    二六進制串,表示表的行的惟一地址。
CHAR     定長字符數據,最長爲255。
BLOB     大的二進制數據,最大2G
CLOB     大的文本數據,最大2G
NBLOB    超大的二進制數據,最大4G
NCLOB    超大的文本字符數據,最大4G
 
 
四、經常使用函數用法:
     一個函數相似於一個算符,它操做數據項,返回一個結果。函數在格式上不一樣於算符,
它個具備變元,可操做0個、一個、二個或多個變元,形式爲:
函數名(變元,變元,…)
函數具備下列通常類形:
單行函數:對查詢的表或視圖的每一行返回一個結果行。它有數值函數,字符函數,日期函數,轉換函數等。
分組函數:返回的結果是基於行組而不是單行,因此分組函數不一樣於單行函數。在許多分組函數中可有下列選項:
DISTRNCT 該選項使分組函數只考慮變元表達式中的不一樣值。
ALL該選項使分組函數考慮所有值,包含所有重複。
所有分組函數(除COUNT(*)外)忽略空值。若是具備分組函數的查詢,沒有返回行或只有空值(分組函數的變元取值的行),則分組函數返回空值。
 
 
五、數據操縱語言命令:
數據庫操縱語言(DML)命令用於查詢和操縱模式對象中的數據,它不隱式地提交當前事務。它包含UPDATE、INSERT、DELETE、EXPLAIN PLAN、SELECT和LOCK 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子句指明瞭要修改的數據庫是EMP,並用WHERE子句限制了只對名字(ENAME)爲’MARTIN’的職工的數據進行修改,SET子句則說明修改的方式,即把’MARTION’的工做名稱(JOB)改成’MARAGER’.
 
2)、INSERT INTO tablename {column1,column2,…} VALUES {expression1,expression2,…};
例如:SQL>SELECT INTO DEPT(DNAME, DEPTNO)
      VALUES (‘ACCOUNTING’,10)
 
3)、DELETE FROM tablename WHERE {conditions};
例如:SQL>DELETE FROM EMP 
     WHERE EMPNO = 7654;
DELETE命令刪除一條記錄,並且DELETE命令只能刪除整行,而不能刪除某行中的部分數據.
 
 
4)、事務控制命令
提交命令(COMMIT):可使數據庫的修改永久化.設置AUTOCOMMIT爲容許狀態:SQL >SET AUTOCOMMIT ON;
回滾命令(ROLLBACK):消除上一個COMMIT命令後的所作的所有修改,使得數據庫的內容恢復到上一個COMMIT執行後的狀態.使用方法是:
SQL>ROLLBACK;
 
六、建立表、視圖、索引、同義詞、用戶。
七、表是存儲用戶數據的基本結構。
創建表主要指定義下列信息:
列定義
完整性約束
表所在表空間
存儲特性
可選擇的彙集
從一查詢得到數據
        語法以下: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);
更改表做用:
增長列
增長完整性約束
從新定義列(數據類型、長度、缺省值)
修改存儲參數或其它參數
使能、使不能或刪除一完整性約束或觸發器
顯式地分配一個範圍
2)、視圖
視圖是一個邏輯表,它容許操做者從其它表或視圖存取數據,視圖自己不包含數據。視圖所基於的表稱爲基表。
引入視圖有下列做用:
提供附加的表安全級,限制存取基表的行或/和列集合。
隱藏數據複雜性。
爲數據提供另外一種觀點。
促使ORACLE的某些操做在包含視圖的數據庫上執行,而不在另外一個數據庫上執行。
 
 
3)、索引
索引是種數據庫對象。對於在表或彙集的索引列上的每一值將包含一項,爲行提供直接的快速存取。在下列狀況ORACLE可利用索引改進性能:
按指定的索引列的值查找行。
按索引列的順序存取表。
        創建索引: CREATE [UNIQUE] INDEX indexname ON tablename(column ,。。。);
例如:SQL>CREAT INDEX IC_EMP 
          ON CLUSTER EMPLOYEE
 
4)、同義詞
同義詞:爲表、視圖、序列、存儲函數、包、快照或其它同義詞的另外一個名字。使用同義詞爲了安全和方便。對一對象創建同義詞可有下列好處:
引用對象不需指出對象的持有者。
引用對象不需指出它所位於的數據庫。
爲對象提供另外一個名字。
創建同義詞:
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 ;
相關文章
相關標籤/搜索