程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 數據庫之Oracle的使用【入門版,包括常用的Sql語句】

數據庫之Oracle的使用【入門版,包括常用的Sql語句】

編輯:Oracle教程

數據庫之Oracle的使用【入門版,包括常用的Sql語句】


在命令提示符裡輸入sqlplus
或直接打開sqlplus
scott/tiger(用戶名/密碼){或先輸入用戶名(scott)-回車-輸入密碼(tiger)}
1.sqlplus
Orcale提供的一個客服端工具,通過使用這個工具可以發送一些sql
與數據庫進行通通訊
sqlplus命令
<1>本機登錄
sqlplus 用戶名/密碼
sqlplus 用戶名
sqlplus/nolog-->啟動sqlplus字符界面,然後通過conn用戶


<2>查看當前用戶:show user
<3>退出sqlplus:exit


<4>清屏:
SQL>clear screen
host cls.
<5>desc 表名:顯示表結構
<6>set pagesize 20每頁顯示20
<7>set linesize 300 ,,每頁300字符
其他
數據庫--》
1關系型數據庫(sql數據庫)oracle .sqlserver ,mysql,psql
<表,記錄 ,列>
數據庫--》2 nosql(not only sql 不僅僅是關系庫)
互聯網時代,大數據的存儲,非結構化的數據的存儲
集群的應用中比較廣泛
Key/value結構--》redis/MemcachedM(內存數據庫)
文檔數據庫--》Mongodb
列數據庫--》Hbase,Cassandra
圖數據庫--》neo4j
2.SQL(StructuredQuery Lanuage)語句
結構化查詢語句,可以理解成客戶端與服務器端進行溝通的橋梁
通過使用sql
可以更好的訪問,操作數據庫中的數據


通過sql我們可以操作表中的數據(增刪改),創建表,庫,視圖,索引,
分配權限,角色等等
sql分類
<1>DML(數據庫操縱語言)-->操作的是數據庫表中的數據
<2>DDL(數據庫定義語言)-->操作的是數據庫中的對象
<3>DCL(數據控制語言)-->操作的是數據庫中的權限,角色

《1》行選擇
《2》列選擇
《3》表聯接


SQL的書寫原則:
《1》不區分大小寫
《2》一條sql語句可以寫成一行也可以寫在多行
《3》建議不同字句分行寫,以增強可讀性
注意說明:
1.當執行一條sql查詢語句時,oracle服務器會解析
查詢語句(通過內部的一些算法)得到
最優的執行計劃(Oracle Server認為最優的),然後去執行
那麼這個過程是最耗時的
在開發過程中一般對sql語句的書寫會有一些規定:
2.oracle有一個共享池原理,一個sql查詢語句,分析之後會被存儲起來
下次如果有一模一樣的查詢語句產生,不會重新解析
,一模一樣指大小寫,空格等完全一模一樣。
個原理只針對簡單查詢(不能是多表查詢,子查詢查詢)

3.基本SQL 查詢語句
語法:
select [all|distinct]<目標列表表達式>
from<表名或視圖名>
[where<條件表達式>]
[group by <列名1> having <條件表達式>]
[order by <列名2>asc|desc];


【1】如果有order by 子句,則結果要按照<列名2>的升序或
降序排序(默認是升序排列)






oracle 默認實例庫(安裝的時候默認已經安裝上)


就自帶有一些表,我們可以利用主要的是:
EMP ,DEPT ,SALGRADE表


select * from emp;
說明:我們在開發使用中,不建議使用*
*指的是列出所有的列
會去查詢數據
數字字典,反而耗時應該要查詢哪些列,直接列出即可


select deptno ,dname,loc from dept;
<3>注意:
在開發中,建議只列出自己所需要的列這樣可以減少IO
的操作提高效率

<4>去除出重復的列distinct
從員工得部門的部門編號
select deptno from emp;(好多重復得deptno)
select distinct deptno from emp;

<5>表達式的應用
[1]查看所有員工的姓名和年工資
select ename ,sal*12 from emp;

[2]查詢員工的名字和月收入(假設獎金每月是300 )
select ename ,sal+300 from emp;


<6>別名的應用
select ename,sal* 12 as nianshouru from emp;
as 可省略
建議使用別名可以提高檢索效率;






4.限制條件的查詢

select *|distinct 列名,表達式 別名
from 表名
where 子句
order by 子句;


【1】如果有order by 子句,則結果要按照<列名2>的升序或
降序排序(默認是升序排列)

[1]查詢雇員的名字,薪水並按雇員的薪水進行排序(從低到高)
select ename , sal from emp order by sal asc;
select ename , sal 工資 from emp order by sal;(默認是升序)
select ename , sal 工資 from emp order by 2;(根據第二列)
[2]查詢雇員的名字,薪水,並按照雇員的名字升序,薪水降序排序

select ename ,sal 工資 from emp order by ename asc ,sal desc;


【2】where
[1]查詢名字為KING的薪水
select ename ,sal from emp where
ename = 'KING';要用單引號

[2]查詢薪水不等於3000的雇員的名字和薪水

select ename ,sal from emp where sal !=3000;
select ename , sal from emp where sal<>3000;
select ename,sal from emp where sal not in(3000);


[3] 查詢薪水大於等於1000小於等於3000的雇員的姓名薪水


select ename ,sal from emp where sal >=1000 and sal <=2000;


或者
select ename ,sal from emp where sal between 1000 and 2000;
(not between)
[4]查詢薪水大於3000或小於1000的雇員的姓名和薪水
select ename ,sal from emp where sal <=1000 or sal >= 3000;


[5]查詢薪水等於1000或3000的雇員的姓名和薪水
select ename ,sal from emp where sal =1000 or sal = 3000;
注意:此處是=號而不是==
或者
select ename,sal from emp where sal in(1000,3000);

[6]查詢87 年入職的員工的姓名和薪水
模糊查詢
select enamel ,sal,hiredate from emp where hiredate
like '%87%';
其中:%代表0或多個字符;

[7]查詢名字以K 打頭的人的相關信息
select ename,sal from emp where ename like 'K%';

[8]查詢名字包含A字母的雇員信息
select ename ,sal from emp where ename like '%A%';

[9]查詢名字第二個字母是Z的雇員信息
select ename,sal from emp where enem like '_Z%';
其中_代表任意一個字符
[10]查詢入職日期是87年5月23日的員工姓名和薪水
默認的日期格式:'23-5-87'代表1987年5月23
將來可以修改日期格式
select ename ,sal from emp where hiredate = '23-5月-87 ';


[11]查詢入職日期在87年5月23日到89年入職的雇員工資
(也可以查詢在某個區間的)
select ename ,sal from emp
where hiredate>='23-5月-87'and hiredate<='23-5月89';


[12]查詢獎金為null的員工的姓名和薪水
is null/is not null;
select ename ,sal 工資 from emp
where comm is null;
[13]查詢部門編號為20的雇員信息,並按薪水升序排序
select ename ,sal deptno from emp
where deptno = 20 order by sal;


[14]轉義字符的應用

select ename ,sal from emp where ename


like '\_S%';


[15]格式控制輸出:
按右邊指定格式輸出(SMITH is a CLERK)
||進行拼接操作
select ename || ' is a ' ||job
from emp
where job = 'CLERK'and ename = 'SMITH';

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved