基本概念:
數據庫對象:
表
約束條件:保證數據完整性。
視圖:虛表,命名的查詢語句。
索引:加速查詢(加快查詢的速度)。
序列:一串連續遞增或遞減的數字,步長相同,(代理鍵)。
同義詞:一個對象的另外一個叫法(對象的別名)。
存儲過程:用於操作
函數:用作複雜運算的。用於計算。
觸發器:由事件觸發的存儲過程。
包:
數據庫安全:
1、用戶
2、方案或模式(Schema):是用戶所對應的對象的集合。用戶名等於方案名
3、權限
4、角色:權限組,一組權限。
5、配額(quota):允許被使用的空間。用戶可以在表空間上可以使用的空間。
端口:2030
環境變量
-ORACLE_BASE基本目錄
-ORACLE_NAME 當前的主目錄
-ORACLE_NLS33
使用US7ASCLL字符集時不用設
-PATH 路徑
////////////////////////////////////////////////////////////////////////////////////////////////////////////
基本的SQL SELECT 語句
口令中的第一個字符不能爲數字。
語句:
(一)查詢:SELECT
數據操作語句:DML(數據的插入INSERT、刪除DELETE、修改UPDATE、合併MERGE)
(二)合併:把一個表中的數據合併到另一個表中去,如果數據在原表中存在做UPDATE,否則INSERT(9I獨有)。
(三)事務控制語句:COMMIT 提交、ROLLBACK 回滾、
SAVEPOINT 存儲點(與 ROLLBACK 搭配使用)在回滾的時候可以回滾到某個存儲點上。否則回滾到最初起點上。
(四)數據定義語句:對對象操作。TRUNCATE 清除表中所有數據 /CREATE 創建 /DROP 刪除 /ALTER 修改
(五)權限控制語句(DCL):GRANT 授予權限 /REVOKE 移除權限
SELECT:
SELECT 查詢列表 FROM 數據源;
*&* SQL命令必須加分號。
ALTER USER HR IDENTIFIED BY HR ACCOUNT UNLOCK;
修改用戶 解鎖
給HR解鎖
CONNECT(conn) HR/HR(密碼) 用HR用戶連接數據庫。
*&*(不是SQL命令 是 SQLPLUS 命令)不用加分號
DESCRIBE(desc) DEPARTMENTS
關鍵字 表名
描述表命令(SQLPLUS 命令)
SQL語句說明:
(1)語句文本的書寫不區分大小寫。(但字符串在作爲值的時候要注意大小寫)
(2)語句可以寫單行也可以寫多行。
(3)關鍵字不能縮寫或跨行。
(4)語句通常被分多行書寫。
(5)縮進被用於提高語句的可讀性。
數字和日期都可以使用數學運算符建立表達式。
+,-,*,/ <>不等於
日期可以加減數字,數字默認爲天。
日期不能加日期,但日期可以減日期。
字符不能加減。
定義空(NULL)值
空值出現在表達式中會導致整個表達式的值爲空。
NVL(字段名,將要賦予的值)函數
作用:將空值轉換成其他有ASCLL碼的值。
annual_salary年薪
別名
可以加中文的字段別名。
如果想強制地改變列名的大小寫,可以在別名的定義時加上雙引號,列名有空格時也要在列名上加雙引號。
例:
select lastname as "employees name" from employees;
spool +路徑;
保存命令(將顯示保存)
連接操作符:
||
select lastname || 'work in' || department_id from tablename;
select last_name || '''s salary is ' || salary 員工月薪 from employees;
~~~
在單引號中還要使用單引號的話,就必須使用兩個單引號來實現一個單引號的功能。
文本字符串:
*可以代表字符、數字或是日期。
*當代表字符或日期的時候用單引號括起來,數字不需要。
在查詢時默認顯示所有的行,包括有重複值的行。
DISTINCT 消除重複行關鍵字,放在整查詢列表的最前面。
作用範圍:整個查詢列表的組合。
消除重複行後會按字段的特性,做升序排列。(執行過程:先排序,再消除重複)
select distinct department_id,job_id from employees;
SQLPLUS 與 SQL 的關係
SQL *是一種語言
*ANSI標準
*關鍵字不能縮寫
*用於操作數據庫中的數據和表的定義
SQLPLUS命令的功能:
*描述表的結構
*編輯SQL語句
查詢 SQLPLUS 命令
help + 命令
SQLPLUSW 在 WINDOWS 下運行的分析器。
登陸ISQLPLUS
(1)先到服務中啓動OracleOraHome92HTTPServer
(2)在瀏覽器中輸入:http://wnj:7778/isqlplus
~~~~~~~~~~~~~~~
URL(網頁中的地址)
SQLPLUS 命令:
與文件相關的命令:
spool + 路徑
.
.
.
.
spool off
save
把當前內存中的語句保存爲文本文件。
run 或 /
運行當前內存中的語句
clear buffer(cl buff)
清空當前內存中的語句
start @
讀取並執行
get
讀取不執行
編輯命令:
list
列出一條語句
*表示當前行
change
修改命令
原來c/jj/kk
c/jjj/xxx
input
在當前行之後插入一行新的數據
append
在當前行中插入新的東西
n
寫數字顯示對應行
delete
del + 回車 刪除當前行
del 1 3 刪除第一到第三行
edit
l,c,i,a,n,d,e
查看當前用戶
SHOW USER
默認的日期格式
DD-MON-RR
日-月-年
日期可以進行比較;
字符可以進行比較(以字母的ASCLL碼比較);
IN(set)或NOT IN 匹配任何列表中的值;
LIKE 模糊匹配字符串值;
IS NULL 是否空值;
IS NOT NULL 是否不爲空;
BETWEEN 可以做數字、日期和字符的比較。
通配符
%
S_mith
WHERE first_name like 's/_%'escape'/';
解釋這個符號後的下劃線爲正常的字符。
如果不加,將被視爲通配符作用的下劃線。
'_'只能通配一個字符
主要用於通配固定位數的字符。例如查詢月收入五位數以上的員工。五位就可以用'_'來查詢。
邏輯操作符(用在WHERE子句中)
AND
OR
NOT
先執行 NOT ,再執行 AND 最後執行 OR。
ORDER BY
ORDER BY子句在 SELECT 語句的最後。
ASC:升序
DESC:降序
空值作爲無窮大來處理。
rownum 顯示行數量約束的關鍵字(在結果中可以做代理鍵使用);
可以按照查詢列表中序號進行排序。
系統在用戶寫出查詢列表的同時就賦予每個列名一個序號,升序賦予。
例:
SELECT name,phone,adress from.........;
1 2 3
單行函數:對單行數據進行計算並返回一個值的函數。
*修改數據項
*接受參數返回一個值。
*對每行進行操作。
*每行返回一個結果。
*可以修改數據類型
*可以嵌套
character字符類型函數:
LOWER()強制小寫
UPPER()強制大寫
INITCAP()每個單詞首字母大寫
可以用在WHERE子句中。
CONCAT(‘’,‘’)連接函數
{
SUBSTR(string,a[,b])返回string的一部分,a和b以字符爲單位。
SUBSTRB(string,a[,b])返回string的一部分,a和b是以字節爲單位。
SUBSTRC(string,a[,b])返回string的一部分,a和b是以UNICODE完全字符爲單位。
SUBSTR2(string,a[,b])返回string的一部分,a和b是以UCS2代碼點爲單位。
SUBSTR4(string,a[,b])返回string的一部分,a和b是以UCS4代碼點爲單位。
以上函數都是返回string的一部分,從字符位置A開始,長爲B個字符。如果A是0,那它就被認爲是1(字符串的開始位置)。如果A是正數,那麼字符從左邊開始數。如果是負數,則從STRING的末尾開始,從右邊數。如果B不存在,那麼缺省是整個字符串。如果B小於1,將返回NULL。如果A或B使用了浮點數,那麼該數值首先被節取成一個整數,返回類型與STRING相同。
}
{
LENGTH(string)
LENGTHB(string)
LENGTHC(string)
LENGTH2(string)
LENGTH4(string)
以上函數返回string的長度。因爲CHAR類型的值是填充空格的,所以如果string是CHAR數據類型,那麼末尾的空格算在長度之內。如果string是NULL,函數返回NULL。
}
{
INSTR(string1,string2[,a][,b]) 返回string1中包含string2的位置。a和b以字符爲單位。
INSTRB(string1,string2[,a][,b]) 返回string1中包含string2的位置。a和b是以字節爲單位。
INSTRC(string1,string2[,a][,b])返回string1中包含string2的位置。a和b是以UNICODE完全字符爲單位。
INSTR2(string1,string2[,a][,b]) 返回string1中包含string2的位置。a和b是以UCS2代碼點爲單位
INSTR4(string1,string2[,a][,b]) 返回string1中包含string2的位置a和b是以UCS4代碼點爲單位。
以上函數返回string1中包含string2的位置。從左邊開始掃描string1,起始位置是A。如果A爲負數那麼從右邊開始掃描。第B次出現的位置將被返回。A和B缺省都爲1,即返回在string1中第一次出現string2的位置。如果string2在A和B的規定下沒有找到那麼就返回0。位置的計算是相對於string1的開始位置的,而不關A和B的取值。
}
LPAD(列名,數字,‘要補上的字符’)左補位
RPAD(列名,數字,‘要補上的字符’)右補位
TRIM(‘child_str’ FROM ‘parents_str’)將連續子串(只能有一個字符)從主串的兩邊截取出來,區分大小寫。
默認爲截取空格。
LTRIM()左截取
RTRIM()右截取
ascii(x)函數,返回'X'字符的十進制數,即X的ASCII碼值。
chr(x)函數,返回ASCII碼爲X的字符。
length(x)函數,求串X的長度,與之相似的是lengthb(x)函數,用在多字節字符中。
replace(x,y[,z])函數,返回值爲將串X中的Y串用Z串替換後的結果字符串。若省略Z參數,則將串X中爲Y串的地方刪除。
soundex(x)函數,返回串X的語音描述,這個描述由4個字符組成,說明串X的聲音表示形式發音,有時在只知道一個名字的發音而不知道拼寫情況下或許能用到。
例:select soundex('smith') from dual; 返回值爲:S530.
translate(x,y,z)函數,返回將X串中每個字符按它在Y串中出現的位置翻譯成Z串中相應位置的字符後的結果,相當與替換。
例:select translate('this is an example','my is','@#$%^&') from dual;
NLS函數
除了NCHR,這些函數都是以字符類型爲參數返回字符類型值。
CONVERT(string,dest_charset[,source_charset])
將輸入string轉換爲指定字符集dest_charset。source_charset是輸入值的字符集——如果它沒有被指定,則缺省爲數據庫字符集。輸入值可以是CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB和NCLOB類型。返回值爲
VARCHAR2類型。如果dest_charset中沒有輸入字符串中的一個字符,將會使用一個代替字符(由dest_charset定義)
NCHR(X)
返回數據庫國家字符集中值爲X的字符。NCHR(X) 等價於CHR(x USING NCHAR_CS).
NLS_CHARSET_DECL_LEN(byte_width,charset)
返回一個NCHAR值的聲明寬度(以字符爲單位).byte_width是該值以字節爲單位的長度charset是該值的字符集ID。
NLS_CHARSET_ID(charset_name)
返回指定字符集charset_name的數字ID。爲charset_name指定“CHAR_CS”將返回數據庫字符集的ID,爲charset_name指定“NCHAR_CS”將返回數據庫國家字符集的ID。如果charset_name是一個無效字符集名,將返回
NULL。NLS_CHARSET_ID和NLS_CHARSET_NAME是互爲反函數。
NLS_CHARSET_NAME([charset_id])
返回指定字符集ID charset_id 的名字。如果 charset_id 是一個無效字符集ID,將返回NULL;
NLS_INITCAP(string[,nlsparams])
以字符串中每個單詞第一個字符大寫而單詞中其餘字母小寫的形式返回string.nlsparams指定了一個與該會話缺省的不同的排序次序。如果沒有指定該參數,NLS_INITCAP與INITCAP相同。nlsparams應該採取下面的形式:
'NLS_SORT=sort',其中sort是一個語言排序序列。
NLS_UPPER(string[,nlsparams])
以大寫形式返回string,不是字母的字符不受影響。如果沒有指定nlsparams,NLS_UPPER與UPPER相同。
NLS_LOWER
以小寫形式返回string,不是字母的字符不受影響,如果沒有指定nlsparams,NLS_LOWER與LOWER相同。
NLSSORT(string[,nlsparams])
返回用於排序string的字符串字節。所有值都被轉換爲字節字符串,這樣在不同數據庫之間就保持了一致性。
如果沒有指定nlsparams,那麼就會使用會話中缺省排序序列。
TRANSLATE(string USING {CHAR_CSINCHAR_CS})
TRANSLATE...USING 將輸入string參數轉換爲數據庫字符集(指定CHAR_CS)或數據庫國家字符集(指定NCHAR_CS).string可以是CHAR、VARCHAR2、NCHAR、NVARCHAR2類型。如果指定CHAR_CS,返回類型爲VARCHAR2,如果指定NCHAR_CS,返回類型爲NVARCHAR2。TRANSLATE...USING是CONVERT功能的子集。
如果輸入值包含UCS2字符或反斜線符號要使用UNSTR函數。
例:
SQL> select translate('asd' using NCHAR_CS) from dual;--數據庫國家字符集
TRANSL
------
asd
SQL> select translate('asd' using CHAR_CS) from dual;--數據庫字符集
TRA
---
asd
UNSTR(s)
返回轉換爲數據庫UNICODE字符集的字符串。s可包含escaped UCS2 代碼點字符。它由一個反斜線符號加上十六進制代碼點數字組成。因此,要在字符串中包含一個反斜線符號就必須使用雙反斜線符號(\\).UNISTR與
TRANSLATE...USING相似,差別是它僅能轉換爲UNICODE,而且可以包含escaped 字符。
general
//number
//conversion
//date
多行函數:對多行數據(一組數據)進行計算並返回一個值的函數。