掌握SQL四條最基本的數據操作語句:Insert,Select,Update和Delete。
練掌握SQL是資料庫用戶的寶貴財 富。在本文中,我們將引導你掌握四條最基本的數據操作語句—SQL的核心功能—來依次介紹比較操作符、選擇斷言以及三值邏輯。當你完成這些學習後,顯然你已經開始算是精通SQL了。
在我們開始之前,先使用CREATE TABLE語句來創建一個表(如圖1所示)。DDL語句對資料庫對象如表、列和視進行定義。它們並不對表中的行進行處理,這是因為DDL語句並不處理資料庫中實際的數據。這些工作由另一類SQL語句—數據操作語言(DML)語句進行處理。
SQL中有四種基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由於這是大多數SQL用戶經常用到的,我們有必要在此對它們進行一一說明。在圖1中我們給出了一個名為EMPLOYEES的表。其中的每一行對應一個特定的雇員記錄。請熟悉這張表,我們在後面的例子中將要用到它。
INSERT語句
用戶可以用INSERT語句將一行記錄插入到指定的一個表中。例如,要將雇員John Smith的記錄插入到本例的表中,可以使用如下語句:
INSERT INTO EMPLOYEES VALUES
('Smith','John','1980-06-10',
'Los Angles',16,45000);
通過這樣的INSERT語句,系統將試著將這些值填入到相應的列中。這些列按照我們創建表時定義的順序排列。在本例中,第一個值「Smith」將填到第一個列LAST_NAME中;第二個值「John」將填到第二列FIRST_NAME中……以此類推。
我們說過系統會「試著」將值填入,除了執行規則之外它還要進行類型檢查。如果類型不符(如將一個字元串填入到類型為數字的列中),系統將拒絕這一次操作並返回一個錯誤信息。
如果SQL拒絕了你所填入的一列值,語句中其他各列的值也不會填入。這是因為SQL提供對事務的支持。一次事務將資料庫從一種一致性轉移到另一種一致性。如果事務的某一部分失敗,則整個事務都會失敗,系統將會被恢復(或稱之為回退)到此事務之前的狀態。
回到原來的INSERT的例子,請注意所有的整形十進制數都不需要用單引號引起來,而字元串和日期類型的值都要用單引號來區別。為了增加可讀性而在數字間插入逗號將會引起錯誤。記住,在SQL中逗號是元素的分隔符。
同樣要注意輸入文字值時要使用單引號。雙引號用來封裝限界標識符。
對於日期類型,我們必須使用SQL標准日期格式(yyyy-mm-dd),但是在系統中可以進行定義,以接受其他的格式。當然,2000年臨近,請你最好還是使用四位來表示年份。
既然你已經理解了INSERT語句是怎樣工作的了,讓我們轉到EMPLOYEES表中的其他部分:
INSERT INTO EMPLOYEES VALUES
('Bunyan','Paul','1970-07-04',
'Boston',12,70000);
INSERT INTO EMPLOYEES VALUES
('John','Adams','1992-01-21',
'Boston',20,100000);
INSERT INTO EMPLOYEES VALUES
('Smith','Pocahontas','1976-04-06',
'Los Angles',12,100000);
INSERT INTO EMPLOYEES VALUES
('Smith','Bessie','1940-05-02',
'Boston',5,200000);
INSERT INTO EMPLOYEES VALUES
('Jones','Davy','1970-10-10',
'Boston',8,45000);
INSERT INTO EMPLOYEES VALUES
('Jones','Indiana','1992-02-01',
'Chicago',NULL,NULL);
在最後一項中,我們不知道Jones先生的工薪級別和年薪,所以我們輸入NULL(不要引號)。NULL是SQL中的一種特殊情況,我們以後將進行詳細的討論。現在我們只需認為NULL表示一種未知的值。
有時,像我們剛才所討論的情況,我們可能希望對某一些而不是全部的列進行賦值。除了對要省略的列輸入NULL外,還可以採用另外一種INSERT語句,如下:
INSERT INTO EMPLOYEES(
FIRST_NAME, LAST_NAME,
HIRE_DATE, BRANCH_OFFICE)
VALUE(
'Indiana','Jones',
'1992-02-01','Indianapolis');
這樣,我們先在表名之後列出一系列列名。未列出的列中將自動填入預設值,如果沒有設置預設值則填入NULL。請注意我們改變了列的順序,而值的順序要對應新的列的順序。如果該語句中省略了FIRST_NAME和LAST_NAME項(這兩項規定不能為空),SQL操作將失敗。
讓我們來看一看上述INSERT語句的語法圖:
INSERT INTO table
[(column { ,column})]
VALUES
(columnvalue [{,columnvalue}]);
和前一篇文章中一樣,我們用方括弧來表示可選項,大括弧表示可以重復任意次數的項(不能在實際的SQL語句中使用這些特殊字元)。VALUE子句和可選的列名列表中必須使用圓括弧。
SELECT語句
SELECT語句可以從一個或多個表中選取特定的行和列。因為查詢和檢索數據是資料庫管理中最重要的功能,所以SELECT語句在SQL中是工作量最大的部分。實際上,僅僅是訪問資料庫來分析數據並生成報表的人可以對其他SQL語句一竅不通。
SELECT語句的結果通常是生成另外一個表。在執行過程中系統根據用戶的標准從資料庫中選出匹配的行和列,並將結果放到臨時的表中。在直接SQL(direct SQL)中,它將結果顯示在終端的顯示屏上,或者將結果送到列印機或文件中。也可以結合其他SQL語句來將結果放到一個已知名稱的表中。
SELECT語句功能強大。雖然表面上看來它只用來完成本文第一部分中提到的關系代數運算「選擇」(或稱「限制」),但實際上它也可以完成其他兩種關系運算—「投影」和「連接」,SELECT語句還可以完成聚合計算並對數據進行排序。
SELECT語句最簡單的語法如下:
SELECT columns FROM tables;
當我們以這種形式執行一條SELECT語句時,系統返回由所選擇的列以及用戶選擇的表中所有指定的行組成的一個結果表。這就是實現關系投影運算的一個形式。
讓我們看一下使用圖1中EMPLOYEES表的一些例子(這個表是我們以後所有SELECT語句實例都要使用的。而我們在圖2和圖3中給出了查詢的實際結果。我們將在其他的例子中使用這些結果)。
假設你想查看雇員工作部門的列表。那下面就是你所需要編寫的SQL查詢:
SELECT BRANCH_OFFICE FROM EMPLOYEES;
以上SELECT語句的執行將產生如圖2中表2所示的結果。
由於我們在SELECT語句中只指定了一個列,所以我們的結果表中也只有一個列。注意結果表中具有重復的行,這是因為有多個雇員在同一部門工作(記住SQL從所選的所有行中將值返回)。要消除結果中的重復行,只要在SELECT語句中加上DISTINCT子句:
SELECT DISTINCT BRANCH_OFFICE
FROM EMPLOYEES;
這次查詢的結果如表3所示。
現在已經消除了重復的行,但結果並不是按照順序排列的。如果你希望以字母表順序將結果列出又該怎麼做呢?只要使用ORDER BY子句就可以按照升序或降序來排列結果:
SELECT DISTINCT BRANCH_OFFICE
FROM EMPLOYEES
ORDER BY BRANCH_OFFICE ASC;
這一查詢的結果如表4所示。請注意在ORDER BY之後是如何放置列名BRANCH _OFFICE的,這就是我們想要對其進行排序的列。為什麼即使是結果表中只有一個列時我們也必須指出列名呢?這是因為我們還能夠按照表中其他列進行排序,即使它們並不顯示出來。列名BRANCH_ OFFICE之後的關鍵字ASC表示按照升序排列。如果你希望以降序排列,那麼可以用關鍵字DESC。
同樣我們應該指出ORDER BY子句只將臨時表中的結果進行排序;並不影響原來的表。
假設我們希望得到按部門排序並從工資最高的雇員到工資最低的雇員排列的列表。除了工資括弧中的內容,我們還希望看到按照聘用時間從最近聘用的雇員開始列出的列表。以下是你將要用到的語句:
SELECT BRANCH_OFFICE,FIRST_NAME,
LAST_NAME,SALARY,HIRE_DATE
FROM EMPLOYEES
ORDER BY SALARY DESC,
HIRE_DATE DESC;
這里我們進行了多列的選擇和排序。排序的優先順序由語句中的列名順序所決定。SQL將先對列出的第一個列進行排序。如果在第一個列中出現了重復的行時,這些行將被按照第二列進行排序,如果在第二列中又出現了重復的行時,這些行又將被按照第三列進行排序……如此類推。這次查詢的結果如表5所示。
將一個很長的表中的所有列名寫出來是一件相當麻煩的事,所以SQL允許在選擇表中所有的列時使用*號:
SELECT * FROM EMPLOYEES;
這次查詢返回整個EMPLOYEES表,如表1所示。
下面我們對開始時給出的SELECT語句的語法進行一下更新(豎直線表示一個可選項,允許在其中選擇一項。):
SELECT [DISTINCT]
(column [{, columns}])| *
FROM table [ {, table}]
[ORDER BY column [ASC] | DESC
[ {, column [ASC] | DESC }]];
定義選擇標准
在我們目前所介紹的SELECT語句中,我們對結果表中的列作出了選擇但返回的是表中所有的行。讓我們看一下如何對SELECT語句進行限制使得它只返回希望得到的行:
SELECT columns FROM tables [WHERE predicates];
WHERE子句對條件進行了設置,只有滿足條件的行才被包括到結果表中。這些條件由斷言(predicate)進行指定(斷言指出了關於某件事情的一種可能的事實)。如果該斷言對於某個給定的行成立,該行將被包括到結果表中,否則該行被忽略。在SQL語句中斷言通常通過比較來表示。例如,假如你需要查詢所有姓為Jones的職員,則可以使用以下SELECT語句:
SELECT * FROM EMPLOYEES
WHERE LAST_NAME = 'Jones';
LAST_NAME = 'Jones'部分就是斷言。在執行該語句時,SQL將每一行的LAST_NAME列與「Jones」進行比較。如果某一職員的姓為「Jones」,即斷言成立,該職員的信息將被包括到結果表中(見表6)。
使用最多的六種比較
我們上例中的斷言包括一種基於「等值」的比較(LAST_NAME = 'Jones'),但是SQL斷言還可以包含其他幾種類型的比較。其中最常用的為:
等於 =
不等於 <>
小於 <
大於 >
小於或等於 <=
大於或等於 >=
下面給出了不是基於等值比較的一個例子:
SELECT * FROM EMPLOYEES
WHERE SALARY > 50000;
㈡ SQL語言包括哪三種類型,每種類型又包括哪些語句
SQL包含四種程序設計語言類別的語句:數據定義語言(DDL)、數據操作語言(DML)、數據控制語言(DCL)和事物控制語言(TCL)。
1、Data Definition Language(DDL) :CREATE DATABASE - 創建新資料庫 ;ALTER DATABASE - 修改資料庫;CREATE TABLE - 創建新表;ALTER TABLE - 變更(改變)資料庫表;DROP TABLE - 刪除表;CREATE INDEX - 創建索引(搜索鍵);DROP INDEX - 刪除索引。
2、Data Manipulation Language(DML) :SELECT - 從資料庫表中獲取數據;UPDATE - 更新資料庫表中的數據;DELETE - 從資料庫表中刪除數據;INSERT INTO - 向資料庫表中插入數據。
3、Data Control Language(DCL) :GRANT - 授權;REVOKE - 撤銷授權;DENY - 拒絕授權。
4、Transaction Control Language(TCL) :SAVEPOINT - 設置保存點;ROLLBACK - 回滾;COMMIT - 提交。
(2)sql語言的四類核心語句是什麼擴展閱讀:
SQL功能極強,但由於設計巧妙,語言十分簡潔,完成數據定義、數據操縱、數據控制的核心功能只用了9個動詞: CREATE、 ALTER、DROP、 SELECT、 INSERT、 UPDATE、 DELETE、GRANT、 REVOKE。且SQL語言語法簡單,接近英語口語,因此容易學習,也容易使用。
SQL採用集合操作方式,不僅查找結果可以是元組的集合,而且一次插入、刪除、更新操作的對象也可以是元組的集合。
㈢ SQL的四個組成部分,到底是怎麼分的
(1)數據定義語言,即SQL DDL,用於定義SQL模式、基本表、視圖、索引等結構。
(2)數據操縱語言,即SQL DML。數據操縱分成數據查詢和數據更新兩類。
(3)數據查詢語言,即SQL DQL。
(4)數據控制語言,即SQL DCL,這一部分包括對基本表和視圖的授權、完整性規則的描述、事務控制等內容。
結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的介面。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。
(3)sql語言的四類核心語句是什麼擴展閱讀:
SQL可以獨立完成資料庫生命周期中的全部活動,包括定義關系模式、錄入數據、建立資料庫、査詢、更新、維護、資料庫重構、資料庫安全性控制等一系列操作,這就為資料庫應用系統開發提供了良好的環境,在資料庫投入運行後,還可根據需要隨時逐步修改模式,且不影響資料庫的運行,從而使系統具有良好的可擴充性。
㈣ SQL語言的核心6個命令分別是什麼
SELECT / UPDATE / DELETE / CREATE / ALTER / DROP
㈤ 資料庫四大SQL語句的基本語法是怎麼寫的啊 在線等哈~ 謝謝那位大神幫幫忙!
一、增(INSERT向資料庫插入一條記錄)
INSERT INTO 表名(列名1,列名2,列名3……)VALUES('值1,'值2','值3'……)
例子:
INSERT INTO muser(id,name,pwd)
VALUES('1','admin','admin')
注意:列的個數必須和VALUES子句中給出的值的個數相同;數據類型必須和類的數據類型對應。
二、刪(DELETE從表中刪除數據)
DELETE語句用來刪除數據,可以一次刪除一行,也可以刪除多行。
DELETE語句的基本語法:
DELETE FROM 表名 WHERE 條件
例子:
DELETE FROM muser WHERE id='1' and pwd='admin'
三、改(UPDATE修改表中的數據)
UPDATE語句用來修改已經存在的數據,UPDATE可影響一行也可以影響多行,甚至可以修改全部的數據。
UPDATE語句的基本語法:
UPDATE 表名 SET
列名='需要修改成為的數據'
WHERE 修改條件
例子:
UPDATE muser SET
pwd='admin888'
WHERE name='admin' AND pwd='admin'
四、查(使用SELECT查詢資料庫)
SELECT語句主要用來檢索數據
SELECT語句的基本語法:
SELECT 列名
FROM 表名
WHERE 檢索的條件
例子:
SELECT * FROM news WHERE class='國內新聞'
在列名中使用(*)表示從FROM表中指定的返回所有列。
㈥ SQL最基本的語句是哪些
掌握SQL四條最基本的數據操作語句:Insert,Select,Update和Delete。練掌握SQL是資料庫用戶的寶貴財 富。在本文中,我們將引導你掌握四條最基本的數據操作語句?SQL的核心功能?來依次介紹比較操作符、選擇斷言以及三值邏輯。當你完成這些學習後,顯然你已經開始算是精通SQL了。在我們開始之前,先使用CREATE TABLE語句來創建一個表(如圖1所示)。DDL語句對資料庫對象如表、列和視進行定義。它們並不對表中的行進行處理,這是因為DDL語句並不處理資料庫中實際的數據。這些工作由另一類SQL語句?數據操作語言(DML)語句進行處理。SQL中有四種基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由於這是大多數SQL用戶經常用到的,我們有必要在此對它們進行一一說明。在圖1中我們給出了一個名為EMPLOYEES的表。其中的每一行對應一個特定的雇員記錄。請熟悉這張表,我們在後面的例子中將要用到它。INSERT語句用戶可以用INSERT語句將一行記錄插入到指定的一個表中。例如,要將雇員John Smith的記錄插入到本例的表中,可以使用如下語句:INSERT INTO EMPLOYEES VALUES('Smith','John','1980-06-10','Los Angles',16,45000);通過這樣的INSERT語句,系統將試著將這些值填入到相應的列中。這些列按照我們創建表時定義的順序排列。在本例中,第一個值「Smith」將填到第一個列LAST_NAME中;第二個值「John」將填到第二列FIRST_NAME中……以此類推。我們說過系統會「試著」將值填入,除了執行規則之外它還要進行類型檢查。如果類型不符(如將一個字元串填入到類型為數字的列中),系統將拒絕這一次操作並返回一個錯誤信息。如果SQL拒絕了你所填入的一列值,語句中其他各列的值也不會填入。這是因為SQL提供對事務的支持。一次事務將資料庫從一種一致性轉移到另一種一致性。如果事務的某一部分失敗,則整個事務都會失敗,系統將會被恢復(或稱之為回退)到此事務之前的狀態。回到原來的INSERT的例子,請注意所有的整形十進制數都不需要用單引號引起來,而字元串和日期類型的值都要用單引號來區別。為了增加可讀性而在數字間插入逗號將會引起錯誤。記住,在SQL中逗號是元素的分隔符。同樣要注意輸入文字值時要使用單引號。雙引號用來封裝限界標識符。對於日期類型,我們必須使用SQL標准日期格式(yyyy-mm-dd),但是在系統中可以進行定義,以接受其他的格式。當然,2000年臨近,請你最好還是使用四位來表示年份。既然你已經理解了INSERT語句是怎樣工作的了,讓我們轉到EMPLOYEES表中的其他部分:INSERT INTO EMPLOYEES VALUES('Bunyan','Paul','1970-07-04','Boston',12,70000);INSERT INTO EMPLOYEES VALUES('John','Adams','1992-01-21','Boston',20,100000);INSERT INTO EMPLOYEES VALUES('Smith','Pocahontas','1976-04-06','Los Angles',12,100000);INSERT INTO EMPLOYEES VALUES('Smith','Bessie','1940-05-02','Boston',5,200000);INSERT INTO EMPLOYEES VALUES('Jones','Davy','1970-10-10','Boston',8,45000);INSERT INTO EMPLOYEES VALUES('Jones','Indiana','1992-02-01','Chicago',NULL,NULL);在最後一項中,我們不知道Jones先生的工薪級別和年薪,所以我們輸入NULL(不要引號)。NULL是SQL中的一種特殊情況,我們以後將進行詳細的討論。現在我們只需認為NULL表示一種未知的值。有時,像我們剛才所討論的情況,我們可能希望對某一些而不是全部的列進行賦值。除了對要省略的列輸入NULL外,還可以採用另外一種INSERT語句,如下:INSERT INTO EMPLOYEES(FIRST_NAME, LAST_NAME,HIRE_DATE, BRANCH_OFFICE)VALUE('Indiana','Jones','1992-02-01','Indianapolis');這樣,我們先在表名之後列出一系列列名。未列出的列中將自動填入預設值,如果沒有設置預設值則填入NULL。請注意我們改變了列的順序,而值的順序要對應新的列的順序。如果該語句中省略了FIRST_NAME和LAST_NAME項(這兩項規定不能為空),SQL操作將失敗。讓我們來看一看上述INSERT語句的語法圖:INSERT INTO table[(column { ,column})]VALUES(columnvalue [{,columnvalue}]);和前一篇文章中一樣,我們用方括弧來表示可選項,大括弧表示可以重復任意次數的項(不能在實際的SQL語句中使用這些特殊字元)。VALUE子句和可選的列名列表中必須使用圓括弧。SELECT語句SELECT語句可以從一個或多個表中選取特定的行和列。因為查詢和檢索數據是資料庫管理中最重要的功能,所以SELECT語句在SQL中是工作量最大的部分。實際上,僅僅是訪問資料庫來分析數據並生成報表的人可以對其他SQL語句一竅不通。SELECT語句的結果通常是生成另外一個表。在執行過程中系統根據用戶的標准從資料庫中選出匹配的行和列,並將結果放到臨時的表中。在直接SQL(direct SQL)中,它將結果顯示在終端的顯示屏上,或者將結果送到列印機或文件中。也可以結合其他SQL語句來將結果放到一個已知名稱的表中。SELECT語句功能強大。雖然表面上看來它只用來完成本文第一部分中提到的關系代數運算「選擇」(或稱「限制」),但實際上它也可以完成其他兩種關系運算?「投影」和「連接」,SELECT語句還可以完成聚合計算並對數據進行排序。SELECT語句最簡單的語法如下:SELECT columns FROM tables;當我們以這種形式執行一條SELECT語句時,系統返回由所選擇的列以及用戶選擇的表中所有指定的行組成的一個結果表。這就是實現關系投影運算的一個形式。讓我們看一下使用圖1中EMPLOYEES表的一些例子(這個表是我們以後所有SELECT語句實例都要使用的。而我們在圖2和圖3中給出了查詢的實際結果。我們將在其他的例子中使用這些結果)。假設你想查看雇員工作部門的列表。那下面就是你所需要編寫的SQL查詢:SELECT BRANCH_OFFICE FROM EMPLOYEES;以上SELECT語句的執行將產生如圖2中表2所示的結果。由於我們在SELECT語句中只指定了一個列,所以我們的結果表中也只有一個列。注意結果表中具有重復的行,這是因為有多個雇員在同一部門工作(記住SQL從所選的所有行中將值返回)。要消除結果中的重復行,只要在SELECT語句中加上DISTINCT子句:SELECT DISTINCT BRANCH_OFFICEFROM EMPLOYEES;這次查詢的結果如表3所示。現在已經消除了重復的行,但結果並不是按照順序排列的。如果你希望以字母表順序將結果列出又該怎麼做呢?只要使用ORDER BY子句就可以按照升序或降序來排列結果:SELECT DISTINCT BRANCH_OFFICEFROM EMPLOYEESORDER BY BRANCH_OFFICE ASC;這一查詢的結果如表4所示。請注意在ORDER BY之後是如何放置列名BRANCH _OFFICE的,這就是我們想要對其進行排序的列。為什麼即使是結果表中只有一個列時我們也必須指出列名呢?這是因為我們還能夠按照表中其他列進行排序,即使它們並不顯示出來。列名BRANCH_ OFFICE之後的關鍵字ASC表示按照升序排列。如果你希望以降序排列,那麼可以用關鍵字DESC。同樣我們應該指出ORDER BY子句只將臨時表中的結果進行排序;並不影響原來的表。假設我們希望得到按部門排序並從工資最高的雇員到工資最低的雇員排列的列表。除了工資括弧中的內容,我們還希望看到按照聘用時間從最近聘用的雇員開始列出的列表。以下是你將要用到的語句:SELECT BRANCH_OFFICE,FIRST_NAME,LAST_NAME,SALARY,HIRE_DATEFROM EMPLOYEESORDER BY SALARY DESC,HIRE_DATE DESC;這里我們進行了多列的選擇和排序。排序的優先順序由語句中的列名順序所決定。SQL將先對列出的第一個列進行排序。如果在第一個列中出現了重復的行時,這些行將被按照第二列進行排序,如果在第二列中又出現了重復的行時,這些行又將被按照第三列進行排序……如此類推。這次查詢的結果如表5所示。將一個很長的表中的所有列名寫出來是一件相當麻煩的事,所以SQL允許在選擇表中所有的列時使用*號:SELECT * FROM EMPLOYEES;這次查詢返回整個EMPLOYEES表,如表1所示。下面我們對開始時給出的SELECT語句的語法進行一下更新(豎直線表示一個可選項,允許在其中選擇一項。):SELECT [DISTINCT](column [{, columns}])| *FROM table [ {, table}][ORDER BY column [ASC] | DESC[ {, column [ASC] | DESC }]];定義選擇標准在我們目前所介紹的SELECT語句中,我們對結果表中的列作出了選擇但返回的是表中所有的行。讓我們看一下如何對SELECT語句進行限制使得它只返回希望得到的行:SELECT columns FROM tables [WHERE predicates];WHERE子句對條件進行了設置,只有滿足條件的行才被包括到結果表中。這些條件由斷言(predicate)進行指定(斷言指出了關於某件事情的一種可能的事實)。如果該斷言對於某個給定的行成立,該行將被包括到結果表中,否則該行被忽略。在SQL語句中斷言通常通過比較來表示。例如,假如你需要查詢所有姓為Jones的職員,則可以使用以下SELECT語句:SELECT * FROM EMPLOYEESWHERE LAST_NAME = 'Jones';LAST_NAME = 'Jones'部分就是斷言。在執行該語句時,SQL將每一行的LAST_NAME列與「Jones」進行比較。如果某一職員的姓為「Jones」,即斷言成立,該職員的信息將被包括到結果表中(見表6)。使用最多的六種比較我們上例中的斷言包括一種基於「等值」的比較(LAST_NAME = 'Jones'),但是SQL斷言還可以包含其他幾種類型的比較。其中最常用的為:等於 =不等於 <>小於 <大於 >小於或等於 <=大於或等於 >=下面給出了不是基於等值比較的一個例子:SELECT * FROM EMPLOYEESWHERE SALARY > 50000;這一查詢將返回年薪高於$50,000.00的職員(參見表7)。邏輯連接符有時我們需要定義一條不止一種斷言的SELECT語句。舉例來說,如果你僅僅想查看Davy Jones的信息的話,表6中的結果將是不正確的。為了進一步定義一個WHERE子句,用戶可以使用邏輯連接符AND,OR和NOT。為了只得到職員Davy Jones的記錄,用戶可以輸入如下語句:SELECT * FROM EMPLOYEESWHERE LAST_NAME = 'Jones' AND FIRST_NAME = 'Davy';在本例中,我們通過邏輯連接符AND將兩個斷言連接起來。只有兩個斷言都滿足時整個表達式才會滿足。如果用戶需要定義一個SELECT語句來使得當其中任何一項成立就滿足條件時,可以使用OR連接符:SELECT * FROM EMPLOYEESWHERE LAST_NAME = 'Jones' OR LAST_NAME = 'Smith';有時定義一個斷言的最好方法是通過相反的描述來說明。如果你想要查看除了Boston辦事處的職員以外的其他所有職員的信息時,你可以進行如下的查詢:SELECT * FROM EMPLOYEESWHERE NOT(BRANCH_OFFICE = 'Boston');關鍵字NOT後面跟著用圓括弧括起來的比較表達式。其結果是對結果取否定。如果某一職員所在部門的辦事處在Boston,括弧內的表達式返回true,但是NOT操作符將該值取反,所以該行將不被選中。斷言可以與其他的斷言嵌套使用。為了保證它們以正確的順序進行求值,可以用括弧將它們括起來:SELECT * FROM EMPLOYEESWHERE (LAST_NAME = 'Jones'AND FIRST_NAME = 'Indiana')OR (LAST_NAME = 'Smith'AND FIRST_NAME = 'Bessie');SQL沿用數學上標準的表達式求值的約定?圓括弧內的表達式將最先進行求值,其他表達式將從左到右進行求值。以上對邏輯連接符進行了說明,在對下面的內容進行說明之前,我們再一次對SELECT語句的語法進行更新:SELECT [DISTINCT](column [{, column } ] )| *FROM table [ { , table} ][ORDER BY column [ASC] | [DESC[{ , column [ASC] | [DESC } ] ]
㈦ SQL基本語句
掌握SQL四條最基本的數據*作語句 Insert Select Update和Delete 練掌握SQL是資料庫用戶的寶貴財 富 在本文中 我們將引導你掌握四條最基本的數據*作語句—SQL的核心功能—來依次介紹比較*作符 選擇斷言以及三值邏輯 當你完成這些學習後 顯然你已經開始算是精通SQL了 在我們開始之前 先使用CREATE TABLE語句來創建一個表 DDL語句對資料庫對象如表 列和視進行定義 它們並不對表中的行進行處理 這是因為DDL語句並不處理資料庫中實際的數據 這些工作由另一類SQL語句—數據*作語言(DML)語句進行處理 SQL中有四種基本的DML*作 INSERT SELECT UPDATE和DELETE 由於這是大多數SQL用戶經常用到的 我們有必要在此對它們進行一一說明 我們給出了一個名為EMPLOYEES的表 其中的每一行對應一個特定的雇員記錄 請熟悉這張表 我們在後面的例子中將要用到它 INSERT語句用戶可以用INSERT語句將一行記錄插入到指定的一個表中 例如 要將雇員John Smith的記錄插入到本例的表中 可以使用如下語句 INSERT INTO EMPLOYEES VALUES ( Smith John Los Angles );通過這樣的INSERT語句 系統將試著將這些值填入到相應的列中 這些列按照我們創建表時定義的順序排列 在本例中 第一個值 Smith 將填到第一個列LAST_NAME中 第二個值 John 將填到第二列FIRST_NAME中……以此類推 我們說過系統會 試著 將值填入 除了執行規則之外它還要進行類型檢查 如果類型不符(如將一個字元串填入到類型為數字的列中) 系統將拒絕這一次*作並返回一個錯誤信息 如果SQL拒絕了你所填入的一列值 語句中其他各列的值也不會填入 這是因為SQL提供對事務的支持 一次事務將資料庫從一種一致性轉移到另一種一致性 如果事務的某一部分失敗 則整個事務都會失敗 系統將會被恢復(或稱之為回退)到此事務之前的狀態 回到原來的INSERT的例子 請注意所有的整形十進制數都不需要用單引號引起來 而字元串和日期類型的值都要用單引號來區別 為了增加可讀性而在數字間插入逗號將會引起錯誤 記住 在SQL中逗號是元素的分隔符 同樣要注意輸入文字值時要使用單引號 雙引號用來封裝限界標識符 對於日期類型 我們必須使用SQL標准日期格式(yyyy mm dd) 但是在系統中可以進行定義 以接受其他的格式 當然 年臨近 請你最好還是使用四位來表示年份 既然你已經理解了INSERT語句是怎樣工作的了 讓我們轉到EMPLOYEES表中的其他部分 INSERT INTO EMPLOYEES VALUES ( Bunyan Paul Boston );INSERT INTO EMPLOYEES VALUES ( John Adams Boston );INSERT INTO EMPLOYEES VALUES ( Smith Pocahontas Los Angles );INSERT INTO EMPLOYEES VALUES ( Smith Bessie Boston );INSERT INTO EMPLOYEES VALUES ( Jones Davy Boston );INSERT INTO EMPLOYEES VALUES ( Jones Indiana Chicago NULL NULL);在最後一項中 我們不知道Jones先生的工薪級別和年薪 所以我們輸入NULL(不要引號) NULL是SQL中的一種特殊情況 我們以後將進行詳細的討論 現在我們只需認為NULL表示一種未知的值 有時 像我們剛才所討論的情況 我們可能希望對某一些而不是全部的列進行賦值 除了對要省略的列輸入NULL外 還可以採用另外一種INSERT語句 如下 INSERT INTO EMPLOYEES( FIRST_NAME LAST_NAME HIRE_DATE BRANCH_OFFICE)VALUE( Indiana Jones Indianapolis );這樣 我們先在表名之後列出一系列列名 未列出的列中將自動填入預設值 如果沒有設置預設值則填入NULL 請注意我們改變了列的順序 而值的順序要對應新的列的順序 如果該語句中省略了FIRST_NAME和LAST_NAME項(這兩項規定不能為空) SQL*作將失敗 讓我們來看一看上述INSERT語句的語法圖 INSERT INTO table [(column { column})]VALUES (columnvalue [{ columnvalue}]);和前一篇文?幸謊頤怯梅嚼ê爬幢硎究裳∠睿罄ê瘧硎究梢災馗慈我獯問南睿ú荒茉謔導實腟QL語句中使用這些特殊字元) VALUE子句和可選的列名列表中必須使用圓括弧 SELECT語句SELECT語句可以從一個或多個表中選取特定的行和列 因為查詢和檢索數據是資料庫管理中最重要的功能 所以SELECT語句在SQL中是工作量最大的部分 實際上 僅僅是訪問資料庫來分析數據並生成報表的人可以對其他SQL語句一竅不通 SELECT語句的結果通常是生成另外一個表 在執行過程中系統根據用戶的標准從資料庫中選出匹配的行和列 並將結果放到臨時的表中 在直接SQL(direct SQL)中 它將結果顯示在終端的顯示屏上 或者將結果送到列印機或文件中 也可以結合其他SQL語句來將結果放到一個已知名稱的表中 SELECT語句功能強大 雖然表面上看來它只用來完成本文第一部分中提到的關系代數運算 選擇 (或稱 限制 ) 但實際上它也可以完成其他兩種關系運算— 投影 和 連接 SELECT語句還可以完成聚合計算並對數據進行排序 SELECT語句最簡單的語法如下 SELECT columns FROM tables;當我們以這種形式執行一條SELECT語句時 系統返回由所選擇的列以及用戶選擇的表中所有指定的行組成的一個結果表 這就是實現關系投影運算的一個形式 讓我們看一下使用EMPLOYEES表的一些例子(這個表是我們以後所有SELECT語句實例都要使用的 而我們在圖 和圖 中給出了查詢的實際結果 我們將在其他的例子中使用這些結果) 假設你想查看雇員工作部門的列表 那下面就是你所需要編寫的SQL查詢 SELECT BRANCH_OFFICE FROM EMPLOYEES;由於我們在SELECT語句中只指定了一個列 所以我們的結果表中也只有一個列 注意結果表中具有重復的行 這是因為有多個雇員在同一部門工作(記住SQL從所選的所有行中將值返回) 要消除結果中的重復行 只要在SELECT語句中加上DISTINCT子句 SELECT DISTINCT BRANCH_OFFICEFROM EMPLOYEES;現在已經消除了重復的行 但結果並不是按照順序排列的 如果你希望以字母表順序將結果列出又該怎麼做呢?只要使用ORDER BY子句就可以按照升序或降序來排列結果 SELECT DISTINCT BRANCH_OFFICEFROM EMPLOYEESORDER BY BRANCH_OFFICE ASC;這一查詢的結果如表 所示 請注意在ORDER BY之後是如何放置列名BRANCH _OFFICE的 這就是我們想要對其進行排序的列 為什麼即使是結果表中只有一個列時我們也必須指出列名呢?這是因為我們還能夠按照表中其他列進行排序 即使它們並不顯示出來 列名BRANCH_ OFFICE之後的關鍵字ASC表示按照升序排列 如果你希望以降序排列 那麼可以用關鍵字DESC 同樣我們應該指出ORDER BY子句只將臨時表中的結果進行排序 並不影響原來的表 假設我們希望得到按部門排序並從工資最高的雇員到工資最低的雇員排列的列表 除了工資括弧中的內容 我們還希望看到按照聘用時間從最近聘用的雇員開始列出的列表 以下是你將要用到的語句 SELECT BRANCH_OFFICE FIRST_NAME LAST_NAME SALARY HIRE_DATEFROM EMPLOYEESORDER BY SALARY DESC HIRE_DATE DESC;這里我們進行了多列的選擇和排序 排序的優先順序由語句中的列名順序所決定 SQL將先對列出的第一個列進行排序 如果在第一個列中出現了重復的行時 這些行將被按照第二列進行排序 如果在第二列中又出現了重復的行時 這些行又將被按照第三列進行排序……如此類推 這次查詢的結果如表 所示 將一個很長的表中的所有列名寫出來是一件相當麻煩的事 所以SQL允許在選擇表中所有的列時使用*號 SELECT * FROM EMPLOYEES;這次查詢返回整個EMPLOYEES表 如表 所示 下面我們對開始時給出的SELECT語句的語法進行一下更新(豎直線表示一個可選項 允許在其中選擇一項 ) SELECT [DISTINCT] (column [{ columns}])| *FROM table [ { table}] <b lishixin/Article/program/Oracle/201311/18760
㈧ T-SQL語句的分為哪四類
根據其完成的具體功能,可以將T-SQL語句分為:數據定義語言、數據操縱語言、數據控制語言、事務管理語言。
1、數據定義語言用來定義和管理資料庫以及資料庫中的各種對象,這些對象的創建、修改和刪除等都可以通過使用CREATE、ALTER、DROP等語句來完成。
2、數據操縱語言用來查詢、添加、修改和刪除資料庫中數據,相關語句包括SELECT、INSERT、UPDATE利和DELETE等。
3、數據控制語言用來進行安全管理,用來設置或者更改資料庫用戶或角色許可權以確保資料庫中的數據和操作不被未授權的用戶使用和執行。相關語句包括GRANT、DENY和REVOKE等。
4、事務管理語言的相關語句有:BEGINTRANSACTION用來明確定義事務的開始,COMMITTRANSACTION用來明確地提交完成的事務,ROLLBACKTRANSACTION用來使數據回到事務開始時的狀態並釋放該事務占據的資源。
(8)sql語言的四類核心語句是什麼擴展閱讀
SQL Server和T-SQL的區別
SQL Server是結構化查詢語言,是目前關系型資料庫管理系統中使用最廣泛的查詢語言。
T-SQL即 Transact-SQL,是標准SQL語言的擴展,是SQL Server的核心,在SQL的的基礎上添加了變數,運算符,函數和流程式控制制等新內容。
總之SQL Server是幾乎所有關系型資料庫都支持的語言,而T-SQL是Microsoft SQL Server支持的語言。
㈨ SQL語言分為四類,每類分別是各包括什麼
sqlserver(T_SQL):
DDL—數據定義語言(CREATE,ALTER,DROP,DECLARE)
DML—數據操縱語言(SELECT,DELETE,UPDATE,INSERT)
DCL—數據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)
Oracle SQL(P_SQL) 語句可以分為以下幾類:
1.數據操作語言語句[Data manipulation language,DML]
2.數據定義語言語句[Data definition language,DDL]
3.事務控制語句[transaction control statement]
4.會話控制語句[session control statement]