Ⅰ 寫出sql查詢語句的基本結構,並說明結構中各子句表示的含義
語法
SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [,[table.]field2 [AS alias2] [,...]]}
FROM tableexpression [,...] [IN externaldatabase]
[WHERE...]
[GROUP BY...]
[HAVING...]
[ORDER BY...]
[WITH OWNERACCESS OPTION]
SELECT 語句包含以下部分:
部分 說明
predicate 這些謂詞之一:ALL、DISTINCT、DISTINCTROW 或 TOP.可以使用謂詞來限定返回記錄的數量.如果沒有指定謂詞,默認值為 ALL.
* 指定選擇所指定的表的所有欄位.
table 表的名稱,該表包含了其記錄被選擇的欄位.
field1,field2 欄位名,這些欄位包含了要檢索的數據.如果包括多個欄位,將按它們的排列順序對其進行檢索.
alias1,alias2 用作列標題的名稱,不是 table 中的原始列名.
tableexpression 其中包含要檢索的數據的表的名稱.
externaldatabase 如果 tableexpression 中的表不在當前資料庫中,則使用該參數指定該資料庫名.
說明
若要執行此項操作,Microsoft?Jet 資料庫引擎會搜索指定的表,並提取出選定的列,再選擇出符合條件的列,然後按指定的順序對得到的行進行排序或分組.
SELECT 語句不會更改資料庫中的數據.
SELECT 通常是 SQL 語句中的第一個詞.大多數 SQL 語句是 SELECT 或 SELECT...INTO 語句.
SELECT 語句最簡化的語法為:
SELECT fields FROM table
可以通過星號 (*) 來選擇表中所有的欄位.以下的示例選擇在 Employees 表中的所有欄位:
SELECT * FROM Employees;
如果一個欄位名包括於 FROM 子句內的多個表中,請在該欄位前面加上表名和 .(圓點)號.在下面的示例中,Department 欄位同時存在於 Employees 表和 Supervisors 表中.SQL 語句從 Employees 表中選擇出部門並從 Supervisors 表中選擇出主管名:
SELECT Employees.Department,Supervisors.SupvName
FROM Employees INNER JOIN Supervisors
WHERE Employees.Department = Supervisors.Department;
創建 Recordset 對象時,Microsoft Jet 資料庫引擎將使用表的欄位名作為 Recordset 對象中的 Field 對象名.如果需要一個不同的欄位名或者名稱不適合用來生成該欄位的表達式,請使用 AS 保留字.下面的示例使用標題 Birth 來命名在所得到的 Recordset 對象中的返回 Field 對象:
SELECT BirthDate
AS Birth FROM Employees;
只要使用的聚合函數或查詢返回的是不明確的或重復的 Field 對象名稱,就必須使用 AS 子句為該 Field 對象另外提供一個替代名稱.下面的示例使用標題 HeadCount 來命名在結果 Recordset 對象中的返回 Field 對象:
SELECT COUNT(EmployeeID)
AS HeadCount FROM Employees;
可以在 SELECT 語句中使用其他子句進一步約束和組織所返回的數據.有關詳細信息,請參閱相應子句的幫助主題.
請參閱
ALL DISTINCT、DISTINCTROW、TOP 謂詞 ORDER BY 子句 (Microsoft Jet SQL)
DELETE 語句 SELECT...INTO 語句
FROM 子句 SQL 聚合函數
GROUP BY 子句 UNION 操作
HAVING 子句 UPDATE 語句
IN 子句 WHERE 子句
INSERT INTO 語句 WITH OWNERACCESS OPTION 聲明
Ⅱ 簡要描述數據查詢語言sql的語法結構
SQL簡介
SQL(Structured Query Language,結構化查詢語言)是一個功能強大的資料庫語言。SQL通常用於與資料庫的通訊。ANSI(美國國家標准協會)聲稱,SQL是關系資料庫管理系統的標准語言。
SQL語句類型
DML(Data Manipulation Language, 數據操作語言) —— 用於檢索或者修改數據。
DDL(Data Definition Language, 數據定義語言) —— 用於定義數據的結構,如創建、修改或者刪除資料庫對象
DCL(Data Control Language, 數據控制語言) —— 用於定義資料庫用戶的許可權
Ⅲ 求sql語法
SQL語言快速入門(一)
SQL是英文Structured Query Language的縮寫,意思為結構化查詢語言。
SQL語言的主要功能就是同各種資料庫建立聯系,進行溝通。按照ANSI(美國國家標准協會)的規定,SQL被作為關系型資料庫管理系統的標准語言。SQL語句可以用來執行各種各樣的操作,例如更新資料庫中的數據,從資料庫中提取數據等。目前,絕大多數流行的關系型資料庫管理系統,如Oracle, Sybase, Microsoft SQL Server, Access等都採用了SQL語言標准。雖然很多資料庫都對SQL語句進行了再開發和擴展,但是包括Select, Insert, Update, Delete, Create, 及Drop在內的標準的SQL命令仍然可以被用來完成幾乎所有的資料庫操作。下面,我們就來詳細介紹一下SQL語言的基本知識。
資料庫表格
一個典型的關系型資料庫通常由一個或多個被稱作表格的對象組成。資料庫
中的所有數據或信息都被保存在這些資料庫表格中。資料庫中的每一個表格都具有
自己唯一的表格名稱,都是由行和列組成,其中每一列包括了該列名稱,數據類型
,以及列的其它屬性等信息,而行則具體包含某一列的記錄或數據。以下,是一個
名為天氣的資料庫表格的實例。
城市 最高氣溫 最低氣溫
北京 10 5
上海 15 8
天津 8 2
重慶 20 13
該表格中「城市」,「最高氣溫」和「最低氣溫」就是三個不同的列
,而表格中的每一行則包含了具體的表格數據。
數據查詢
在眾多的SQL命令中,select語句應該算是使用最頻繁的。Select語句主要被用來對資料庫進行查詢並返回符合用戶查詢標準的結果數據。Select語句的語法格式如下:
select column1 [, column2,etc] from tablename
[where condition];
([] 表示可選項)
Select語句中位於Select關鍵詞之後的列名用來決定那些列將作為查詢結果返回。用戶可以按照自己的需要選擇任意列,還可以使用通配符「*」來設定返回表格中的所有列。
Select語句中位於from關鍵詞之後的表格名稱用來決定將要進行查詢操作的目
標表格。
Select語句中的where可選從句用來規定哪些數據值或哪些行將被作為查詢結果返回或顯示。在where條件從句中可以使用以下一些運算符來設定查詢標准:
= 等於
> 大於
< 小於
>= 大於等於
<= 小於等於
<> 不等於
除了上面所提到的運算符外,LIKE運算符在where條件從句中也非常重要。
LIKE運算符的功能非常強大,通過使用LIKE運算符可以設定只選擇與用戶規定格式相同的記錄。此外,我們還可以使用通配符「%」用來代替任何字元串。舉例如下:
Select firstname, lastname, city
from employee
where firstname LIKE 『E%』;
(注意,字元串必須被包含在單括弧內)
上述SQL語句將會查詢所有名稱以E開頭的姓名。或者,通過如下語句:
Select * from employee
where firstname = 『May』;
查詢所有名稱為May的行。
SQL語言快速入門(二)
創建表格
SQL語言中的create table語句被用來建立新的資料庫表格。Create table
語句的使用格式如下:
create table tablename
(column1 data type,
column2 data type,
column3 data type);
如果用戶希望在建立新表格時規定列的限制條件,可以使用可選的條件
選項:
create table tablename
(column1 data type [constraint],
column2 data type [constraint],
column3 data type [constraint]);
舉例如下:
create table employee
(firstname varchar(15),
lastname varchar(20),
age number(3),
address varchar(30),
city varchar(20));
簡單來說,創建新表格時,在關鍵詞create table後面加入所要建立的表格
的名稱,然後在括弧內順次設定各列的名稱,數據類型,以及可選的限制條件
等。注意,所有的SQL語句在結尾處都要使用「;」符號。
使用SQL語句創建的資料庫表格和表格中列的名稱必須以字母開頭,後面
可以使用字母,數字或下劃線,名稱的長度不能超過30個字元。注意,用戶在
稱時不要使用SQL語言中的保留關鍵詞,如select, create, insert等,作為表格或
列的名稱。
數據類型用來設定某一個具體列中數據的類型。例如,在姓名列中只能采
用的數據類型,而不能使用number的數據類型。
SQL語言中較為常用的數據類型為:
char(size):固定長度字元串,其中括弧中的size用來設定字元串的最大
度。Char類型的最大長度為255位元組。
varchar(size):可變長度字元串,最大長度由size設定。
number(size):數字類型,其中數字的最大位數由size設定。
Date:日期類型。
number(size,d):數字類型,size決定該數字總的最大位數,而d則用於
設定該數字在小數點後的位數。
最後,在創建新表格時需要注意的一點就是表格中列的限制條件。所謂限
制條件就是當向特定列輸入數據時所必須遵守的規則。
例如,unique這一限制條件要求某一列中不能存在兩個值相同的記錄,所有
記錄的值都必須是唯一的。除unique之外,較為常用的列的限制條件
還包括not, null和primary key等。Not null用來規定表格中某一列的值
不能為空.Primary key則為表格中的所有記錄規定了唯一的標識符。
向表格中插入數據
SQL語言使用insert語句向資料庫表格中插入或添加新的數據行。Insert語
句的使用格式如下:
insert into tablename
(first_column,...last_column)
values (first_value,...last_value);
例如:
insert into employee
(firstname, lastname, age, address, city)
values (『Li』, 『Ming』, 45, 『No.77 Changan Road』, 『Beijing」);
簡單來說,當向資料庫表格中添加新記錄時,在關鍵詞insert into後面輸
入所要添加的表格名稱,然後在括弧中列出將要添加新值的列的名稱。最後
,在關鍵詞values的後面按照前面輸入的列的順序對應的輸入所有要添加的
記錄值。
更新記錄
SQL語言使用update語句更新或修改滿足規定條件的現有記錄。
Update語句的格式為:
update tablename
set columnname = newvalue [, nextcolumn = newvalue2...]
where columnname OPERATOR value [and|or column OPERATOR value];
例如:
update employee
set age = age+1
where first_name= 『Mary』and last_name= 『Williams』;
使用update語句時,關鍵一點就是要設定好用於進行判斷的where條件
從句。
刪除記錄
SQL語言使用delete語句刪除資料庫表格中的行或記錄。Delete語句的
格式為:
delete from tablename
where columnname OPERATOR value [and|or column OPERATOR value];
例如:
delete from employee
where lastname = May;
簡單來說,當需要刪除某一行或某個記錄時,在delete from關鍵詞之
後輸入表格名稱,然後在where從句中設定刪除記錄的判斷條件。注意,
如果用戶在使用delete語句時不設定where從句,則表格中的所有記錄將
全部被刪除。
刪除資料庫表格
在SQL語言中使用drop table命令刪除某個表格以及該表格中的所有記
錄。Drop table命令的使用格式為:
drop table tablename;
例如:
drop table employee;
如果用戶希望將某個資料庫表格完全刪除,只需要在drop table命令後
輸入希望刪除的表格名稱即可。Drop table命令的作用與刪除表格中的所有
記錄不同。刪除表格中的全部記錄之後,該表格仍然存在,而且表格中列
的信息不會改變。而使用drop table命令則會將整個資料庫表格的所有信息
全部刪除。
以上,我們對SQL語言主要的命令和語句進行了較為詳細的介紹。應該說SQL語句的語法結構和風格還是相當簡單和直觀的,只要用戶結合實踐多加練習,一定會在短期內迅速掌握。
SQL語言快速入門(三)
我們日常使用SQL語言的工作過程中,使用最多的還是從已經建立好的資料庫中查詢信息。下面,我們就來詳細介紹一下如何使用SQL語言實現各種資料庫查詢操作。
SELECT…FROM
為方便講解,我們在資料庫中創建名為Store_Information的如下數據表。
Store_Information
Store_Name Sales Date
Los Angeles 00 Jan-10-2000
San Diego 0 Jan-11-2000
Los Angeles 0 Jan-12-2000
Boston 0 Jan-12-2000
SQL語言中用於資料庫查詢的最簡單的命令就是SELECT…FROM,語法格
式為:
SELECT \"column_name\" FROM \"table_name\"
例如,如果我們希望查詢Store_Information數據表中所有的商店名稱時,可
以使用如下命令:
SELECT store_name FROM Store_Information
查詢結果顯示為:
Store_Name
Los Angeles
San Diego
Los Angeles
Boston
如果用戶希望一次查詢多個欄位,可以將所要查詢的欄位名稱依次加入
SELECT關鍵字之後,中間用「,」隔開即可。
DISTINCT
SELECT關鍵字支持用戶查詢數據表中指定欄位的所有數據,但是這樣有時
就會不可避免的出現重復信息。如果用戶希望只查詢那些具有不同記錄值的信
息的話,可以使用SQL語言的DISTINCT關鍵字。語法格式如下:
SELECT DISTINCT \"column_name\"
FROM \"table_name\"
例如,我們可以使用以下命令查詢Store_Information數據表具有不同記錄值
的所有記錄。
SELECT DISTINCT Store_Name FROM Store_Information
查詢結果如下:
Store_Name
Los Angeles
San Diego
Boston
WHERE
除了選擇具有不同記錄值的記錄之外,有時我們可能還會需要根據某些條
件對資料庫中的數據進行查詢。例如,我們可能需要查詢Store_Information數
據表中銷售額超過1000美圓的商店。為此,我們可以使用SQL語言的WHERE
關鍵字設定查詢條件。語法格式如下:
SELECT \"column_name\"
FROM \"table_name\"
WHERE \"condition\"
由此,我們可以使用如下命令查詢銷售額超過1000美圓的商店信息:
SELECT store_name FROM Store_Information WHERE Sales > 1000
查詢結果顯示為:
store_name
Los Angeles
運算函數
現在,我們已經了解到在使用SQL語言進行資料庫查詢操作時可以通過對
數值的判斷設定靈活的查詢條件。為了增強對運算的支持能力,SQL提供了眾
多實用的運算函數供廣大用戶使用。例如,我們可以直接在SQL命令中調用
SUM或AVG這兩個分別用於計算總數和平均數的函數。語法格式如下:
SELECT \"function type\"(\"column_name\")
FROM \"table_name\"
如果我們希望查詢Store_Information數據表中所有商店的總銷售額的話,可
以使用如下命令:
SELECT SUM(Sales) FROM Store_Information
查詢結果顯示為:
SUM(Sales)
50
COUNT
除了SUM和AVG函數之外,COUNT函數是SQL語言中另一個較為常用
的運算函數。COUNT函數可以用來計算數據表中指定欄位所包含的記錄數目。
語法格式為:
SELECT COUNT(\"column_name\")
FROM \"table_name\"
例如,如果我們希望查詢Store_Information數據表中的有關商店的記錄條數
時,可以使用如下命令:
SELECT COUNT(store_name)
FROM Store_Information
查詢結果顯示為:
Count(store_name)
4
COUNT函數可以和DISTINCT關鍵字一起使用從而可以查詢數據表中指定
欄位中所有具有不同記錄值的記錄數目.例如,如果我們希望查詢Store_Information
數據表中不同商店的數目時,可以使用如下命令:
SELECT COUNT(DISTINCT store_name)
FROM Store_Information
查詢結果顯示為:
Count(DISTINCT store_name)
3
GROUP BY
下面我們來進一步看一下SQL語言中的集合函數。上文中,我們曾使用
SUM函數計算所有商店的銷售總額,如果我們希望計算每一家商店各自的總銷
售額時該怎麼辦呢?要實現這一目的我們需要做兩件事:首先,我們需要查詢
商店名稱和銷售額兩個欄位;然後,我們使用SQL語言的GROUP BY命令將
銷售額按照不同的商店進行分組,從而計算出不同商店的銷售總額。GROUP
BY命令的語法格式為:
SELECT \"column_name1\", SUM(\"column_name2\")
FROM \"table_name\"
GROUP BY \"column_name1\"
我們可以使用如下命令實現上述查詢目的:
SELECT store_name, SUM(Sales)
FROM Store_Information
GROUP BY store_name
查詢結果顯示為:
store_name SUM(Sales)
Los Angeles 00
San Diego 0
Boston 0
小註:
GROUP BY關鍵字一般應用於同時查詢多個欄位並對欄位進行算術運
算的SQL命令中。
HAVING
用戶在使用SQL語言的過程中可能希望解決的另一個問題就是對由sum或
其它集合函數運算結果的輸出進行限制。例如,我們可能只希望看到Store_
Information數據表中銷售總額超過1500美圓的商店的信息,這時我們就需要使
用HAVING從句。語法格式為:
SELECT \"column_name1\", SUM(\"column_name2\")
FROM \"table_name\"
GROUP BY \"column_name1\"
HAVING (arithematic function condition)
(GROUP BY從句可選)
由此,我們可以使用如下命令實現上述查詢目的:
SELECT store_name, SUM(sales)
FROM Store_Information
GROUP BY store_name
HAVING SUM(sales) > 1500
查詢結果顯示為:
store_name SUM(Sales)
Los Angeles 00
小註:
SQL語言中設定集合函數的查詢條件時使用HAVING從句而不是
WHERE從句。通常情況下,HAVING從句被放置在SQL命令的結尾處。
ALIAS
下面,我們重點介紹一下如何在SQL命令中設定別名。SQL語言中一般使
用兩種類型的別名,分別為欄位別名和數據表別名。簡單的說,使用欄位別名
可以幫助我們有效的組織查詢的輸出結果。例如,上文所列舉的多個實例中,
當我們計算商店銷售總額時,顯示結果中就會出現SUM(sales)。雖然SUM(sales)
並不會對我們理解查詢結果帶來不便,但是如果我們需要在查詢中使用多項復
雜運算時,顯示結果就不會這么直觀了。如果這時我們使用欄位別名就會極大
的提高查詢結果的可讀性。
對於數據表別名,我們可以通過將別名直接放置在FROM從句中數據表名
稱的後面設定。數據表別名在我們下面將要講述的連接多個數據表進行查詢的
操作中極為有用。
欄位和數據表別名的語法格式如下:
SELECT \"table_alias\".\"column_name1\" \"column_alias\"
FROM \"table_name\" \"table_alias\"
即別名都直接放置在各自對應名稱的後面,中間用空格分開。
以Store_Information數據表為例,我們可以在GROUP BY一節中所使用的
SQL命令中設置如下欄位和數據表別名:
SELECT A1.store_name \ "Store\", SUM(Sales) \"Total Sales\"
FROM Store_Information A1
GROUP BY A1.store_name
查詢結果顯示為:
Store Total Sales
Los Angeles 00
San Diego 0
Boston 0
連接多個數據表
最後,我們來看一下如果使用SQL語言連接多個數據表,實現對多個數據
表的查詢。為方便講解,我們在資料庫中分別創建了兩個名為Store_Information
和Region的數據表。
Store_Information
Store_Name Sales Date
Los Angeles 00 Jan-10-2000
San Diego 0 Jan-11-2000
Los Angeles 0 Jan-12-2000
Boston 0 Jan-12-2000
Region
Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego
下面,我們就來看一下通過數據表的連接實現按不同區域查詢銷售額。
我們注意到在名為Region的數據表中包含區域和商店兩個欄位信息,而在名為
Store_Information的數據表中則包含每一家商店的銷售信息。因此,為了得到按
區域劃分的銷售信息,我們需要將兩個不同數據表的信息結合在一起進行查詢.
通過對上述兩個數據表的分析,我們發現每個數據表中都包含一個名為
Store_Name的欄位,因此,我們可以使用如下命令實現查詢目的:
SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Region A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name
查詢結果顯示為:
REGION SALES
East 0
West 50
說明:
上述查詢命令的前兩行用於指定所要查詢的目標欄位,分別為Region數據
表中的Region_Name欄位和Store_Information數據表中Sales欄位的記錄值總
數。這里,我們設定兩個欄位的別名分別為REGION和SALES,兩個數據表的
別名分別為A1和A2。如果我們只使用欄位別名而不設定數據表別名的話,上
述SQL命令的第一行就變成如下形式:
SELECT Region.Region_Name REGION, SUM(Store_Information.Sales) SALES
由此我們可以看出有效的使用數據表別名,可以極大的簡化對多個數據表
進行操作的SQL命令。
上述查詢命令的第3行為WHERE從句,正是該從句設定了兩個數據表的
連接條件。因為我們希望確保Region數據表中的Store_Name欄位能夠與
Store_Information數據表中的同名欄位相對應,所以我們規定兩個欄位的記錄
值應當相等。在連接多個數據表時,一定要准確設定數據表的連接條件,如果
WHERE從句設定不正確,則可能導致查詢結果中出現眾多不相關的數據 .
Ⅳ SQL語句語法大全
我整理的一些比較常用的SQL語句語法 需要的朋友可以過來參考下
一 數據控制語句 (DML) 部分
INSERT (往數據表裡插入記錄的語句)
INSERT INTO 表名(欄位名 欄位名 ……) VALUES ( 值 值 ……);
INSERT INTO 表名(欄位名 欄位名 ……) SELECT 欄位名 欄位名 …… FROM 另外的表名;
字元串類型的欄位值必須用單引號括起來 例如: GOOD DAY
如果欄位值里包含單引號 需要進行字元串轉換 我們把它替換成兩個單引號
字元串類型的欄位值超過定義的長度會出錯 最好在插入前進行長度校驗
日期欄位的欄位值可以用當前資料庫的系統時間SYSDATE 精確到秒
或者用字元串轉換成日期型函數TO_DATE(『 YYYY MM DD )
TO_DATE()還有很多種日期格式 可以參看ORACLE DOC
年 月 日 小時:分鍾:秒 的格式YYYY MM DD HH :MI:SS
INSERT時最大可操作的字元串長度小於等於 個單位元組 如果要插入更長的字元串 請考慮欄位用CLOB類型
方法借用ORACLE里自帶的DBMS_LOB程序包
INSERT時如果要用到從 開始自動增長的序列號 應該先建立一個序列號
CREATE SEQUENCE 序列號的名稱 (最好是表名+序列號標記) INCREMENT BY START WITH
MAXVALUE CYCLE NOCACHE;
其中最大的值按欄位的長度來定 如果定義的自動增長的序列號 NUMBER( ) 最大值為
INSERT 語句插入這個欄位值為: 序列號的名稱 NEXTVAL
DELETE (刪除數據表裡記錄的語句)
DELETE FROM表名 WHERE 條件;
注意 刪除記錄並不能釋放ORACLE里被佔用的數據塊表空間 它只把那些被刪除的數據塊標成unused
如果確實要刪除一個大表裡的全部記錄 可以用 TRUNCATE 命令 它可以釋放佔用的數據塊表空間
TRUNCATE TABLE 表名;
此操作不可回退
UPDATE (修改數據表裡記錄的語句)
UPDATE表名 SET 欄位名 =值 欄位名 =值 …… WHERE 條件;
如果修改的值N沒有賦值或定義時 將把原來的記錄內容清為NULL 最好在修改前進行非空校驗;
值N超過定義的長度會出錯 最好在插入前進行長度校驗
注意事項:
A 以上SQL語句對表都加上了行級鎖
確認完成後 必須加上事物處理結束的命令 MIT 才能正式生效
否則改變不一定寫入資料庫里
如果想撤回這些操作 可以用命令 ROLLBACK 復原
B 在運行INSERT DELETE 和 UPDATE 語句前最好估算一下可能操作的記錄范圍
應該把它限定在較小 (一萬條記錄) 范圍內 否則ORACLE處理這個事物用到很大的回退段
程序響應慢甚至失去響應 如果記錄數上十萬以上這些操作 可以把這些SQL語句分段分次完成
其間加上MIT 確認事物處理
二 數據定義 (DDL) 部分
CREATE (創建表 索引 視圖 同義詞 過程 函數 資料庫鏈接等)
ORACLE常用的欄位類型有
CHAR 固定長度的字元串
VARCHAR 可變長度的字元串
NUMBER(M N) 數字型M是位數總長度 N是小數的長度
DATE 日期類型
創建表時要把較小的不為空的欄位放在前面 可能為空的欄位放在後面
創建表時可以用中文的欄位名 但最好還是用英文的欄位名
創建表時可以給欄位加上默認值 例如 DEFAULT SYSDATE
這樣每次插入和修改時 不用程序操作這個欄位都能得到動作的時間
創建表時可以給欄位加上約束條件
例如 不允許重復 UNIQUE 關鍵字 PRIMARY KEY
ALTER (改變表 索引 視圖等)
改變表的名稱
ALTER TABLE 表名 TO 表名 ;
在表的後面增加一個欄位
ALTER TABLE表名 ADD 欄位名 欄位名描述;
修改表裡欄位的定義描述
ALTER TABLE表名 MODIFY欄位名 欄位名描述;
給表裡的欄位加上約束條件
ALTER TABLE 表名 ADD CONSTRAINT 約束名 PRIMARY KEY (欄位名);
ALTER TABLE 表名 ADD CONSTRAINT 約束名 UNIQUE (欄位名);
把表放在或取出資料庫的內存區
ALTER TABLE 表名 CACHE;
ALTER TABLE 表名 NOCACHE;
DROP (刪除表 索引 視圖 同義詞 過程 函數 資料庫鏈接等)
刪除表和它所有的約束條件
DROP TABLE 表名 CASCADE CONSTRAINTS;
TRUNCATE (清空表裡的所有記錄 保留表的結構)
TRUNCATE 表名;
三 查詢語句 (SELECT) 部分
SELECT欄位名 欄位名 …… FROM 表名 [表名 ……] WHERE 條件;
欄位名可以帶入函數
例如: COUNT(*) MIN(欄位名) MAX(欄位名) AVG(欄位名) DISTINCT(欄位名)
TO_CHAR(DATE欄位名 YYYY MM DD HH :MI:SS )
NVL(EXPR EXPR )函數
解釋:
IF EXPR =NULL
RETURN EXPR
ELSE
RETURN EXPR
DECODE(AA﹐V ﹐R ﹐V ﹐R )函數
解釋:
IF AA=V THEN RETURN R
IF AA=V THEN RETURN R
…
ELSE
RETURN NULL
LPAD(char n char )函數
解釋:
字元char 按制定的位數n顯示 不足的位數用char 字元串替換左邊的空位
欄位名之間可以進行算術運算
例如: (欄位名 *欄位名 )/
查詢語句可以嵌套
例如: SELECT …… FROM
(SELECT …… FROM表名 [表名 ……] WHERE 條件) WHERE 條件 ;
兩個查詢語句的結果可以做集合操作
例如: 並集UNION(去掉重復記錄) 並集UNION ALL(不去掉重復記錄) 差集MINUS 交集INTERSECT
分組查詢
SELECT欄位名 欄位名 …… FROM 表名 [表名 ……] GROUP BY欄位名
[HAVING 條件] ;
兩個以上表之間的連接查詢
SELECT欄位名 欄位名 …… FROM 表名 [表名 ……] WHERE
表名 欄位名 = 表名 欄位名 [ AND ……] ;
SELECT欄位名 欄位名 …… FROM 表名 [表名 ……] WHERE
表名 欄位名 = 表名 欄位名(+) [ AND ……] ;
有(+)號的欄位位置自動補空值
查詢結果集的排序操作 默認的排序是升序ASC 降序是DESC
SELECT欄位名 欄位名 …… FROM 表名 [表名 ……]
ORDER BY欄位名 欄位名 DESC;
字元串模糊比較的方法
INSTR(欄位名 『字元串 )>
欄位名 LIKE 『字元串% [『%字元串% ]
每個表都有一個隱含的欄位ROWID 它標記著記錄的唯一性
四 ORACLE里常用的數據對象 (SCHEMA)
索引 (INDEX)
CREATE INDEX 索引名ON 表名 ( 欄位 [欄位 ……] );
ALTER INDEX 索引名 REBUILD;
一個表的索引最好不要超過三個 (特殊的大表除外) 最好用單欄位索引 結合SQL語句的分析執行情況
也可以建立多欄位的組合索引和基於函數的索引
ORACLE 字元串可以索引的最大長度為 單位元組
ORACLE 字元串可以索引的最大長度為 單位元組
ORACLE DOC上說字元串最大可以建索引的長度約是:數據塊的大小(db_block_size)* %
視圖 (VIEW)
CREATE VIEW 視圖名AS SELECT … FROM … ;
ALTER VIEW視圖名 PILE;
視圖僅是一個SQL查詢語句 它可以把表之間復雜的關系簡潔化
同義詞 (SYNONMY)
CREATE SYNONYM同義詞名FOR 表名;
CREATE SYNONYM同義詞名FOR 表名@資料庫鏈接名;
資料庫鏈接 (DATABASE LINK)
CREATE DATABASE LINK資料庫鏈接名CONNECT TO 用戶名 IDENTIFIED BY 密碼 USING 『資料庫連接字元串 ;
資料庫連接字元串可以用NET EASY CONFIG或者直接修改TNSNAMES ORA里定義
資料庫參數global_name=true時要求資料庫鏈接名稱跟遠端資料庫名稱一樣
資料庫全局名稱可以用以下命令查出
SELECT * FROM GLOBAL_NAME;
查詢遠端資料庫里的表
SELECT …… FROM 表名@資料庫鏈接名;
五 許可權管理 (DCL) 語句
GRANT 賦於許可權
常用的系統許可權集合有以下三個:
CONNECT(基本的連接) RESOURCE(程序開發) DBA(資料庫管理)
常用的數據對象許可權有以下五個:
ALL ON 數據對象名 SELECT ON 數據對象名 UPDATE ON 數據對象名
DELETE ON 數據對象名 INSERT ON 數據對象名 ALTER ON 數據對象名
GRANT CONNECT RESOURCE TO 用戶名;
GRANT SELECT ON 表名 TO 用戶名;
GRANT SELECT INSERT DELETE ON表名 TO 用戶名 用戶名 ;
REVOKE 回收許可權
REVOKE CONNECT RESOURCE FROM 用戶名;
REVOKE SELECT ON 表名 FROM 用戶名;
lishixin/Article/program/MySQL/201311/29570
Ⅳ 寫出SQL查詢語句的基本結構,並說明結構中各子句表示的含義
SQL查詢語句常見語法結構
Select select_list
[Into new_table]
From table_source
[Where search_condition]
[Group by group_by_expression]
[Having search_condition]
[Order by order_by_expression [ASC | DESC] ]
SELECT查詢語句中的主要參數說明如下:
Select_list: 查詢的列或表達式的列表,用逗號進行分隔。
New_table:新的表名
Table_source:要查詢的表。如果是多個表,用逗號進行分隔。
Search_condition:查詢條件
Group_by_expression:分組表達式
Order_by_expression:排序表達式
ASC:升序排列
DESC:降序排列
Ⅵ 在SQL語句中,分組用什麼子句,排序用什麼子句
排序採用ORDER BY語句:ORDER BY 語句用於根據指定的列對結果集進行排序。ORDER BY 語句默認按照升序對記錄行排序。如果希望按照降序對記錄進行排序,可以使用 DESC關鍵字。
SQL有兩種使用方式:
一是聯機交互使用,這種方式下的SQL實際上是作為自含型語言使用的。
另一種方式是嵌入到某種高級程序設計語言(如C語言等)中去使用。前一種方式適合於非計算機專業人員使用,後一種方式適合於專業計算機人員使用。盡管使用方式不向,但所用語言的語法結構基本上是一致的。
(6)sql語法結構擴展閱讀:
以同一種語法結構提供兩種使用方式:
SQL既是自含式語言,又是嵌入式語言。作為自含式語言,它能夠獨立地用於聯機交互的使用方式,用戶可以在終端鍵盤上直接輸入SQL命令對資料庫進行操作。作為嵌入式語言,SQL語句能夠嵌入到高級語言(如C、 C#、JAVA)程序中,供程序員設計程序時使用。
而在兩種不同的使用方式下,SQL的語法結構基本上是一致的。這種以統一的語法結構提供兩種不同的操作方式,為用戶提供了極大的靈活性與方便性。
Ⅶ 簡答:sql語言的特點
sql語言的特點:
1、SQL風格統一
SQL可以獨立完成資料庫生命周期中的全部活動,包括定義關系模式、錄入數據、建立資料庫、査詢、更新、維護、資料庫重構、資料庫安全性控制等一系列操作,這就為資料庫應用系統開發提供了良好的環境。
在資料庫投入運行後,還可根據需要隨時逐步修改模式,且不影響資料庫的運行,從而使系統具有良好的可擴充性。
2、高度非過程化
非關系數據模型的數據操縱語言是面向過程的語言,用其完成用戶請求時,必須指定存取路徑。而用SQL進行數據操作,用戶只需提出「做什麼」,而不必指明「怎麼做」。
因此用戶無須了解存取路徑,存取路徑的選擇以及SQL語句的操作過程由系統自動完成。這不但大大減輕了用戶負擔,而且有利於提高數據獨立性。
3、面向集合的操作方式
SQL採用集合操作方式,不僅查找結果可以是元組的集合,而且一次插入、刪除、更新操作的對象也可以是元組的集合。
4、以同一種語法結構提供兩種使用方式
SQL既是自含式語言,又是嵌入式語言。作為自含式語言,它能夠獨立地用於聯機交互的使用方式,用戶可以在終端鍵盤上直接輸入SQL命令對資料庫進行操作。
作為嵌入式語言,SQL語句能夠嵌入到高級語言程序中,供程序員設計程序時使用。而在兩種不同的使用方式下,SQL的語法結構基本上是一致的。這種以統一的語法結構提供兩種不同的操作方式,為用戶提供了極大的靈活性與方便性。
5、語言簡潔,易學易用
SQL功能極強,但由於設計巧妙,語言十分簡潔,完成數據定義、數據操縱、數據控制的核心功能只用了9個動詞:CREATE、 ALTER、DROP、 SELECT、 INSERT、 UPDATE、 DELETE、GRANT、 REVOKE。且SQL語言語法簡單,接近英語口語,因此容易學習,也容易使用。
Ⅷ SQL語句的結構
所有的SQL語句都有自己的格式,每條SQL語句都由一個謂詞開始,該謂詞描述這條語句要產生的動作。謂詞扣緊接著一個或多個子句,子句中給出了被謂詞作用的數據或提供謂詞動作的詳細信息,每一條子句由一個關鍵字開始。
Ⅸ SQL語言功能它按其功能分為那幾個部分
SQL語言功能按其功能分為數據定義、數據操縱和數據控制三個部分。
1、SQL數據定義功能:能夠定義資料庫的三級模式結構,即外模式、全局模式和內模式結構。在SQL中,外模式又叫做視圖(View),全局模式簡稱模式( Schema),內模式由系統根據資料庫模式自動實現,一般無需用戶過問。
2、SQL數據操縱功能:包括對基本表和視圖的數據插入、刪除和修改,特別是具有很強的數據查詢功能。
3、SQL的數據控制功能:主要是對用戶的訪問許可權加以控制,以保證系統的安全性。
(9)sql語法結構擴展閱讀
SQL的核心部分相當於關系代數,但又具有關系代數所沒有的許多特點,如聚集、資料庫更新等。綜合的、通用的、功能極強的關系資料庫語言,其特點是:
1、數據描述、操縱、控制等功能一體化。
2、兩種使用方式,統一的語法結構。SQL有兩種使用方式。一是聯機交互使用,這種方式下的SQL實際上是作為自含型語言使用的。另一種方式是嵌入到某種高級程序設計語言(如C語言等)中去使用。前一種方式適合於非計算機專業人員使用,後一種方式適合於專業計算機人員使用。盡管使用方式不向,但所用語言的語法結構基本上是一致的。
3、高度非過程化。SQL是一種第四代語言(4GL),用戶只需要提出「干什麼」,無須具體指明「怎麼干」,像存取路徑選擇和具體處理操作等均由系統自動完成。
4、語言簡潔,易學易用。盡管SQL的功能很強,但語言十分簡潔,核心功能只用了9個動詞。SQL的語法接近英語口語,所以,用戶很容易學習和使用。
Ⅹ 簡述SQL語言中SELECT語句的基本結構
Select 查詢語句
語法:SELECT [ALL|DISTINCT] <目標列表達式> [AS 列名]
[,<目標列表達式> [AS 列名] ...] FROM <表名> [,<表名>…]
[WHERE <條件表達式> [AND|OR <條件表達式>...]
[GROUP BY 列名 [HAVING <條件表達式>>
[ORDER BY 列名 [ASC | DESC>
解釋:[ALL|DISTINCT] ALL:全部; DISTINCT:不包括重復行
<目標列表達式> 對欄位可使用AVG、COUNT、SUM、MIN、MAX、運算符等
<條件表達式>
查詢條件 謂詞
比較 =、>,<,>=,<=,!=,<>,
確定范圍 BETWEEN AND、NOT BETWEEN AND
確定集合 IN、NOT IN
字元匹配 LIKE(「%」匹配任何長度,「_」匹配一個字元)、NOT LIKE
空值 IS NULL、IS NOT NULL
子查詢 ANY、ALL、EXISTS
集合查詢 UNION(並)、INTERSECT(交)、MINUS(差)
多重條件 AND、OR、NOT
<GROUP BY 列名> 對查詢結果分組
[HAVING <條件表達式>] 分組篩選條件
[ORDER BY 列名 [ASC | DESC> 對查詢結果排序;ASC:升序 DESC:降序
例1: select student.sno as 學號, student.name as 姓名, course as 課程名, score as 成績 from score,student where student.sid=score.sid and score.sid=:sid
例2:select student.sno as 學號, student.name as 姓名,AVG(score) as 平均分 from score,student where student.sid=score.sid and student.class=:class and (term=5 or term=6) group by student.sno, student.name having count(*)>0 order by 平均分 DESC
例3:select * from score where sid like '9634'
例4:select * from student where class in (select class from student where name='楊全')