SQL語法語句總結(《SQL必知必會》讀書筆記)


一.SQL語句語法

ALTER TABLE

  ALTER TABLE 用來更新已存在表的結構。

ALTER TABLE tablename
(ADD|DROP     column     datatype     [NULL|NOT NULL]    [CONSTRAINTS],
...
 );
 

COMMIT

  COMMIT 用來將事物寫入數據庫。

COMMIT [TRANSACTION];

CREATE INDEX

  CREATE INDEX 用於在一個或多個列上創建索引。

CREATE INDEX indexname
ON    tableanme (column,...);

CREATE PROCEDURE

  CREATE PROCEDURE 用於創建存儲過程。

CREATE PROCEDURE
AS
SQL statement;

CREATE TABLE

  CREATE TABLE 用於創建新數據庫表。更新已經存在的表的結構,使用ALTER TABLE。

CREATE TABLE tablename
(
        column      datatype      [NULL|NOT  NULL]    [CONSTRAINS],   
        column      datatype      [NULL|NOT  NULL]    [CONSTRAINS],                

         ... 
 );         

CREATE VIEW

  CREATTE VIEW 用於創建一個或多個表上的新視圖。

CREATE    VIEW    viewname    AS
SELECT    columns, ...
FROM    tables, ...
[WHERE ...]
[GROUP    BY ...]
[HAVING ...];

DELETE

  DELETE 從表中刪除一行多多行。

DELETE    FROM    tablename
[WHERE ...];

DROP

  DROP 永久刪除數據庫對象(表,視圖,索引等)。

DROP    INDEX|PROCEDURE|TABLE|VIEW
indexname|procedurename|tablename|viewname;

INSERT

  INSERT 為表添加一行。

INSERT    INTO    tablename[(columns, ...)]
VALUES (values, ...);

INSERT SELECT

  INSERT SELECTT 將SELECT結果插入到一個表。

INSERT     INTO    tablename    [(columns, ...)]
SELECT    columns, ...    FROM    tablename, ...
[WHERE ...];

 

ROLLBACK

  ROLLBACK 用於撤銷一個事物塊。

ROLLBACK    [TO    savepointname];

SELECT

  SELECT 用於從一個或多個表(視圖)中檢索數據。

SELECT    columnname, ...
FROM    tablename, ...
[WHERE ...]
[UNION ...]
[GROUP    BY ...]
[HAVING ...]
[ORDER    BY ...];

UPDATE

  UPDATE 更新表中的一行或多行。

UPDATE    tablename
SET    columnname = value, ...
[WHERE ...];

 二.SQL常用語句

檢索數據

  SELECT語句后面跟要檢索的列,FROM后跟要檢索的表,WHERE用於過濾需要的條件。ORDER BY用於排序(DESC用於降序,ASC用於升序)。SELECT *表示檢索所有的列。

SELECT colunmname_1, columnname_2, clunmname_3, ...
FROM    tablename
[WHERE ...]
[ORDER BY ... ASC|DESC];

過濾數據

  WHERE用於過濾數據,后面可跟字句操作符,后跟 NOT 用於否定,后跟AND、OR和IN(完成與OR相同的功能)用於過濾多個條件,后跟LIKE用於通配符過濾(%表示任意字符出現任意次數,_表示匹配單個字符,[]用來指定一個字符集)。例如:

SELECT    prod_id, prod_name, prod_price
FROM    Products
WHERE  NOT  prod_price BETWEN 3.44 AND 5.88    AND    prod_name LIKE '[JM]%';

  下表為WHERE字句操作符:

  

拼接字段

  MySQL數據庫中用Concat來進行拼接字段。AS來取一個別名。RTRIM()來去掉字符串右邊的空格,LTRIM()來去掉字符串左邊的空格,TRIM()來去掉字符串左右兩邊的空格。例如:

SELECT    Concat( vend_name, '(' ,RTRIM(vend_country), ')' )
                AS    vend_title
FROM    Vendors
ORDER BY  vend_name;

 

數據函數

  常用數據的處理、匯總函數如下:

  例如:

SELECT    COUNT(*)    AS    num_cust
FROM    Customers;

 

子查詢

   子查詢,即嵌套在其他查詢中的查詢。例如:

SELECT    cust_name,cust_state,
                (SELECT    COUNT(*)
                    FROM        Orders
                    WHERE    Orders.cust_id=Customer.cust_id)    AS    orders 
FROM    Customers
ORDER    BY    cust_name;

 

  

聯結表

   SQL最強大的功能之一就是能在數據查詢的執行中聯結(join)表。聯結是利用SQL的SELECT能執行的最重要的操作,很好的理解聯結及其語法是學習SQL的極為重要的部分。創建聯結表非常簡單,指定要聯結的所有表及關聯它們的方式即可。例如:

SELECT    vend_name,prod_name,prod_price
FROM    Vendors, Products
WHERE    Vendors.vend_id=Products.vend_id;

  以上使用的聯結稱為內聯結,也稱為等值聯結,它基於兩個表之間的相等測試。下面的SELECT語句返回與前面例子完全相同的數據:

SELECT    vend_name,prod_name,prod_price
FROM    Vendor    INNER    JOIN    Products
ON    Vendor.vend_id=Products.vend_id;

 

組合查詢

   可用UNION操作符來組合多條SQL語句,在各條語句之間放上關鍵字UNION。UNION從查詢結果集中自動去除重復的行,如果顯示所有可用UNION  ALL表示返回所有的匹配行。例如:

SELECT cust_name, cust_contact,cust_email
FROM        Customers
WHERE    cust_state    IN('IL', 'IN' ,'MI')
UNION
SELECT cust_name, cust_contact,cust_email
FROM        Customers
WHERE    cust_name ='JACK';

 

插入數據

  可用INSERT操作符對標進行插入操作,后面的INTO是可選的(建議加上)。例如:

INSERT INTO Students(id,name,age,tel)
VALUES(
  '001',
  'JACK' ,  
  '21' ,
  '8612345';
)

  

三.主鍵與外鍵

  主鍵是一種特殊的約束,用來保證一列(或一組列)中的值是唯一的,而且永遠不改動。換句話說,表中的一列或多個列的唯一標識表中的每一行。這方便了直接或交互處理表中的行。沒有主鍵,要安全的進行UPDATE和DELETE特定行而不影響其他行會非常困難。一種定義主鍵的方法是創建它,例如下面聲明vend_id為主鍵:

CREATE    TABLE    Vendors
(
    vend_id    CHAR(10)    NOT NULL     PRIMARY  KEY,
    vend_name    CHAR(50)    NOT  NULL,
    vend_addr    CHAR(50)    NULL
);

  外鍵是表中的一列,其值必須列在另一表的主鍵中。外鍵是保證引用完整性的及其重要的部分。例如:

CREATE    TABLE    Orders
(
    order_num    INTEGER    NOT  NULL    PRIMARY    KEY,
    order_data    DATATIME    NOT  NULL,
    cust_id    CHAR(10)    NOT  NULL    REFERENCES    Customers(cust_id)
);

  上面語句定義使用了REFERENCES關鍵字,它表示cust_id中的任何都必須是Customers表的cust_id中的值。

  相同的工作也可以在ALTER  TABLE語句中用CONSTRAINT語法來完成:

ALTER    TABLE    Orders
ADD    CONSTRAINT
FROEIGN    KEY    (cust_id)    REFERENCES    Customers    (cust_id)

四.數據類型

                                  表4.1 字符串數字類型

  

表4.2 數值數據類型

 

表4.3 日期和時間數據類型

表4.4 二進制數據類型

 

  以上是SQL相關的常用語法及語句結構,詳情可查看SQL及DBMS相關文檔。

 

參考文獻

《SQL必知必會》,Ben Forta ,人民郵電出版社。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM