SQL介紹及查詢

來源:互聯網
上載者:User
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;

備忘:理解思路:首先查詢員工資訊按照部門的編號進行升序,然後每個部門中的員工按照員工的編號進行降序排列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.