從功能上劃分官扣,SQL 語言可以分為DDL(Data Definition Language),DML(Data Manipulation Language)和DCL(Data Control Language)三大類厅贪。
1.DDL數(shù)據(jù)定義
用于定義和管理 SQL 數(shù)據(jù)庫中的所有對(duì)象的語言 :
CREATE---創(chuàng)建表
ALTER---修改表,在已有的表中添加、修改或刪除列堤结。
DROP---刪除表
#CREATE---創(chuàng)建表
CREATE TABLE Persons
(
Name varchar(255),
ID int,
Grade varchar(255)
)
#ALTER---修改表
#增加表中列
ALTER TABLE table_name
ADD column_name datatype
#刪除表中的列
ALTER TABLE table_name
DROP COLUMN column_name
#改變表中列的數(shù)據(jù)類型
ALTER TABLE table_name
ALTER COLUMN column_name datatype
#DROP---刪除表
DROP TABLE Customer;
2.DML 數(shù)據(jù)操作
SQL中處理數(shù)據(jù)等操作統(tǒng)稱為數(shù)據(jù)操縱語言 :
INSERT---數(shù)據(jù)的插入
DELETE---數(shù)據(jù)的刪除
UPDATE---數(shù)據(jù)的修改
SELECT---數(shù)據(jù)的查詢
數(shù)據(jù)查詢SELECT
#從數(shù)據(jù)庫中提取數(shù)據(jù)
SELECT CustomerName,City FROM Customers;
SELECT * FROM Customers;
select distinct
#在表中,一個(gè)列可能會(huì)包含多個(gè)重復(fù)值鸭丛,有時(shí)您也許希望僅僅列出不同(distinct)的值竞穷。
SELECT DISTINCT column_name,column_name FROM table_name;
#where 條件子句
#用于提取那些滿足指定標(biāo)準(zhǔn)的記錄。
SELECT * FROM Customers WHERE Country='Mexico';
#limit規(guī)定要返回的記錄的數(shù)目
SELECT column_name(s)
FROM table_name
LIMIT number;
數(shù)據(jù)插入INSERT
INSERT INTO table_name VALUES (value1, value2,....)
#指定所要插入數(shù)據(jù)的列:
INSERT INTO table_name (column_name1, column_name2,...) VALUES (value1, value2,....)
數(shù)據(jù)更新UPDATE
UPDATE table_name SET column_name = newvalue WHERE column_name = value
#更新某一行中的一個(gè)列
UPDATE Person SET column =newvalue WHERE row = value
數(shù)據(jù)刪除DELETE
#刪除表中的行鳞溉。
DELETE FROM table_name WHERE rowname = value
#刪除所有行
DELETE FROM table_name
#或者:
DELETE * FROM table_name
復(fù)雜語句
AND/OR
SELECT column_name
FROM table_name
WHERE "簡(jiǎn)單條件"
{[AND|OR] "簡(jiǎn)單條件"}+;
#{}+ 代表{}之內(nèi)的情況會(huì)發(fā)生一或多次瘾带。在這里的意思就是 AND 加簡(jiǎn)單條件及 OR 加簡(jiǎn)單條件的情況可以發(fā)生一或多次。另外熟菲,我們可以用 ( ) 來代表?xiàng)l件的先后次序看政。
LIKE
# LIKE 操作符用于在where子句中搜索列中的指定模式。
#選取 City 以字母 "ber" 開始的所有客戶:
SELECT * FROM Customers
WHERE City LIKE 'ber%';
#選取 City 以一個(gè)任意字符開始科盛,然后是 "erlin" 的所有客戶:
SELECT * FROM Customers
WHERE City LIKE '_erlin';
#選取 City 以 "b"帽衙、"s" 或 "p" 開始的所有客戶:
SELECT * FROM Customers
WHERE City LIKE '[bsp]%';
#選取 City 不以 "b"、"s" 或 "p" 開始的所有客戶:
SELECT * FROM Customers
WHERE City LIKE '[!bsp]%';
IN
#IN 操作符允許在 WHERE 子句中規(guī)定多個(gè)值贞绵。
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
BETWEEN
# 在 WHERE 子句中厉萝,BETWEEN 操作符用于選取介于兩個(gè)值之間的數(shù)據(jù)范圍內(nèi)的值,這些值可以是數(shù)值榨崩、文本或者日期谴垫。
#選取價(jià)格不再 10 和 20 之間的所有產(chǎn)品:
SELECT * FROM Products
WHERE Price NOT BETWEEN 10 AND 20;
ORDER BY
#這可能是由小往大 (ascending) 或是由大往小 (descending)。在這種情況下母蛛,我們就可以運(yùn)用 ORDER BY這個(gè)指令來達(dá)到我們的目的翩剪。
#ORDER BY 的語法如下:
SELECT "欄位名"
FROM "表格名"
[WHERE "條件"]
ORDER BY "欄位名" [ASC, DESC];**
ORDER BY "欄位一" [ASC, DESC], "欄位二" [ASC, DESC]**
SELECT Store_Name, Sales, Txn_Date
FROM Store_Information
ORDER BY Sales DESC;
3.DCL數(shù)據(jù)控制
用來授予或回收訪問數(shù)據(jù)庫的某種特權(quán),并控制 數(shù)據(jù)庫操縱事務(wù)發(fā)生的時(shí)間及效果彩郊,對(duì)數(shù)據(jù)庫實(shí)行監(jiān)視等:
GRANT--- 授權(quán)
ROLLBACK---回滾
COMMIT--- 提交
提交數(shù)據(jù)有三種類型:顯式提交前弯、隱式提交及自動(dòng)提交蚪缀。
(1) 顯式提交 用 COMMIT 命令直接完成的提交為顯式提交。
(2) 隱式提交 用 SQL 命令間接完成的提交為隱式提交恕出。這些命令是: ALTER 询枚, AUDIT , COMMENT 浙巫, CONNECT 金蜀, CREATE , DISCONNECT 的畴, DROP 渊抄, EXIT , GRANT 丧裁, NOAUDIT 护桦, QUIT , REVOKE 煎娇, RENAME 嘶炭。
(3) 自動(dòng)提交 若把 AUTOCOMMIT 設(shè)置為 ON ,則在插入逊桦、修改、刪除語句執(zhí)行后抑进,系統(tǒng)將自動(dòng)進(jìn)行提交强经,這就是自動(dòng)提交。其格式為: SQL>SET AUTOCOMMIT ON 寺渗;
數(shù)據(jù)運(yùn)算
既然數(shù)據(jù)庫中有許多資料都是已數(shù)字的型態(tài)存在匿情,一個(gè)很重要的用途就是要能夠?qū)@些數(shù)字做一些運(yùn)算,例如將它們總合起來信殊,或是找出它們的平均值炬称。SQL 有提供一些這一類的函數(shù)。它們是:
AVG (平均)
COUNT (計(jì)數(shù))
MAX (最大值)
MIN (最小值)
SUM (總合)
運(yùn)用函數(shù)的語法是:
SELECT "函數(shù)名"("欄位名")
FROM "表格名";
SELECT COUNT("欄位名")
FROM "表格名";
#HAVING 的語法如下:
SELECT "欄位1", SUM("欄位2")
FROM "表格名"
GROUP BY "欄位1"
HAVING (函數(shù)條件);
#UNION指令的目的是將兩個(gè) SQL 語句的結(jié)果合并起來涡拘。從這個(gè)角度來看玲躯, UNION跟 JOIN有些許類似,因?yàn)檫@兩個(gè)指令都可以由多個(gè)表格中擷取資料鳄乏。 UNION 的一個(gè)限制是兩個(gè) SQL 語句所產(chǎn)生的欄位需要是同樣的資料種類跷车。
UNION 的語法如下:
[SQL 語句 1]
UNION
[SQL 語句 2];