SQL 高級

2018-08-28 14:03 更新

SQL 高級

SELECT TOP, LIMIT, ROWNUM

SQL SELECT TOP, LIMIT, ROWNUM [TOP LIMIT ROWNUM]

SQL SELECT TOP

SELECT TOP 子句用于指定要返回的記錄數(shù)量。優(yōu)于千條數(shù)據(jù),大量數(shù)據(jù)查詢影響性能。

SQL Server / MS Access

SELECT TOP number|percent column_name(s) FROM table_name WHERE condition;

MySQL 和 Oracle 中的 SQL SELECT TOP

MYSQL

SELECT column_name(s) FROM table_name WHERE condition LIMIT number;

Oracle

SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;

SQL LIKE

WHERE子句中使用LIKE運算符來搜索列中的指定模式 "%"->百分號表示零個,一個或多個字符 "_"->下劃線表示單個字符 [注意]MS Access使用問號(?)百分號和下劃線可組合使用

LIKE

SELECT column1, column2, ... FROM table_name WHERE columnN LIKE pattern; [注意] OR AND 也可組合使用

SQL Wildcards[通配符]

MS Access和SQL Server中

[ charlist ] - 定義要匹配的字符的集合和范圍 [^ charlist ]或[!charlist ] - 定義不匹配字符的集合和范圍

SQL IN

SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...); [注意]允許WHERE子句中指定多個值。多個OR條件的簡寫。

SQL BETWEEN

BETWEEN操作符用于選取介于兩個值之間的數(shù)據(jù)范圍內的值;值可以是數(shù)字,文本或日期,BETWEEN包括開始和結束值。 SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; [注意]BETWEEN 選取介于兩個值之間可能存在[不包含邊界 包含邊界 半包含邊界]

SQL 通用數(shù)據(jù)類型

數(shù)據(jù)類型定義了存儲在列中的值的類型。 例如:CHARACTER(N) VARCHAR(N) ... [注意] 數(shù)據(jù)類型的定義在不同的數(shù)據(jù)庫中的定義不一定相同。

SQL 語句快速參考

關鍵詞:{ AND / OR ALTER TABLE AS (alias) BETWEEN CREATE DATABASE CREATE TABLE CREATE INDEX CREATE VIEW DELETE DROP DATABASE DROP INDEX DROP TABLE GROUP BY HAVING IN INSERT INTO INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN LIKE ORDER BY SELECT SELECT * SELECT DISTINCT SELECT INTO SELECT TOP TRUNCATE TABLE UNION UNION ALL UPDATE WHERE }

SQL JOIN[連接]

SQL JOIN 用于把來自兩個或多個表的行結合起來。 [內連接]INNER JOIN:如果表中有至少一個匹配,則返回行 [左連接]LEFT JOIN:即使右表中沒有匹配,也從左表返回所有的行 [右連接]RIGHT JOIN:即使左表中沒有匹配,也從右表返回所有的行 [全連接]FULL JOIN:只要其中一個表中存在匹配,則返回行

SQL INNER JOIN/JOIN[內連接]

SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name; [注]內部鏈接INNER JOIN關鍵字選擇兩個表中具有匹配值的記錄。

SQL LEFT JOIN/LEFT OUTER JOIN[左連接]

SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name; [注]SQL左鏈接LEFT JOIN關鍵字返回左表(表1)中的所有行,即使在右表(表2)中沒有匹配。如果在正確的表中沒有匹配,結果是NULL。

SQL RIGHT JOIN/RIGHT OUTER JOIN[右連接]

SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name; [注]SQL右鏈接 RIGHT JOIN 關鍵字返回右表(table2)的所有行,即使在左表(table1)上沒有匹配。如果左表沒有匹配,則結果為NULL。

SQL FULL OUTER JOIN[完整外鏈接]

SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name; [注]當左(表1)或右(表2)表記錄匹配時,F(xiàn)ULL OUTER JOIN關鍵字將返回所有記錄。返回所有結果集,導致數(shù)據(jù)量巨大。

SQL Self JOIN[自連接]

SELECT column_name(s) FROM table1 T1, table1 T2 WHERE condition; [注]自聯(lián)接是一種常規(guī)聯(lián)接,但表本身是連接的?!?lt;>” 可表示自連接。

SQL UNION[合并查詢]

UNION運算符用于組合兩個或更多SELECT語句的結果集。

SQL UNION

SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;

SQL UNION ALL

SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2; [限制]UNION中的每個SELECT語句必須具有相同的列數(shù),這些列也必須具有相似的數(shù)據(jù)類型,每個SELECT語句中的列也必須以相同的順序排列。 [注意]默認情況下,UNION 運算符選擇一個不同的值。如果允許重復值,請使用 UNION ALL。

SQL SELECT INTO

SELECT INTO 語句從一個表中復制數(shù)據(jù),然后將數(shù)據(jù)插入到另一個新表中。

AS 別名使用

[AS 別名]將使用SELECT語句中定義的列名和類型創(chuàng)建新表。您可以使用AS子句來應用一個新名稱。

空表建立

[創(chuàng)建空表]SELECT INTO 語句可以用于在另一種模式下創(chuàng)建一個新的空表。只需添加WHERE子句,使查詢返回時沒有數(shù)據(jù). SELECT * INTO newtable FROM table1 WHERE 1=0;

SQL INSERT INTO SELECT[從表中查詢復制數(shù)據(jù)至現(xiàn)有數(shù)據(jù)表中]

INSERT INTO table2 SELECT * FROM table1;

SQL 撤銷索引、表以及數(shù)據(jù)庫

DROP INDEX[刪除索引]

MS Access 的 DROP INDEX

DROP INDEX index_name ON table_name

MS SQL Server 的 DROP INDEX

DROP INDEX table_name.index_name DB2/Oracle 的 DROP INDEX DROP INDEX index_name

MySQL 的 DROP INDEX

ALTER TABLE table_name DROP INDEX index_name

DROP TABLE[刪除表]

DROP TABLE table_name

DROP DATABASE[刪除數(shù)據(jù)庫]

DROP DATABASE database_name

TRUNCATE TABLE[刪除表中的數(shù)據(jù),而不刪除表]

TRUNCATE TABLE table_name

SQL CREATE DATABASE[創(chuàng)建數(shù)據(jù)庫]

CREATE DATABASE dbname;

SQL CREATE TABLE[創(chuàng)建表單]

CREATE TABLE table_name ( column_name1 data_type(size), column_name2 data_type(size), column_name3 data_type(size), .... ); [注意]其中:參數(shù)說明 column_name 參數(shù)規(guī)定表中列的名稱。 data_type 參數(shù)規(guī)定列的數(shù)據(jù)類型(例如 varchar、integer、decimal、date 等等)。 size 參數(shù)規(guī)定表中列的最大長度。

SQL ALTER TABLE[修改表單結構]

添加列

ALTER TABLE table_name ADD column_name datatype

刪除列

ALTER TABLE table_name DROP COLUMN column_name [注意]某些數(shù)據(jù)庫不支持

SQL Server / MS Access

ALTER TABLE table_name ALTER COLUMN column_name datatype

My SQL / Oracle

ALTER TABLE table_name MODIFY COLUMN column_name datatype

SQL AUTO INCREMENT[自增量]

MySQL

ID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (ID)

SQL Server

ID int IDENTITY(1,1) PRIMARY KEY,

Access

ID Integer PRIMARY KEY AUTOINCREMENT,

Oracle[使用序列,才能自增]

CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10 [注意]nextval函數(shù) 需在添加記錄時使用

SQL CREATE VIEW、REPLACE VIEW、 DROP VIEW[視圖]

SQL CREATE VIEW 語句

CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition [注意]視圖總是顯示最新數(shù)據(jù)!每當用戶查詢視圖時,數(shù)據(jù)庫引擎就使用視圖的 SQL 語句重新構建數(shù)據(jù)

SQL CREATE OR REPLACE VIEW 語法

CREATE OR REPLACE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition

SQL DROP VIEW 語法

DROP VIEW view_name

SQL Server 和 MySQL 中的 Date 函數(shù)

MySQL Date 函數(shù)

NOW() 返回當前的日期和時間 CURDATE() 返回當前的日期 CURTIME() 返回當前的時間 DATE() 提取日期或日期/時間表達式的日期部分 EXTRACT() 返回日期/時間的單獨部分 DATE_ADD() 向日期添加指定的時間間隔 DATE_SUB() 從日期減去指定的時間間隔 DATEDIFF() 返回兩個日期之間的天數(shù) DATE_FORMAT() 用不同的格式顯示日期/時間

SQL Server Date 函數(shù)

GETDATE() 返回當前的日期和時間 DATEPART() 返回日期/時間的單獨部分 DATEADD() 在日期中添加或減去指定的時間間隔 DATEDIFF() 返回兩個日期之間的時間 CONVERT() 用不同的格式顯示日期/時間

SQL Date 數(shù)據(jù)類型

[注意]使用Date時,使用DATE可能會方便維護

MySQL 使用下列數(shù)據(jù)類型在數(shù)據(jù)庫中存儲日期或時間值:

DATE - 格式:YYYY-MM-DD DATETIME - 格式:YYYY-MM-DD HH:MM:SS TIMESTAMP - 格式:YYYY-MM-DD HH:MM:SS YEAR - 格式:YYYY 或 YY

SQL Server 使用下列數(shù)據(jù)類型在數(shù)據(jù)庫中存儲日期或時間值:

DATE - 格式:YYYY-MM-DD DATETIME - 格式:YYYY-MM-DD HH:MM:SS SMALLDATETIME - 格式:YYYY-MM-DD HH:MM:SS TIMESTAMP - 格式:唯一的數(shù)字

SQL NULL 值 - IS NULL 和 IS NOT NULL

SQL NULL 值

NULL 空值代表丟失的未知數(shù)據(jù)。 NULL 空值無法和space[空格]或0 比較.

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號