1. SQL語句
是一種語言
符合ANSI 標準
關鍵字不能縮寫
使用語句控制資料庫中的表的定義資訊和表中的資料
SQL是structured Query Language(結構化查詢語言 (SQL))的縮寫。可以使用sql語句建立或刪除資料庫的對象,插入,修改和更新資料庫中的資料,並且可以對資料庫執行各種日常管理的操作。它是所有關聯式資料庫管理系統的標準語言.換句話說使用sql可以對所有的關聯式資料庫進行操作。
2. SQL*Plus命令
是一種環境
Oracle 的特性之一
關鍵字可以縮寫
命令不能改變資料庫中的資料的值
集中運行
3.使用SQL*Plus可以:
描述表結構。
編輯 SQL 陳述式。
執行 SQL語句。
將 SQL 儲存在檔案中並將SQL語句執行結果儲存在檔案中。
在儲存的檔案中執行語句。
將文字檔裝入 SQL*Plus編輯視窗。
4.SQL查詢
1.資料類型: 資料是資訊數字表現形式,資訊的加工處理是以大量的結構化資料為載體進行的,資料庫管理系統的核心是資料庫,資料庫的主要對象是表,表是結構化資料存放區的地方.
Oracle系統也提供了大量的資料類型主要包括兩大類:
1、 使用者自訂的資料類型
2、 內建的資料類型
字元型:字元資料類型可以用於聲明包含了多個字母數字資料的欄位。
1、 固定長度的字元類型
char:用於儲存固定長度的字元,一旦聲明長度固定(不論你儲存的實際大小,但是大 小絕對不能大於聲明的長度)長度不足時,採用空格補充。1B的預設大小,最大尺寸為2000B。
Nchar與char的解析是一樣的不過,ncarh儲存的是Unicode字元資料。
2、 可變長度的字元類型
varchar與char類似,但是它是用於儲存可變的字串,而char用於儲存固定的字串。
Nvarchar與varchar解析是一樣的,不過nvarchar用於儲存的資料位元
雙位元組的資料。
日期型
date 短日期格式(1990-10-10)
Timestamp長日期格式(1990-10-10 10:10:10)
數字型
Number(2),代表:聲明一個2位元字的整數。
Number(3,2)代表:聲明為3數字位,並且小數後有2位。
文本型-lob資料類型
Blob:可以儲存映像,音頻檔案及視頻等檔案。
Clob:字元格式設定的大型物件,oracle資料unicode格式的編碼
Bfile:用於儲存二進位格式的檔案。
rowid 偽劣類型:用於在oracle內部儲存表中的每條記錄的物理地址。
2.SQL按照功能分類:
資料庫定義語句:
DDL(Data Definition Language):用於建立、修改、刪除資料庫物件。
資料庫操作語
DML(Data Manipulation Language)用於:查詢,添加修改或刪除存在資料庫物件中的資料。
資料庫控制語句DCL
DCL(Data Control Language)用於控制訪問資料庫中特定對象的使用者、grant revoke
Oracle系統中經過對Sql語言擴充被稱為PL/SQL語言。
基本的sql語句
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;
3.Condition(s)要使用到比較子常用的比較子如下:
操作符 含義
= 等於
> 大於
>= 大於等於
< 小於
<= 小於等於
<> 不等於 等效於!=
其它操作
And 邏輯運算 邏輯與
Or 邏輯運算 邏輯或
Not 邏輯運算 邏輯否
Between 起始值 and 結束值:使用 BETWEEN 運算來顯示在一個區間內的值包含(起始結束值)
In:使用 IN運算顯示列表中的值。
In(,,,)相當於一個集合,只要出現集合中匹配的就顯示
Like:使用 LIKE 運算選擇類似的值
選擇條件可以包含字元或數字:
% 代表零個或多個字元(任意個字元)。
_ 代表一個字元。
Escape: 迴避特殊符號的:使用轉義符。例如:將[%]轉為[\%]、[_]轉為[\_],然後再加上[ESCAPE ‘\’] 即可
Null: 使用 IS (NOT) NULL 判斷空值。
4.運算子優先順序表格:
優先順序
1 算術運算
2 串連符
3 比較符
4 Is not null like not in
5 Not between
6 not
7 and
8 Or
備忘:可以採用括弧改變優先順序
5.查詢語句(基本查詢,別名查詢):
1、表查詢某個表中的所有資料.
SQL> select * from emp;
查詢某個表中的特殊的列
SQL> select hiredate from emp;
HIREDATE
-----------
1980-12-17
1981-2-20
1981-2-22
1981-4-2
2、 採用別名查詢
SQL> select hiredate as 日期 from emp;
日期
-----------
1980-12-17
1981-2-20
1981-2-22
1981-4-2
備忘:as也可以省略
SQL>select e.hiredate from emp e; //表的別名
HIREDATE
-----------
1980-12-17
1981-2-20
1981-2-22
1981-4-2
6.條件查詢
案例:查詢部門號為10的員工資訊 部門為整數類型
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno=10;
查詢職位號為MANAGER的員工資訊 崗位的類型為字元類型
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where job='MANAGER';
案例:查詢部門號為10並且員工的職位為MANAGER的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where job='MANAGER' and deptno=10;
注意:字元和日期要包含在單引號中。
字元大小寫敏感,日期格式敏感。
預設的日期格式是 DD-MON-RR。
案例:查詢部門號大於10的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno>10;
案例:查詢薪水大於等於3000的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal>=3000;
案例:查詢薪水不等於3000的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal<>3000;
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal !=3000;
案例:查詢薪水大於2000並且小於3000的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal>2000 and sal<3000;
案例:查詢薪水大於等於2000並且小於等於3000的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal between 1600 and 3000;
//等效於
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where sal>=1600 and sal<=3000;
案例:查詢部門號位10,20的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno in(10,20);
注意:相當於如下操作:
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno =10 or deptno=20;
案例:查詢員工名稱以S開頭的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like 'S%';
案例:查詢員工名稱以S結尾的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%S';
案例:查詢員工名稱第三個字元為N的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '__N%';
案例:查詢員工名稱中含有N的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%N%';
案例:查詢員工名稱中倒數第二個字元為%的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%\%_'escape'\';
案例:查詢員工名稱總含有%的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where ename like '%\%%'escape'\';
案例:查詢獎金為null的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where comm is null;
案例:查詢獎金非null的員工資訊
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where comm is not null;
7.SQL插入語句:
1. 向表中插入一條新的(全欄位)記錄
SQL> insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(1111,'test','test','7369',to_date('1992-12-12','yyyy-mm-dd'),100,100,20);
或者寫成
SQL> insert into emp values(2222,'test','test','7369',to_date('1992-12-12','yyyy-mm-dd'),100,100,20);
2.都過查詢即可看到結果
SQL> select * from emp;
3.向表中插入一條新的(部分欄位)記錄
SQL> insert into emp(empno,ename,hiredate,deptno)values(3333,'test',to_date('1992-12-12','yyyy-mm-dd'),30);
注意:在插入操作的時候如果有關聯,一定要插入相應關聯的欄位的值.
備忘:插入之後都需要手動的提交 commit;
SQL> commit;
Commit complete
8.Order by 子句
使用 ORDER BY 子句排序 ,ORDER BY 子句在SELECT語句的結尾。預設的是升
序(asc)查詢
ASC(ascend): 升序
DESC(descend): 降序
案例:查詢員工資訊按照部門的編號進行升序排列 預設的是 asc
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp order by deptno;
案例:查詢員工資訊按照部門的編號進行降序排列 使用desc
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp order by deptno desc;
案例:查詢部門為20的員工資訊並按照員工的編號進行升序排列
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno=20 order by empno asc;
備忘:可以與條件陳述式結合使用但order by子句放在最後
案例:查詢員工資訊並按照員工的部門編號升序並且編號進行降序排列
SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp order by deptno asc,empno desc;
備忘:理解思路:首先查詢員工資訊按照部門的編號進行升序,然後每個部門中的員工按照員工的編號進行降序排列