下面是一些常用的SQL語句,雖然很基礎,可是卻很值得收藏,對於初學者非常實用
❷ 簡單明了,大學生都應該知道的SQL
SQL(結構化查詢語言)是用於訪問和操作資料庫中的數據的標准資料庫編程語言。
SQL是關系資料庫系統的標准語言。所有關系資料庫管理系統(RDMS),如MySQL、MS Access、Oracle、Sybase、Informix、Postgres和SQL Server都使用SQL作為它們的標准資料庫語言。
為了處理資料庫和資料庫相關的編程,程序員需要有一些介質,或者可以說介面來詳細說明一組命令或代碼來處理資料庫或訪問資料庫的數據。在本章中,將簡要介紹在學習SQL的過程中您將學習的術語。
SQL為結構化查詢語言提供了獨特的學習和資料庫處理技術,並將幫助您更好地控制SQL查詢並有效處理這些代碼。由於SQL幫助您包括資料庫創建,資料庫或表刪除,獲取行數據和修改這些數據等,並行SQL使得事情自動和平滑,最終用戶可以輕松訪問和處理該應用程序的數據。
雖然 SQL 是一門 ANSI(American National Standards Institute 美國國家標准化組織)標準的計算機語言,但是仍然存在著多種不同版本的 SQL 語言。
然而,為了與 ANSI 標准相兼容,它們必須以相似的方式共同地來支持一些主要的命令(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。
要創建一個顯示資料庫中數據的網站,您需要:
RDBMS 指關系型資料庫管理系統,全稱 Relational Database Management System。
RDBMS 是 SQL 的基礎,同樣也是所有現代資料庫系統的基礎,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。
RDBMS 中的數據存儲在被稱為表的資料庫對象中。
表是相關的數據項的集合,它由列和行組成。
代碼示例:
每個表都被分解成稱為欄位的更小的實體。Customers表中的欄位由CustomerID,CustomerName,ContactName,Address,City,PostalCode和Country組成。欄位是表中的一列,用於維護表中每條記錄的特定信息。
記錄(也稱為行)是表中存在的每個單獨條目。例如,在上面的Customers表中有91條記錄。記錄是表中的橫向實體。
列是表中的垂直實體,其包含與表中的特定欄位相關聯的所有信息。
當您對任何RDBMS執行SQL命令時,系統將確定執行請求的最佳方式,並由SQL引擎確定如何解釋該任務。
在此過程中包含了各種組件。
典型的查詢引擎處理所有非SQL查詢,但SQL查詢引擎不會處理邏輯文件。
與關系資料庫交互的標准SQL命令是創建、選擇、插入、更新、刪除和刪除,簡單分為以下幾組:
數據定義語言用於改變資料庫結構,包括創建、更改和刪除資料庫對象。用於操縱表結構的數據定義語言命令有:
數據操縱語言用於檢索、插入和修改數據,數據操縱語言是最常見的SQL命令。
數據操縱語言命令包括:
數據控制語言為用戶提供許可權控制命令。
用於許可權控制的命令有:
使用SQL格式化工具可以比較直觀地看到您想要的操作
❸ SQL命令怎麼用
SQL語句:
通過SQL語句可以完成對資料庫、表、數據的操作,也就是我們本教程要學習的主要內容。
一條SQL語句類似這樣,它的含義是:從Users表中取出列名為UserName的數據。
一些重要的SQL命令:
SELECT – 從資料庫中提取數據
UPDATE – 更新資料庫中的數據
DELETE – 從資料庫中刪除數據
INSERT INTO – 向資料庫中插入新數據
CREATE DATABASE – 創建新資料庫
ALTER DATABASE – 修改資料庫
CREATE TABLE – 創建新表
ALTER TABLE – 變更資料庫表
DROP TABLE – 刪除表
CREATE INDEX – 創建索引
DROP INDEX – 刪除索引
-from shulanxt
❹ sql有哪些基本命令
1、 查看資料庫中的表或查詢資料庫;
show tables/databases;
2、 查看資料庫中所有的表:
show tables;(前提是使用use database 資料庫;)
3、 查明滑看數據表結構
describe 表名;
4、 創建資料庫
CARATE DATABASE 資料庫名;
create database studentoa;
5、 刪除資料庫
DROP DATABASE 資料庫名;
Drop database studentoa;
6、 使用資料庫
use 資料庫名;
use studentoa;
7、 創建數據表
CREATE TABLE 表名 ( 列名 數據類型, 列名 數鉛槐孫據類型, 列名 數據類型 ); create table information ( id int primary key, name nvarchar(10) not null, age int, sex nvarchar(6) )
8、 刪除數據表中的列
ALTER TABLE 表名 DROP COLUMN 列名;
alter table information drop column sex;
9、 增加數據表中的列
ALTER TABLE 表名
ADD 列名 數據類型;
Alter table information add home varchar(20);
10、 數據表中添加數據
INSERT INTO 表名[(列名,列名,列名)] VALUES (值,值,值);
insert into information(id,name,age,home) values (001,』張三』,23,』黑龍江』);
insert into information values(002,』李四』,25,』沈陽』);
insert into information(id,name,home) values(003,』趙六』,』吉林』);
參槐鏈考資料來源:網路-結構化查詢語言
❺ SQL資料庫裡面查詢表格的命令是什麼
命令:
select
sql 資料庫查詢表格的命令:用SELECT 語句
用法:
查詢某一列:SELECT 列名稱 FROM 表名稱
查詢所有列:SELECT * FROM 表名稱
注釋:
SQL 語句對大小寫不敏感。SELECT 等效於 select。
❻ SQL語句是什麼意思
以下摘自網路 SQL基本語句 來自: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_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;
這一查詢將返回年薪高於$50,000.00的職員(參見表7)。
邏輯連接符
有時我們需要定義一條不止一種斷言的SELECT語句。舉例來說,如果你僅僅想查看Davy Jones的信息的話,表6中的結果將是不正確的。為了進一步定義一個WHERE子句,用戶可以使用邏輯連接符AND,OR和NOT。為了只得到職員Davy Jones的記錄,用戶可以輸入如下語句:
SELECT * FROM EMPLOYEES
WHERE LAST_NAME = 'Jones' AND FIRST_NAME = 'Davy';
在本例中,我們通過邏輯連接符AND將兩個斷言連接起來。只有兩個斷言都滿足時整個表達式才會滿足。如果用戶需要定義一個SELECT語句來使得當其中任何一項成立就滿足條件時,可以使用OR連接符:
SELECT * FROM EMPLOYEES
WHERE LAST_NAME = 'Jones' OR LAST_NAME = 'Smith';
有時定義一個斷言的最好方法是通過相反的描述來說明。如果你想要查看除了Boston辦事處的職員以外的其他所有職員的信息時,你可以進行如下的查詢:
SELECT * FROM EMPLOYEES
WHERE NOT(BRANCH_OFFICE = 'Boston');
關鍵字NOT後面跟著用圓括弧括起來的比較表達式。其結果是對結果取否定。如果某一職員所在部門的辦事處在Boston,括弧內的表達式返回true,但是NOT操作符將該值取反,所以該行將不被選中。
斷言可以與其他的斷言嵌套使用。為了保證它們以正確的順序進行求值,可以用括弧將它們括起來:
SELECT * FROM EMPLOYEES
WHERE (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 } ] ]
WHERE predicate [ { logical-connector predicate } ];
NULL和三值邏輯
在SQL中NULL是一個復雜的話題,關於NULL的詳細描述更適合於在SQL的高級教程而不是現在的入門教程中進行介紹。但由於NULL需要進行特殊處理,並且你也很可能會遇到它,所以我們還是簡略地進行一下說明。
首先,在斷言中進行NULL判斷時需要特殊的語法。例如,如果用戶需要顯示所有年薪未知的職員的全部信息,用戶可以使用如下SELECT語句:
SELECT * FROM EMPLOYEES
WHERE SALARY IS NULL;
相反,如果用戶需要所有已知年薪數據的職員的信息,你可以使用以下語句:
SELECT * FROM EMPLOYEES
WHERE SALARY IS NOT NULL;
請注意我們在列名之後使用了關鍵字IS NULL或IS NOT NULL,而不是標準的比較形式:COLUMN = NULL、COLUMN <> NULL或是邏輯操作符NOT(NULL)。
這種形式相當簡單。但當你不明確地測試NULL(而它們確實存在)時,事情會變得很混亂。
例如,回過頭來看我們圖1中的EM-PLOYEES表,可以看到Indiana Jones的工薪等級或年薪值都是未知的。這兩個列都包含NULL。可以想像運行如下的查詢:
SELECT * FROM EMPLOYEES
WHERE GRADE <= SALARY;
此時,Indiana Jones應該出現在結果表中。因為NULL都是相等的,所以可以想像它們是能夠通過GRADE小於等於SALARY的檢查的。這其實是一個毫無疑義的查詢,但是並沒有關系。SQL允許進行這樣的比較,只要兩個列都是數字類型的。然而,Indiana Jones並沒有出現在查詢的結果中,為什麼?
正如我們早先提到過的,NULL表示未知的值(而不是象某些人所想像的那樣表示一個為NULL的值)。對於SQL來說意味著這個值是未知的,而只要這個值為未知,就不能將其與其他值比較(即使其他值也是NULL)。所以SQL允許除了在true 和false之外還有第三種類型的真值,稱之為「非確定」(unknown)值。
如果比較的兩邊都是NULL,整個斷言就被認為是非確定的。將一個非確定斷言取反或使用AND或OR與其他斷言進行合並之後,其結果仍是非確定的。由於結果表中只包括斷言值為「真」的行,所以NULL不可能滿足該檢查。從而需要使用特殊的操作符IS NULL和IS NOT NULL。
UPDATE語句
UPDATE語句允許用戶在已知的表中對現有的行進行修改。
例如,我們剛剛發現Indiana Jones的等級為16,工資為$40,000.00,我們可以通過下面的SQL語句對資料庫進行更新(並清除那些煩人的NULL)。
UPDATE EMPLOYEES
SET GRADE = 16, SALARY = 40000
WHERE FIRST_NAME = 'Indiana'
AND LAST_NAME = 'Jones';
上面的例子說明了一個單行更新,但是UPDATE語句可以對多行進行操作。滿足WHERE條件的所有行都將被更新。如果,你想讓Boston辦事處中的所有職員搬到New York,你可以使用如下語句:
UPDATE EMPLOYEES
SET BRANCH_OFFICE = 'New York'
WHERE BRANCH_OFFICE = 'Boston';
如果忽略WHERE子句,表中所有行中的部門值都將被更新為'New York'。
UPDATE語句的語法流圖如下面所示:
UPDATE table
SET column = value [{, column = value}]
[ WHERE predicate [ { logical-connector predicate}]];
DELETE語句
DELETE語句用來刪除已知表中的行。如同UPDATE語句中一樣,所有滿足WHERE子句中條件的行都將被刪除。由於SQL中沒有UNDO語句或是「你確認刪除嗎?」之類的警告,在執行這條語句時千萬要小心。如果決定取消Los Angeles辦事處並解僱辦事處的所有職員,這一卑鄙的工作可以由以下這條語句來實現:
DELETE FROM EMPLOYEES
WHERE BRANCH_OFFICE = 'Los Angeles';
如同UPDATE語句中一樣,省略WHERE子句將使得操作施加到表中所有的行。
DELETE語句的語法流圖如下面所示:
DELETE FROM table
[WHERE predicate [ { logical-connector predicate} ] ];
現在我們完成了數據操作語言(DML)的主要語句的介紹。我們並沒有對SQL能完成的所有功能進行說明。SQL還提供了許多的功能,如求平均值、求和以及其他對表中數據的計算,此外SQL還能完成從多個表中進行查詢(多表查詢,或稱之為連接)的工作。這種語言還允許你使用GRANT和REVOKE命令控制使用者的數據訪問許可權。
❼ sql基本命令都是什麼含義,求列表解釋
--SQL基本命令
--數據定義語言
Create(創建)
Alter(更改)
Drop(刪除)
--數據操縱語言
Insert(插入)
select(選擇)
delete(刪除)
update(更新)
--事務控制語言
commit(提交)
savepoint(保存點)
rollback(回滾)
--數據控制語言
Grant(授權)
Revoke(回收)
--Orcale數據類型
--字元數據類型
char這種數據類型的列長度可以是1到2000個位元組。
varchar2該數據類型的大小在1-4000個位元組范圍內
long這種數據類型可存儲最大2GB。
--數值數據類型
number數據類型可以存儲正數、負數、零、定點數和精度為38位的浮點數。
--日期時間數據類型
date數據類型使用七個位元組固定長度,每個位元組分別存儲世紀、年、月、日、小時、分和秒。從4712年1月1日到公元9999年12月13日。
Timestamp數據類型用於存儲日期的年、月、日以及時間的小時、分和秒值。秒值是精確到小數點後6位。該數據類型還包括了時區信息。
--Raw和LongRaw數據類型
Raw數據類型
Raw數據類型用於存儲基於位元組的數據。如二進制數據或位元組串,該數據類型最多能存儲2000個位元組。
LongRaw數據類型用於存儲可變長度的二進制數據,最多能存儲2GB。(該數據不能使用索引,long受到的所有限制對longraw數據類型同樣有效)
--LOB數據類型
Clob數據類型能夠存儲大量字元數據。該數據類型可以存儲單位元組數據和多位元組字元數據。clob可用於存儲非結構化的XML文檔。
Blob數據類型可以存儲較大的二進制對象,如圖形、視頻剪輯和聲音剪輯等。
Bfile數據類型能夠將二進制文件存儲二進制文件存儲在資料庫外部的操作系統文件中。Bfile列存存儲一個Bfile定位器。它指向位於伺服器文件系統上的二進制文件。支持的文件最大為4GB。
--查看指定偽列用戶(scott)
select rowid,ename,comm from emp where sal=1500
--查看偽列數
select * from emp where rownum<2
--數據定義語言
create table (需要創建的表)
alter table (需要更改的表)
truncate table (需要截斷的表)
drop table (需要刪除的表)
--create table保命令
create table [所有者即模式的名稱,如果用戶在自己的模式中創建表,則可以不指定所有者名稱。][需要創建的表名]
([列的名稱] [數據類型及長度]);
--例子(在當前用戶下創建了一張名為(Cool)的表,里有有三個列分別是:Cool_ID、Cool_Name、Cool_like):
create table Cool(
Cool_ID number,
Cool_Name varchar(20),
Cool_like varchar(30));
--在表中插入數據
insert into Cool values(8850,'酷兒','編寫Java應用程序');
insert into Cool values(8851,'酷兒','編寫Java應用程序1');
insert into Cool values(8852,'酷兒','編寫Java應用程序2');
insert into Cool values(8853,'酷兒','編寫Java應用程序3');
insert into Cool values(8854,'酷兒','編寫Java應用程序4');
insert into Cool values(8856,'酷兒','編寫Java應用程序5');
insert into Cool values(8855,'酷兒','編寫Java應用程序6');
--alter table命令
alter table [需要更改的表命稱] [模式(modify=更改,add=添加,drop=刪除)] (表中的列名)
--例子
--更改表中Cool_like列數據長度更改為15
alter table cool modify (cool_name varchar(15));
--插入數據進行測試第一條數據可以順利插入到列中,而第二條數據則不能插入列數,應為它的長度己超過了15個字元。(執行結果為:Error位於第一行:ora-01401:插入數據值對於列過大);
insert into Cool values(8855,'酷兒Test','編寫Java應用程序、游戲等等。');
insert into Cool values(8855,'測試用戶名,此列長度將超過15個字元。','編寫Java應用程序、游戲等等。');
--在表中添加一個列,在表中添加一個Cool_Tel來存儲電話號碼。
alter table Cool add (Cool_Tel varchar(12));
insert into Cool values(8856,'酷兒8856','編寫Java應用程序','13529424360');
--在表中刪除Cool_Tel列;
alter table cool drop column cool_tel;
--Truncate table命令
--刪除表中的記錄而不刪除列,此方法不能回滾因為它不使用事務處理。(優點:刪除速度快)
truncate table cool;(執行結果:表己截斷)
--desc查看cool表的結構
desc cool;
--drop table命令
--刪除Cool表。此方法可以使用事務回滾。
drop table cool;
--數據操縱語言
--選擇命令(Select)
select * from emp;(查詢表中所有數據)
select * from emp where ename='adams';(按條件查詢表中數據)
select distinct * from emp;(不選擇表中的重復行,使用distinct關鍵字);
select * from cool where cool_name='酷兒' order by cool_id asc;(按Coo_ID進行升序排序)
select * from cool where cool_name='酷兒' order by cool_id desc;(按Coo_ID進行降序排序)
create table CoolDemo as select * from cool;(用現有表Cool創建一個新表,數據包括在select語包里,可以是所有,也可以是指定的列)
create table CoolDemo2 as select * from cool where 1 = 2;(此條件不成立,所有隻創建了表結構,沒有數據)
select cool_id+10 sum ,cool_name from cool;(此條語句使用了別名sum並且是cool_id+10語後的值,但原始值不會改變。)
--插入命令(Insert)
insert into cool values(8857,'酷兒','編寫Java應用程序');(在Cool表中插入數據)
insert into cool(cool_name,cool_like) values('酷兒','編寫Java應用程序null');(只插入姓名列(cool_name)和愛好列(cool_like)的值)
insert into cool values(8858,'酷兒',null);(在cool表中跳過了cool_like列,使用空值來填充)
alter table cool add(cool_date date);(在表中添加一個日期列,以便下面插入日期值)
insert into cool values(8859,'酷兒','編寫Java應用程序8859','22-11月-06');(此條語句在Cool表中cool_date列插入了2006年11月12日的日期)
insert into cool select * from cooldemo;(此條語句插入了來自期它表的數據)
--更新命令(Update)
update cool set cool_name='酷兒至酷' where cool_name='酷兒';(如果cool_name列的值等於(酷兒)那麼就將它更改為(酷兒至酷),這是有條件的查詢)
update cool set cool_name='酷兒';(此條語句將cool_name列的所有值更改為(酷兒))
--刪除命令(delete)
delete cool where cool_like='編寫Java應用程序null';(如果cool表中cool_like列值等於(編寫Java應用程序null)就刪除它)
--提交命令(Commit)
commit;(提交事務)
commit work;(功能同上)
--標記命令(SavePoint)
savepoint savepoint_id;(它用來標記事務中可以應用回滾的點。)
--回滾事務(RollBack)
rollback;
rollback work;
rollback to savepoint [自己標記的記錄點];
--數據控制語言
--授權命令(Grant)
Grant [操作許可權如:select,update,delete等] on [表名稱] to [用戶名]
grant select,update,delete on cool to hedong911;(此條語句授權給用戶hedong911查詢、更新、刪除cool表的權力)
grant update(cool_id,cool_name) on cool to hedong911;(此條語句授權給用戶hedong911更新cool表(cool_id,cool_name)列權力)
grant select on cool to hedong911 with grant option;(此語句授權的用戶hedong911可以給其它用戶授權)
--回收授權命令(revoke)
revoke select,update,delete on cool to hedong911;(此條語句回收了hedong911的查詢、更新、刪除權力)
--算術操作符
(跳過)
--比較操作符
--比較操作符包括(=、!=、<、>、<=、>=、between……and(檢查是否在兩個值之間)、in(與列表中的值相匹配)、like(匹配字元模式)和is null(檢查是否為空),最後四個操作符還可以和not(非)一起使用如:not between……and等
select * from cool where cool_name!='1';
select * from cool where cool_name like '酷兒';
select * from cool where cool_id < 8853;
select * from cool where cool_id > 8853;
select * from cool where cool_id <= 8853;
select * from cool where cool_id >= 8853;
select * from cool where cool_like in ('編寫Java應用程序');
--邏輯操作符
--邏輯操作符包括and(與)、or(或)和now(非);
select * from cool where cool_id <=8856 and cool_id >= 8853;
select * from cool where cool_id =9999 or cool_like in ('編寫Java應用程序');
--集合操作符
--聯合查詢(union)
select * from cool union select * from cooldemo;(此條語句將Cool和CoolDemo兩張表的查詢結果合拼,並刪除重復行)
--聯合所有查詢(union all)
select * from cool union all select * from cooldemo;(此條語句將Cool和CoolDemo兩張表的查詢結果合拼,不刪除重復行)
--交集查詢(intersect)
select * from cool intersect select * from cooldemo;(此條語句查詢兩張表都有的行)
--減集查詢(minus)
select * from cool minus select * from cooldemo;(此條語句返回第二張表沒有的數據)
--連接(||)操作符
select ('用戶編號:'||cool_id||'姓名是:'||cool_name||'愛好是:'||cool_like||'日期是:'||cool_date) from cool where cool_id=8859;(運行結果:用戶編號:8859姓名是:酷兒愛好是:編寫Java應用程序8859日期是:22-11月-06)