Oracle/Sql 高級篇

1.TOP 子句

TOP 子句用於規定要返回的記錄的數目。

對於擁有數千條記錄的大型表來說,TOP 子句是非常有用的。

SELECT TOP number|percent column_name(s)
FROM table_name

例如:SELECT TOP 2 * FROM Persons

 

2.LIKE 操作符

LIKE 操作符用於在 WHERE 子句中搜索列中的指定模式。

SELECT column_name(s)

FROM table_name

WHERE column_name LIKE pattern

例:SELECT * FROM PersonsWHERE City NOT LIKE '%lon%'

       SELECT * FROM PersonsWHERE City NOT LIKE '%lon'

       SELECT * FROM PersonsWHERE City NOT LIKE 'lon%'

 

3.SQL 通配符

在搜索數據庫中的數據時,SQL 通配符可以替代一個或多個字符。

SQL 通配符必須與 LIKE 運算符一起使用。

通配符 描述
% 替代一個或多個字符
_ 僅替代一個字符
[charlist] 字符列中的任何單一字符

[^charlist]

或者

[!charlist]

不在字符列中的任何單一字符

 

 

 

 

 

 

 

 

例:SELECT * FROM PersonsWHERE FirstName LIKE '_eorge' 

        SELECT * FROM PersonsWHERE City LIKE '[ALN]%'

 

4.IN 操作符

IN 操作符允許我們在 WHERE 子句中規定多個值。

SELECT column_name(s)FROM table_nameWHERE column_name IN (value1,value2,...)

例:SELECT * FROM PersonsWHERE LastName IN ('Adams','Carter')

 

5.BETWEEN 操作符

操作符 BETWEEN ... AND 會選取介於兩個值之間的數據範圍。這些值可以是數值、文本或者日期。

SQL BETWEEN 語法

SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2

例:SELECT * FROM PersonsWHERE LastNameBETWEEN 'Adams' AND 'Carter'

 

6.Alias

通過使用 SQL,可以爲列名稱和表名稱指定別名(Alias)。

表的 SQL Alias 語法

SELECT column_name(s)
FROM table_name
AS alias_name
 

列的 SQL Alias 語法

SELECT column_name AS alias_name
FROM table_name

例 :SELECT po.OrderID, p.LastName, p.FirstNameFROM Persons AS p, Product_Orders AS poWHERE p.LastName='Adams' AND p.FirstName='John'

 

7.Join 和 Key

有時爲了得到完整的結果,我們需要從兩個或更多的表中獲取結果。我們就需要執行 join。

數據庫中的表可通過鍵將彼此聯繫起來。主鍵(Primary Key)是一個列,在這個列中的每一行的值都是唯一的。在表中,每個主鍵的值都是唯一的。這樣做的目的是在不重複每個表中的所有數據的情況下,把表間的數據交叉捆綁在一起。

例子:

         SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM Persons, OrdersWHERE Persons.Id_P = Orders.Id_P

或者  SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsINNER JOIN OrdersON Persons.Id_P = Orders.Id_PORDER            BY     Persons.LastName

 

8.SQL INNER JOIN 關鍵字

在表中存在至少一個匹配時,INNER JOIN 關鍵字返回行。

INNER JOIN 關鍵字語法

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

註釋:INNER JOIN 與 JOIN 是相同的。

 

9.SQL LEFT JOIN 關鍵字

LEFT JOIN 關鍵字會從左表 (table_name1) 那裏返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。

LEFT JOIN 關鍵字語法

SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

 

10.SQL RIGHT JOIN 關鍵字

RIGHT JOIN 關鍵字會右表 (table_name2) 那裏返回所有的行,即使在左表 (table_name1) 中沒有匹配的行。

RIGHT JOIN 關鍵字語法

SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

註釋:在某些數據庫中, RIGHT JOIN 稱爲 RIGHT OUTER JOIN。

 

11.SQL FULL JOIN 關鍵字

只要其中某個表存在匹配,FULL JOIN 關鍵字就會返回行。

FULL JOIN 關鍵字語法

SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

註釋:在某些數據庫中, FULL JOIN 稱爲 FULL OUTER JOIN。

 

12. SQL UNION 操作符

UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。

請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同。

SQL UNION 語法

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

註釋:默認地,UNION 操作符選取不同的值。如果允許重複的值,請使用 UNION ALL。

SQL UNION ALL 語法

SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

另外,UNION 結果集中的列名總是等於 UNION 中第一個 SELECT 語句中的列名。

 

13.SELECT INTO 語句

SELECT INTO 語句從一個表中選取數據,然後把數據插入另一個表中。

SELECT INTO 語句常用於創建表的備份復件或者用於對記錄進行存檔。

SQL SELECT INTO 語法

您可以把所有的列插入新表:

SELECT *
INTO new_table_name [IN externaldatabase] 
FROM old_tablename

或者只把希望的列插入新表:

SELECT column_name(s)
INTO new_table_name [IN externaldatabase] 
FROM old_tablename

 

14.CREATE DATABASE 語句

CREATE DATABASE 用於創建數據庫。

SQL CREATE DATABASE 語法

CREATE DATABASE database_name

 

15.CREATE TABLE 語句

CREATE TABLE 語句用於創建數據庫中的表。

SQL CREATE TABLE 語法

CREATE TABLE 表名稱
(
列名稱1 數據類型,
列名稱2 數據類型,
列名稱3 數據類型,
....
)

 

16.SQL 約束

約束用於限制加入表的數據的類型。

可以在創建表時規定約束(通過 CREATE TABLE 語句),或者在表創建之後也可以(通過 ALTER TABLE 語句)。

我們將主要探討以下幾種約束:

  • NOT NULL
  • UNIQUE
  • PRIMARY KEY
  • FOREIGN KEY
  • CHECK
  • DEFAULT

 

17.SQL NOT NULL 約束

NOT NULL 約束強制列不接受 NULL 值。

NOT NULL 約束強制字段始終包含值。這意味着,如果不向字段添加值,就無法插入新記錄或者更新記錄。

下面的 SQL 語句強制 "Id_P" 列和 "LastName" 列不接受 NULL 值:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

 

18.SQL UNIQUE 約束

UNIQUE 約束唯一標識數據庫表中的每條記錄。

UNIQUE 和 PRIMARY KEY 約束均爲列或列集合提供了唯一性的保證。

PRIMARY KEY 擁有自動定義的 UNIQUE 約束。

請注意,每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。

例:CREATE TABLE Persons

      (Id_P int NOT NULL,

       LastName varchar(255) NOT NULL,

       FirstName varchar(255),

       Address varchar(255),

       City varchar(255),

       UNIQUE (Id_P))

 

19.SQL PRIMARY KEY 約束

PRIMARY KEY 約束唯一標識數據庫表中的每條記錄。

主鍵必須包含唯一的值。

主鍵列不能包含 NULL 值。

每個表都應該有一個主鍵,並且每個表只能有一個主鍵。

CREATE TABLE Persons

(   Id_P int NOT NULL,

    LastName varchar(255) NOT NULL,

    FirstName varchar(255),

    Address varchar(255),

    City varchar(255),

   PRIMARY KEY (Id_P)

)

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章