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

來源:互聯網
上載者:User

標籤: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‘;





























著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.