SQLPLUS
SQLPLUS是ORACLE公司開發的很簡潔的管理工具,SQLPLUS是最好的,最核心的ORACLE管理工具。SQLPLUS簡潔而高效,舍棄浮華,反璞歸真。使用sqlplus,進入sqlplus並進行簡單的操作目的是熟悉oracle的小工具sqlplus的使用。
1、如何進入SQLPLUS界面
進入DOS,然后鍵入如下命令
C:\>sqlplus /nolog
進入字符界面
C:\>sqlplusw /nolog
進入windows界面,windows平台特有的。
/nolog是不登錄的意思。只進入SQLPLUS程序提示界面。
等待你輸入命令。
2、SQLPLUS的基本操作
Sql>connect / as sysdba
連接到本地的最高帳號
Sql>help index
Enter Help [topic] for help.
Sql>show all
顯示當前SQLPLUS的環境設置
Sql>show user
顯示當前所登錄的用戶信息
SQL> clear screen
有的時候sqlplus會顯示的有點亂,光標不在最后,請清屏.
3、一些常用命令
Spool
命令是將屏幕的顯示輸入到文本文件內,以便查看,有點象屏幕轉存。
SPOOL C:\1.TXT
SELECT * FROM EMP;
SPOOL OFF
以上三行就將SPOOL和SPOOL OFF所夾的屏幕輸出到c:\1.txt文件中。
Spool c:\1.txt append
Select * from dept;
Spool off
加APPEND命令的含義是續寫c:\1.txt,如果不加,將會把原來的c:\1.txt覆蓋,這是10G的新特性,
以前的數據庫版本不能續寫,只能指定新的文件名稱。
Run
運行SQLPLUS緩沖區內的SQL語句,可以縮寫為r
/
與run命令相同,運行SQLPLUS緩沖區內的SQL語句
@腳本
@%oracle_home%\rdbms\admin\utlxplan.sql
該句話的含義為運行指定的腳本。
@@為運行相對路徑下的腳本,一般是在大腳本調用小腳本的時候使用。
Save
將當前SQLPLUS緩沖區內的SQL語句保存到指定的文件中
如save c:\2.txt
Get
將文件中的SQL語句調入到SQLPLUS緩沖區內。
如 get c:\2.txt
Edit
編輯當前SQLPLUS緩沖區內的SQL語句,如ed
注釋
--是注釋當前行
/* */是注釋多行
PS:注意書寫語句的時候要加上分號 ” ; ”
學習Oracle數據庫(3)-SELECT語句
普通用戶連接conn scott/tiger
超級管理員連接 conn “sys/sys as sysdba”
Disconnect 斷開連接
把SQL存到文件 save c:\1.txt
Ed c:\1.txt編輯SQL語句
@c:\1.txt運行SQL語句
Desc emp描述EMP結構
Select * from tab 查看該用戶下大所有對象
Show user顯示當前用戶
書寫SQL語句的原則
大小寫不敏感,但單引和雙引內的大小寫是敏感的。切記!
關鍵字不能縮寫
可以分行書寫,但關鍵字不能被跨行書寫,單引內也不要跨行書寫。
一般每個子句是一行
可以排版來增加可讀性
字符串用單引
列的別名用雙引
SELECT語句
1、 簡單的Select語句
Select * from table 不指定查詢的字段
Select attr1,attr2 from table指定查詢某些字段
Select attr1,attr2 from table where attr1=xxx查詢符合條件的指定字段
2、 使用算術表達式 + - / *
表達式的運算是有優先級的,和程序中的一樣,先乘除后加減,括號強制優先級.
+ - * /
先乘除,后加減,括號強制優先級
Select ename,12*sal+300 from emp;
Select ename,12*(sal+300) from emp;
3、 連接運算符 ||
4、 使用字段別名 as
別名的使用原則
1。區分同名列的名稱
2。非法的表達式合法化
3。按照你的意願顯示列的名稱
4。特殊的別名要雙引
5。直接寫列的后面
6。使用as增加可讀性
5、 空值 is null
Null值不等於0,也不等於空格。
Null值是未賦值的值,不入索引。
NULL是雙刃劍,使用好了提高性能,你對它不了解,往往是錯誤的根源,切記!
查詢NULL值
因為null不等於null,所以沒有行被選出。未知不等於未知,無窮不等於無窮.
6、去除重復行 distinct
SELECT 語句顯示重復的行。用DISTINCT語法來去掉重復的行。
如果我們想去掉重復的行,我們需要distinct關鍵字。
在ORACLE數據庫的10G前版本,該語句需要排序才能去掉重復的行,而在10G中數據庫並不需要
排序,而是使用HASH算法來去掉重復的行,由於避免了排序,從而極大的提高了SQL語句的效率,
因為10G的SQL內核改寫了。效率更加的高。因為沒有排序,所以輸出也是無序的。
7、查詢結果排序 order by asc(desc)
Where和order by 子句
語法
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table
[WHERE condition(s)]
[order by column|expression| alias ];
Where 一定要放在FROM 子句的后面。
顯示表的部分行和部分列,使用where子句過濾出想要的行
Select deptno,ename from emp Where deptno=10;
Order by 放在最后,用來排序顯示結果
不指明都是二進制排序,如果你想按照拼音,部首,筆畫,法語等特殊的排序模式,請設定排序的環境
變量,關於國家語言的支持問題我們再DBA體系結構中描述。
默認是升序asc
降序要指定desc
8、比較運算符 > < (!= or <>) between and
And運算
Select ename,deptno,sal From emp Where deptno=30 and sal>1200;
ENAME DEPTNO SAL
---------- ------ ----------
ALLEN 30 1600
WARD 30 1250
MARTIN 30 1250
BLAKE 30 2850
TURNER 30 1500
兩個條件的交集,必須同時滿足。
in操作 not in
含上下界
In操作,窮舉,據說窮舉不能超過1000個值,我沒有去驗證。一般我們也不會窮舉到1000個值,如
果到1000請改寫你的SQL。
Select deptno,ename,sal from emp Where deptno in(10,20);
9、模糊查詢 like
% 表示零或多個字符
_ 表示一個字符
對於特殊符號可使用ESCAPE 標識符來查找
Like運算
_ 通配一個,僅匹配一個字符,
% 通配沒有或多個字符
10、邏輯運算符 or and not
OR運算
Select ename,deptno,sal From emp Where deptno=30 or sal>1200;
ENAME DEPTNO SAL
---------- ------ ----------
ALLEN 30 1600
WARD 30 1250
JONES 20 2975
MARTIN 30 1250
BLAKE 30 2850
CLARK 10 2450
KING 10 5000
TURNER 30 1500
JAMES 30 950
FORD 20 3000
MILLER 10 1300
兩個條件的並集,滿足一個就可以。
not運算
Select ename,deptno,sal From emp Where ename not like 'T%';
ENAME DEPTNO SAL
---------- ------ ----------
SMITH 20 800
ALLEN 30 1600
WARD 30 1250
JONES 20 2975
MARTIN 30 1250
BLAKE 30 2850
CLARK 10 2450
KING 10 5000
JAMES 30 950
FORD 20 3000
MILLER 10 1300
補集,不是T打頭的員工。
優先級
1。算術運算
2。連接運算
3。關系運算
4。 IS [NOT] NULL, LIKE, [NOT] IN
5。Between
6.not
7.and
8.or
括號強制優先級