SQL 高級(jí)

2018-08-28 14:03 更新

SQL 高級(jí)

SELECT TOP, LIMIT, ROWNUM

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

SQL SELECT TOP

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

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運(yùn)算符來(lái)搜索列中的指定模式 "%"->百分號(hào)表示零個(gè),一個(gè)或多個(gè)字符 "_"->下劃線(xiàn)表示單個(gè)字符 [注意]MS Access使用問(wèn)號(hào)(?)百分號(hào)和下劃線(xiàn)可組合使用

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子句中指定多個(gè)值。多個(gè)OR條件的簡(jiǎn)寫(xiě)。

SQL BETWEEN

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

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

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

SQL 語(yǔ)句快速參考

關(guān)鍵詞:{ 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 用于把來(lái)自?xún)蓚€(gè)或多個(gè)表的行結(jié)合起來(lái)。 [內(nèi)連接]INNER JOIN:如果表中有至少一個(gè)匹配,則返回行 [左連接]LEFT JOIN:即使右表中沒(méi)有匹配,也從左表返回所有的行 [右連接]RIGHT JOIN:即使左表中沒(méi)有匹配,也從右表返回所有的行 [全連接]FULL JOIN:只要其中一個(gè)表中存在匹配,則返回行

SQL INNER JOIN/JOIN[內(nèi)連接]

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

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關(guān)鍵字返回左表(表1)中的所有行,即使在右表(表2)中沒(méi)有匹配。如果在正確的表中沒(méi)有匹配,結(jié)果是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 關(guān)鍵字返回右表(table2)的所有行,即使在左表(table1)上沒(méi)有匹配。如果左表沒(méi)有匹配,則結(jié)果為NULL。

SQL FULL OUTER JOIN[完整外鏈接]

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

SQL Self JOIN[自連接]

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

SQL UNION[合并查詢(xún)]

UNION運(yùn)算符用于組合兩個(gè)或更多SELECT語(yǔ)句的結(jié)果集。

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中的每個(gè)SELECT語(yǔ)句必須具有相同的列數(shù),這些列也必須具有相似的數(shù)據(jù)類(lèi)型,每個(gè)SELECT語(yǔ)句中的列也必須以相同的順序排列。 [注意]默認(rèn)情況下,UNION 運(yùn)算符選擇一個(gè)不同的值。如果允許重復(fù)值,請(qǐng)使用 UNION ALL。

SQL SELECT INTO

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

AS 別名使用

[AS 別名]將使用SELECT語(yǔ)句中定義的列名和類(lèi)型創(chuàng)建新表。您可以使用AS子句來(lái)應(yīng)用一個(gè)新名稱(chēng)。

空表建立

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

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

INSERT INTO table2 SELECT * FROM table1;

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

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ù)庫(kù)]

DROP DATABASE database_name

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

TRUNCATE TABLE table_name

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

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ù)說(shuō)明 column_name 參數(shù)規(guī)定表中列的名稱(chēng)。 data_type 參數(shù)規(guī)定列的數(shù)據(jù)類(lèi)型(例如 varchar、integer、decimal、date 等等)。 size 參數(shù)規(guī)定表中列的最大長(zhǎng)度。

SQL ALTER TABLE[修改表單結(jié)構(gòu)]

添加列

ALTER TABLE table_name ADD column_name datatype

刪除列

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

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ù) 需在添加記錄時(shí)使用

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

SQL CREATE VIEW 語(yǔ)句

CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition [注意]視圖總是顯示最新數(shù)據(jù)!每當(dāng)用戶(hù)查詢(xún)視圖時(shí),數(shù)據(jù)庫(kù)引擎就使用視圖的 SQL 語(yǔ)句重新構(gòu)建數(shù)據(jù)

SQL CREATE OR REPLACE VIEW 語(yǔ)法

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

SQL DROP VIEW 語(yǔ)法

DROP VIEW view_name

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

MySQL Date 函數(shù)

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

SQL Server Date 函數(shù)

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

SQL Date 數(shù)據(jù)類(lèi)型

[注意]使用Date時(shí),使用DATE可能會(huì)方便維護(hù)

MySQL 使用下列數(shù)據(jù)類(lèi)型在數(shù)據(jù)庫(kù)中存儲(chǔ)日期或時(shí)間值:

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ù)類(lèi)型在數(shù)據(jù)庫(kù)中存儲(chǔ)日期或時(shí)間值:

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 空值無(wú)法和space[空格]或0 比較.

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)