A. sql語句大全
sp_helpdb ----------查本伺服器中所有資料庫 可跟庫名
例:sp_helpdb 庫名
-------------------------------------------------------------
sp_databases -------------查看本伺服器中可用的資料庫
--------------------------------------------------------------------
sp_helpfile -------------------查看當前工作著的資料庫
-----------------------------------------------------------
sp_helpfilegroup ---------------查看當前工作著的組的信息。可加參數,跟組名
例:sp_helpdb 庫名
----------------------------------------------------------------
sp_renamedb -----------改資料庫名
例:sp_renamedb 舊庫名,新庫名
----------------------------------------------------------------
select groupname from sysfilegroups where status=24
---------查看文件組 =8是查只讀文件組 =16是查默認文件組 =24是查即只讀又默認
---------------------------------------------------------------------------
sp_dboption ----------修改資料庫選項值
例:sp_dboption 庫名 選項 值
值決定真假 一般用:true/faule 或off/on表示
選項一般常用為:use only(資料庫擁有者)single user(單一用戶)read only(只讀)
--------------------------------------------------------------------------
dbcc shrinkdatabase ---------收縮資料庫
例:dbcc shrinkdatabase (庫名,10)
收縮庫,剩餘空間保留10%,後面如果不加notruncate,則釋放空間操作系統,
加truncateonly,歸還空間給操作系統,但忽略所給的百分比數值。
----------------------------------------------------------------------
dbcc shrinkfile ---------收縮文件
用法與ddcc shrinkdatabase相同。
----------------------------------------------------------------------
alter database ---------------修改資料庫
用法:這是起始句,告訴要做的是修改資料庫,然後再接要做什麼工作。每次只做一項工作
alter database 庫名
add file 文件名....to filegroup 文件組名
----------------增加庫文件,格式與建庫時括弧里指定大小時的格式一樣
add log file 文件名 -------------增加日誌文件
remove file 文件名 ---------刪除庫內的文件
add filegroup 文件組名 -----------增加一個文件組
modify file 文件名 -------------修改文件屬性
modify filegroup 組名 ------------修改文件組屬性
---------------------------------------------------------------------------
drop database --------------刪除資料庫
例:drop database 庫名1,庫名2 ---------可同時刪除兩個庫
------------------------------------------------------------------------
create table 表名
(列名 類型,
列名 類型) -------------------建立表
--------------------------------------------------------------------
select * from 表名 ---------查詢表結構
--------------------------------------------------------------------
select @@dbts ----------查詢最後一次操作
--------------------------------------------------------------------
insert into 表名
(列名,列名)
values (變數,變數.....) ------------向表中插入數據
如省略列名,則必須把每列的變數填全,不可缺少。可以省略 into
--------------------------------------------------------------------
sp_addtype 自定義類型名 系統類型名 -------用戶自定義類型
--------------------------------------------------------------------
sp_droptype 自定義類型名 -----------刪除自定義類型
如有資料庫正在使用該自定義類型,則不能刪除
--------------------------------------------------------------------
alter table ---------修改表結構
用法: alter table 表名
alter column 列名 類型 ---------修改列的類型
drop column 列名 --------刪除列
add (column) 列名 --------增加列,實際用時不加 column
-----------------------------------------------------------------
sp_help -------------查看資料庫中對象信息
用法: sp_help 表名 ---------------查表的信息
或 sp_help 庫名 --------------查庫信息
後面可以跟庫名或者表名,是查資料庫或者表的信息
-----------------------------------------------------------------
sp_spaceused --------查看對象佔用的空間信息
用法: sp_spaceused ----------查當前庫佔用空間信息
或 sp_spaceused 表名 ----------查指定表佔用空間信息
後面可以加表名查看錶占空間信息。如不加,則查看當前資料庫。
------------------------------------------------------------------
sp_depends ------------查看對象的相關性
用法: sp_depends 表名 -----------後面加表名
------------------------------------------------------------------
sp_rename ---------------重新命名
用法: sp_rename 舊表名,新表名 ---------改表名
或 sp_rename '表名.舊列名','新列名' 'column' -------修改列名
--------------------------------------------------------------------
create index --------------創建索引
用法: create index 索引名 on 表名 (列名) ------創建索引
或: create unique clustered index 索引名 on 表名 (列名)
------創建簇集唯一索引 unique是建唯一索引 clustered是建簇集索引
---非簇集索引用:nonclustered
----------------------------------------------------------------------
select top ---------查表中前幾行
用法: select top 3 * from 表名 -------查表中前三行
或: select top 10 percent * from 表名 -------顯示表中前10%數據
------------加入percent是百分比的意思。只以大於的最小整數,無小數
----------------------------------------------------------------------
select 列名,列名,列名 from 表名 -------顯示表中特定的列
----------------------------------------------------------------------
select *,列名 from 表名 ----------查詢表中所有,後面再加一列
----------------------------------------------------------------------
select distinct ----------查詢不重復數據 distinct用於去掉重復數據
用法: select distinct * from 表名 ---------查表中不重復數據
或: select distinct * into 新表名 from 舊表名 ------查舊表中不重復數據同時生成新表
-------------------------------------------------------------------------------------
select 列名+列名 from 表名 -------允許有計算式出現,顯示無列名的計算結果
如想加列名,則: select 列名+列名 as 新列名 from 表名
-------------------------------------------------------------------------
select 年齡,聯系電話,cast (年齡 as varchar(2))+聯系電話 from 表名
--------把整型數據年齡轉化為字元型與字元型數據聯系電話相加
----------------------------------------------------------------------------
ctrl+o(字母O) --------清空數據。空值與別的數據運算結果為空
----------------------------------------------------------------------------
select 原始列名 別名 from 表名
select 原始列名 as 別名 from 表名
select 別名=原始列名 from 表名
--------指定別名的三種方法。非法符號可''或[]引起來,不得直接使用。
----------------------------------------------------------------------------
select * from 表名
where 年齡 between 20 and 30 ---------顯示年齡在20到30之間的人
-------between是從條件一到條件二之間的限制
-----------------------------------------------------------------------
select * from 表名
where 年齡 in (20,21,22) ---------顯示年齡為20、21、22的人
--------in是限制在這些條件內的,是顯示一個取值范圍
-----------------------------------------------------------------------
select * from 表名
where 聯系電話 like '[1-3]%' --------查電話是1-3開頭的人
--------like是像這些條件的語句,能用通配符:%、_、[]、[^]
--------意思分別代表:所有字元、一個字元、一位上可取值、一位上不可取值
----------------------------------------------------------------------
select * from 表名
where 姓名 like '[e[]%'
or 姓名 like '%e]'
escape 'e' ------------顯示以『[』開頭或以『]』結尾的所有數據,中間有不顯示
----------escape ''是指定通配符
-----------------------------------------------------------------------------
order by ---------給數據排序
用法: select * from 表名
order by 年齡 -----------排序顯示年齡。默認為升序(asc)要降序必須加desc
------------------------------------------------------------------------
select distinct top 3 from 表名
order by 年齡 desc --------顯示最大的三種年齡
-------------------------------------------------------------------------
select * from 表名
where 年齡 in (select distinct top 3 年齡 from 表名 order by 年齡)
order by 年齡 -----------顯示年齡最小的所有人,並排序
-------------------------------------------------------------------------
select 姓名,
case
when MCSE成績 >=80 and MCSE成績<=100
then '考的不錯'
when MCSE成績 >=60 and MCSE成績<80
then '考的一般'
when MCSE成績 >=0 and MCSE成績<60
then '不及格'
when MCSE成績 is null
then '這小子沒考試'
else '異常數據'
end
MCSE成績
from 表名
-----------判斷語句 null是空值的意思,不能用等號連接,只能用is
-----------case到end為一列里的判斷,case在這里是取值,結果用於輸出,不顯示原值
-----------------------------------------------------------------------------
select 列名1,
case 列名2
when 1 then '男生'
when 0 then '女生'
else '未知'
end
from 表名
--------這里case取列名,是用於這一列每項取值比較,在這里列名2用的是bit型數據
-------------------------------------------------------------------------
select * into 庫1.表1 from 庫2.表2
-----------把庫2中表2移到庫1中
------------------------------------------------------------------------
數據維護三個命令:
insert ---------向表中插入數據
update ---------修改表中的數據
delete ---------刪除表中的數據
------------------------------------------------------------------------
insert into 表名 -----------(into可有可無)
(列1,列2,列3,列4) -----------表的原始列,用括弧括起來
values ----------有這條命令只能插入一條數據
(數1,數2,數3,數4) ----------插入的數值
---------可以省略原始列清單,但必須把所有列都賦值
------------------------------------------------------------------------
insert into 表1
(列1,列2,列3,列4)
select * from 表2 where sex=1
----------將表2中sex列等於1的數據信息插入表1中
-------------------------------------------------------------------------
update 表名
set 姓名='丁一'
where 姓名='李一' ----------把表中姓名叫李一的改為丁一。
------------where後面跟定位的列與值
-------------------------------------------------------------------------
update 表名
set 學號=14,
姓名=陳強
where 學號=1 ------------把學號為1的同學改為學號14,姓名陳強
-----------------------------------------------------------------------
update 表名
set 學號=年齡+7,
姓名='陳一強',
年齡=29
where 學號=14
-------把學號為14的同學資料改為年齡加七賦給學號姓名改為陳一強,年齡改為29
-------如果沒用where定位,則修改全部值
------------------------------------------------------------------------
delete 表名
where 學號>30 ---------把學號大於30的資料刪除
--------如不指定條件,則刪表內所有數據。這是記錄日誌文件的操作
----------------------------------------------------------------
truncate table 表名
-------清空表。不記錄日誌文件的操作。
--------------------------------------------------------------------
create view 圖名 -------------新建視圖
用法: create view 圖名
as
select 列名 from 表名
------------------------------------------------------------------------------
syscomments ------------這個表存著視圖代碼的信息
------------------------------------------------------------------------------
alter view 圖名
with encryption
as
select 列名 from 表名 -----------用with encyption語句給視圖原代碼加密
-------------不可恢復,除非保留源代碼
------------------------------------------------------------------------------
sp_helptext 圖名 -----------查看視圖源代碼
-----------------------------------------------------------------------------
select text from syscomments
where id =(select id from sysobjects where name ='圖名')
---------查視圖的代碼
-----------------------------------------------------------------------------
create view 圖名
as
select * from 源圖名 ------------基於源圖創建新視圖
-----------------------------------------------------------------------------
create view 圖名
as
select 列1 as 新列1,列2 新列2,列3=新列3 ---------起別名的三種方法
from 表名 -----------在新視圖中為列起別名,則所見的是新起的別名
-----------------------------------------------------------------------------
sp_depends 表名 -----------查該表的相關性,有多少表、圖與之相關。
-------------------------------------------------------------------------------
create view 圖名
select * from 表名
where 年齡<20
with check option ---------強制插入數據符合年齡小於20的條件,加在where後面
-----------是約束insert和update語句的
-------------------------------------------------------------------------------
select 男公民.姓名,女公民.姓名 from 男公民,女公民
where 男公民.配偶編號=女公民.編號
------------查結婚男女。較原始的語法,後被下列語法取代
或: select 男公民.姓名,女公民.姓名
from 男公民 join 女公民 on 男公民.配偶編號=女公民.編號
-------新的形式,在join之前省略了inner語句。
--可用左連接(*=或left outer join)右連接(=*或right outer join)全連接(full outer)
----where不能做全連接,但可以做連接的約束
select * from 男公民
where 配偶編號 in (select 編號 from 女公民)
--------嵌套查詢,查配偶編號在女公民表中編號列中出現過的
-------------------------------------------------------------------------------
select distinct 客戶表.*
from (select * from 訂單表 where 訂單年份=2004) as d,客戶表
where d.客戶號=客戶表.客戶號
-----子查詢放在from身後,也可以放在where身後
----------------------------------------------------------------------------
select (select 子查詢語句) from 表名
-------這種格式要求子查詢查出的必須是唯一的數據
----------------------------------------------------------------------------
select a.員工編號,a.員工姓名,b.員工姓名 as 領導姓名
from 員工表 as a,員工表 as b
where a.部門領導編號=b.員工編號
select a.員工編號,a.員工姓名,b.員工姓名 as 領導姓名
from 員工表 as a join 員工表 as b on a.部門領導編號=b.員工編號
select a.員工編號,a.員工姓名,
(select 員工姓名 from 員工表 as b where a.部門領導編號=b.員工編號) as 領導姓名
from 員工表 as a
---------三種查詢員工領導的方法
------如果裡面總經理領導編號是這空的,這種查詢方法不顯示空值。如要顯示,則用左連接
-----------------------------------------------------------------------------
sp_tables -----------查當前資料庫中的所有表
------------------------------------------------------------------------------
select * from 男公民
union ------------聯合。自動升序排序,並去掉重復語句
select * from 女公民
-----查詢結果是男公民和女公民表的總集。如果不去掉重復的,則用 union all
-----如果要降序排,則要在最後一個select語句後面加上order by 列名 desc
-----用union查詢時,結果集內列數必須相同,並且數據類型必須相互兼容
-----多表聯合查詢加order by時,後面必須跟第一個結果集的列名
------------------------------------------------------------------------------
select top 2 成績 from 表
order by 成績 desc ---------查前兩種最好成績
-------------------------------------------------------------------------------
select top 2 with ties 成績 from 表
order by 成績 desc ---------查前兩種最好成績所有人的信息
-------------------------------------------------------------------------------
select top 1 a.成績
from (select distinct top 3 成績 from 表 order by 成績 desc) as a
order by 成績 ---------嵌套查詢,查考成績第三名的值
-------------------------------------------------------------------------------
select max (SQL成績),min (MCSE成績) from 表
-----查SQL最高分和MCSE最低分
-----常用的函數:max(最大),min(最小),sum(總和),avg(平均值)
-----count(*)統計表內數據的行數。count(列名)統計表內列里非空值的行數
-------------------------------------------------------------------------------
select count(*) from 表名 --------查表內有多少行數據
-------------------------------------------------------------------------------
select count(列名) from 表名 ------------查表內列中有多少行非空數據
-------------------------------------------------------------------------------
select min(成績),max(成績),sum(成績),avg(成績),count(*),count(成績) from 表名
--------返回顯示數據只有一行。中間不能加列名,如想加,可以在後面加列。
-------------------------------------------------------------------------------
group by ---------分組統計,後面跟的是列名
---------上面select檢索多少原始列,後面group by就要跟多少原始列
例: select 性別,avg(年齡) from 表名
group by 性別 -------統計性別的平均年齡
-------------------------------------------------------------------------------
select 年齡,avg(年齡) from 表名
where 年齡<23
group by 年齡 -------查年齡小於23歲的各年齡段平均年齡
-------或也可用如下方法:
select 年齡,avg(年齡) from 表名
group by 年齡
having<23 -------having是統計之後的條件,where是統計之前的條件
--------having是做為group by的子句出現的,不能單獨使用
------------------------------------------------------------------------------
select 年齡,avg(年齡) from 表名
where 年齡<23
group by all 年齡 -------顯示所有年齡,但只統計年齡小於23的,大於23的顯示空值
------------------------------------------------------------------------------
select 品牌,顏色,sum(價格),avg(價格) from 汽車表
group by 品牌,顏色
with cube -------多維統計,按不同品牌不同顏色統計,也是group by的子句
--------其結果出現把各品牌統計一下,最後再統計所有品牌、所有顏色的總統計
------------------------------------------------------------------------------
select 品牌,顏色,sum(價格),avg(價格) from 汽車表
group by 品牌,顏色
with rollup ------只按第一列統計,也是group by的子句
---------即統計品牌各顏色和所有品牌所有顏色的總統計
------------------------------------------------------------------------------
select 品牌,顏色,價格 from 汽車表
compute sum(價格),avg(價格) ----------出現兩個結果集
------------查原始列,另外統計所有的總和與平均值
-------------------------------------------------------------------------------
select 品牌,sum(價格),avg(價格) from 汽車表
group by 品牌 ------只對汽車品牌進行統計。進行分組的列不一定用來統計
------------------------------------------------------------------------------
select 品牌,顏色,價格 from 汽車表
order by 品牌
compute sum(價格),avg(價格) by 品牌
--------按品牌分組統計。分別顯示品牌各款,然後再顯示函數計算值
------------------------------------------------------------------------------
exists --------存在。相當於一個判斷開關。說對了執行,說錯了放棄
用法: select * form 表名
where exists (select * from 表名 where 性別='男')
------如果存在性別為男的,執行查詢。如果不存在,則不執行命令。
-----------------------------------------------------------------------------
數據完整性:1.實體完整性----用unique(唯一)或主鍵控制,數據不能重復
2.值域完整性----用check控制。控制的是列中不能有非法數據
3.引用完整性----一列的取值完全依賴於前一列時,用這個。
4.用戶自定義完整性
------------------------------------------------------------------------------
create table 表名
(列1 int primary key, --------設置列級主鍵,緊跟在設置列的後面。
列2 int)
-------------------------------------------------------------------------------
create table 表名
(列1 int,
列2 int,
primary key (列1)) --------設置表級主鍵,放在建表語句的最後面。
-------------------------------------------------------------------------------
create table 表名
(列1 int constraint pk_表 primary key,
列2 int)
--------把列1設為主鍵,並且起名叫:pk_表。constraint是命名的命令
B. SQL語句有哪幾種類型,各類型的主要作用是什麼
1、數據操縱語言(DML):用來操縱資料庫中數據的命令。包括:select、insert、update、delete。
2、數據定義語言(DDL):用來建立資料庫、資料庫對象和定義列的命令。包括:create、alter、drop。
3、數據控制語言(DCL):用來控制資料庫組件。
(2)sql形象大全擴展閱讀:
SQL Server的特點如下:
1、具有真正的客戶機和伺服器體系結構。
2、圖形化用戶界面,使系統管理和資料庫管理更加直觀。
3、豐富的編程介面工具,為用戶進行程序設計提供了更大的選擇餘地。
4、其完全集成,利用了NT的許多功能,如發送和接受消息等。
C. SQL語法範例大全的前 言
資料庫技術已成為信息時代計算機技術的重要組成部分,而目前廣泛使用的關系資料庫已經成為資料庫系統的主流,SQL(Structured Query Language,結構化查詢語言)是關系資料庫系統最常用的語言。
本書全面系統地介紹了SQL的基本語法,並以目前流行的資料庫SQL Server 2005/2008和Oracle 9i/10g/11g為基礎,結合作者多年的資料庫系統管理經驗,介紹了用SQL管理和開發這兩大關系資料庫的實際應用操作,包含了大量的應用示例,可供讀者在學習和工作中引用。
本書讀者
本書內容涵蓋了與資料庫系統管理和開發有關的常見內容和操作,非常適合需要使用SQL的各層次的讀者,包括下列使用對象:
(1)SQL的初學者和計算機愛好者
本書講述了SQL大量的基礎內容,又有大量示例,非常適合初學者使用。
(2)高等學校或職業技術學校計算機專業教師和學生
本書講解由淺入深,非常適合高等學校和職業技術學校計算機專業教師和學生學習和參考使用。
(3)資料庫管理及其應用、軟體設計和開發人員
本書介紹了SQL語句在兩種主流關系資料庫SQL Server和Oracle中的實現,同時,介紹了在進行資料庫管理中通常需要的SQL腳本操作,可作為資料庫管理及開發人員的參考手冊。
(4)系統分析人員
資料庫規劃和管理技術是系統分析人員應該掌握的重點內容,本書介紹了各類常見關系資料庫的基礎知識,並分析和比較了它們之間的主要特點和異同點,同時也介紹了SQL在資料庫系統分析中的編程知識,因此該書也可以作為系統分析人員重要的參考資料。
本書特點
(1)結構清晰,內容全面
本書按照關系資料庫基礎、SQL基礎、SQL與關系資料庫的關系、SQL語法、SQL擴展、SQL編程、SQL在資料庫中的應用和資料速查內容為線索進行介紹,採用「方法、語法、示例、運行結果、注意事項」的順序結構進行闡述,具有很強的條理性和易讀性。
(2)方法多樣,實例豐富
本書針對特定的知識點介紹了能實現特定功能的各種方法,包括資料庫的企業管理器工具法、SQL命令法等,目的是讓讀者既能掌握SQL語法知識,又能掌握資料庫的操作技能,而且還能比較同一種功能採用多種實現方法的異同點,掌握在SQL Server和Oracle這兩種資料庫環境下SQL的差別。
本書共包括大小實例721個,使讀者在學習SQL原理的同時能夠掌握其用法,大部分實例還可以用於SQL Server和Oracle資料庫的實際管理,這些實例是作者多年從事資料庫和類UNIX系統管理的經驗積累,具有相當大的使用價值。
(3)既可以作為教材使用,又可以通過手冊進行快速查閱
本書以教材的形式全面系統地介紹了SQL以及SQL Server和Oracle資料庫系統管理的知識點,同時,又在實現方法、SQL語法、SQL語句、SQL函數、資料庫系統參數和應用示例等方面提供了詳細的介紹,並且提供快速索引,方便讀者查閱。
綜上所述,與其他同類書籍相比,本書具有方法全、內容全、實例全、參數全、查閱全的典型特點。
本書內容
本書內容涵蓋了SQL、關系資料庫基本理論、SQL Server資料庫、Oracle資料庫、MS VS.NET等資料庫軟體開發平台和工具的知識點與實際應用操作。
全書包括附錄共分為8大部分,共29章。
第1篇 SQL及關系資料庫概述(第1章~第3章)
第1章 關系資料庫概述。主要介紹了資料庫和關系資料庫的基本概念、關系模型以及兩種關系資料庫:桌面關系資料庫和網路關系資料庫和常用的10種關系型資料庫系統
第2章 SQL概述。介紹了SQL的概念、基本功能、SQL標准和版本、SQL基本語法
第3章 SQL擴展、工具及範例資料庫介紹。介紹了常用的關系資料庫系統SQL Server和Oracle的基本情況及其支持的SQL擴展語言Transact-SQL和PL/SQL的基本概念和主要內容。同時介紹了Transact-SQL和PL/SQL的支持環境和常用工具的用法,包括SQLCMD、SQL Server查詢分析、Oracle企業管理器EM、Oracle SQL * Plus、iSQL * Plus、PL/SQL Developer和TOAD專業工具
第2篇 SQL運算符和函數(第4章~第5章)
第4章 SQL運算符。介紹了SQL的各種操作運算符,包括算術、字元串、賦值、比較、邏輯、集合和一元運算操作符
第5章 函數。介紹了算術、字元、日期、類型轉換、統計(聚合)函數和兩種資料庫的常用系統函數
第3篇 數據查詢操作(第6章~第9章)
第6章 簡單查詢。介紹了SQL查詢語句(SELECT語句)的基本語法結構和執行步驟、常用的簡單查詢操作
第7章 連接查詢。介紹了表的自連接、自然連接、內連接和外連接。其中內連接介紹了等值連接和不等值連接兩種基本形式;外連接介紹了左外連接、右外連接和全外連接
第8章 集合查詢。介紹了並集、交集和差集的基本概念和應用操作
第9章 子查詢。介紹了子查詢的基本概念和操作,包括單行、多行、多列、相關和嵌套子查詢等內容
第4篇 數據更新操作(第10章~第15章)
第10章 資料庫操作。介紹了資料庫的創建、查找、修改和刪除的幾種實現方法以及SQL語句操作
第11章 方案操作。介紹了方案的創建、查找、修改和刪除的幾種實現方法以及SQL語句操作
第12章 數據表操作。介紹了數據表、表記錄、表結構的創建、查找、修改、復制和刪除的幾種實現方法以及SQL語句操作
第13章 索引操作。介紹了索引的創建、查找、修改、禁用、啟用和刪除的幾種實現方法以及SQL語句操作
第14章 視圖操作。介紹了視圖的創建、查找、修改和刪除的幾種實現方法以及SQL語句操作
第15章 序列操作。介紹了序列的創建、查找、使用和刪除的幾種實現方法以及SQL語句操作
第5篇 數據安全管理(第16章~第19章)
第16章 完整性約束。介紹了與表有關的約束:NOT NULL約束、UNIQUE約束、PRIMARY KEY約束、FOREIGN KEY約束和CHECK約束、域約束以及斷言的創建、查找、修改、使用和刪除的幾種實現方法以及SQL語句操作
第17章 用戶管理。介紹了用戶的創建、查找、修改、刪除的幾種實現方法和SQL語句操作以及許可權的查找、授權、收回等操作
第18章 角色管理。介紹了角色的創建、查找、修改、刪除的幾種實現方法和SQL語句操作以及許可權的查找、授權、收回等操作
第19章 許可權管理。介紹了許可權的分類、查找、授權、收回等操作
第6篇 SQL編程(第20章~第25章)
第20章 事務控制與並發處理。介紹了事務的概念、事務控制的實現以及多用戶讀寫訪問資料庫的並發控制、事務的開始和終止操作,最後還介紹了在SQL Server和Oracle資料庫中並發控制的具體應用、實現和比較
第21章 存儲過程。介紹了存儲過程的創建、查找、修改、調用、重編譯、刪除的幾種實現方法和SQL語句操作,還詳細介紹了存儲過程在SQL Server和Oracle資料庫中的應用
第22章 存儲函數。介紹了存儲函數的創建、查找、修改、調用、重編譯、刪除的幾種實現方法和SQL語句操作,還詳細介紹了存儲函數在SQL Server和Oracle資料庫中的應用
第23章 觸發器。介紹了SQL中觸發器的有關概念、創建、查找、修改、禁用、啟用和刪除的幾種實現方法以及SQL語句操作,還詳細介紹了觸發器在SQL Server和Oracle資料庫中的應用
第24章 游標。介紹了SQL中游標的基本概念、各種游標的定義、查找、打開、數據提取、關閉和刪除的幾種實現方法以及SQL語句操作、游標循環和嵌套的具體內容,還詳細介紹了游標在SQL Server和Oracle資料庫中的應用
第25章 錯誤和異常處理。介紹了錯誤與異常分類、SQL Server和Oracle資料庫中的錯誤與異常處理
第7篇 SQL在資料庫開發和管理中的應用(第26章~第29章)
第26章 嵌入式SQL。介紹了嵌入式SQL的基本概念、原理、與高級語言的通信方法、動態SQL技術,還詳細介紹了利用C語言中嵌入SQL語句在VC++、VC#中訪問SQL Server和Oracle的連接訪問實現過程
第27章 資料庫的存取訪問技術。介紹了資料庫系統的開發環境、應用系統的典型結構、各種資料庫軟體開發平台和工具、MS VS.NET和J2EE兩種流行的開發平台的比較、資料庫的連接訪問技術,包括OLE-DB、ODBC、JDBC、ADO、ADO.NET。還詳細介紹了用ASP、ASP.NET、VB.NET、VC#.NET與TEXT、Excel文件以及Access、SQL Server、Oracle資料庫連接的訪問方法
第28章 用SQL管理SQL Server資料庫。介紹了用SQL結合SQL Server資料庫的系統表和系統存儲過程管理SQL Server資料庫及伺服器的屬性、資料庫對象以及賬戶、角色和許可權等內容
第29章 用SQL管理Oracle資料庫。介紹了用SQL管理Oracle資料庫及伺服器的屬性、資料庫連接、會話、進程、表空間和數據文件、數據表、索引、存儲過程、存儲函數、觸發器、用戶、角色、許可權、事務與鎖和內存參數等內容
第8篇 附錄(附錄A~附錄E)
為便於讀者對常用資料的查閱,特將下列內容作為附錄內容進行了收集和整理:
SQL常用語句分類索引
SQL、SQL Server、Oracle常用函數分類對照索引
SQL Server常用系統表和系統存儲過程索引
Oracle資料庫常用視圖索引
Oracle資料庫系統環境變數參數
技術支持
希賽是中國領先的互聯網技術和IT教育公司,在互聯網服務、圖書出版、人才培養方面,希賽始終保持IT業界的領先地位。希賽對國家信息化建設和軟體產業化發展具有強烈的使命感,利用希賽網(www.csai.cn)強大的平台優勢,加強與促進IT人士之間的信息交流和共享,實現IT價值。「希賽,影響IT」是全體希賽人不懈努力和追求的目標!
希賽網以希賽顧問團為技術依託,是中國最大的IT資源平台。希賽IT教育研發中心是希賽公司下屬的一個專門從事IT教育、教育產品開發、教育書籍編寫的部門,在IT教育方面具有極高的權威性。在國家權威機構發布的《計算機圖書出版市場綜述》中,稱贊希賽叢書為讀者所稱道,希賽的圖書已經形成品牌,在讀者心目中具有良好的形象。
有關本書的意見反饋和咨詢,讀者可在學賽網社區「書評在線」版塊中與作者進行交流,讀者也可就書中的問題提出意見,由於作者水平有限,錯誤在所難免,望讀者不吝賜教。
本書由黃少華和陳翠娥編著,鄧子雲主審。同時,希賽公司梁賽編輯提供了許多的幫助。還有劉健等幾位好友也提供了支持和很好的參考意見,在此一並表示衷心的感謝。
編者 著
2008年8月
D. SQL語句大全的介紹
SQL即結構化查詢語言(Structured Query Language),是一種特殊目的的編程語言,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統;同時也是資料庫腳本文件的擴展名。SQL語句無論是種類還是數量都是繁多的,很多語句也是經常要用到的,SQL查詢語句就是一個典型的例子,無論是高級查詢還是低級查詢,SQL查詢語句的需求是最頻繁的。
E. SQL語句大全
SQL語句大全
一、基礎
1、說明:創建資料庫
Create DATABASE database-name
2、說明:刪除資料庫
drop database dbname
3、說明:備份sql server
--- 創建 備份數據的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 開始 備份
BACKUP DATABASE pubs TO testBack
4、說明:創建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根據已有的表創建新表:
A:create table tab_new like tab_old (使用舊表創建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、說明:刪除新表
drop table tabname
6、說明:增加一個列
Alter table tabname add column col type
註:列增加後將不能刪除。DB2中列加上後數據類型也不能改變,唯一能改變的是增加varchar類型的長度。
7、說明:添加主鍵: Alter table tabname add primary key(col)
說明:刪除主鍵: Alter table tabname drop primary key(col)
8、說明:創建索引:create [unique] index idxname on tabname(col….)
刪除索引:drop index idxname on tabname
註:索引是不可更改的,想更改必須刪除重新建。
9、說明:創建視圖:create view viewname as select statement
刪除視圖:drop view viewname
10、說明:幾個簡單的基本的sql語句
選擇:select * from table1 where 范圍
插入:insert into table1(field1,field2) values(value1,value2)
刪除:delete from table1 where 范圍
更新:update table1 set field1=value1 where 范圍
查找:select * from table1 where field1 like 』%value1%』 (所有包含『value1』這個模式的字元串)---like的語法很精妙,查資料!
排序:select * from table1 order by field1,field2 [desc]
總數:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1[separator]
11、說明:幾個高級查詢運算詞
A: UNION 運算符
UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)並消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
B: EXCEPT 運算符
EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行並消除所有重復行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。
C: INTERSECT 運算符
INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行並消除所有重復行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。
註:使用運算詞的幾個查詢結果行必須是一致的。
12、說明:使用外連接
A、left outer join:
左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:full outer join:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
二、提升
1、說明:復製表(只復制結構,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
2、說明:拷貝表(拷貝數據,源表名:a 目標表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、說明:跨資料庫之間表的拷貝(具體數據使用絕對路徑) (Access可用)
insert into b(a, b, c) select d,e,f from b in 『具體資料庫』 where 條件
例子:..from b in '"&Server.MapPath("."&"\data.mdb" &"' where..
4、說明:子查詢(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b 或者: select a,b,c from a where a IN (1,2,3)
5、說明:顯示文章、提交人和最後回復時間
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、說明:外連接查詢(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、說明:在線視圖查詢(表名1:a
select * from (Select a,b,c FROM a) T where t.a > 1;
8、說明:between的用法,between限制查詢數據范圍時包括了邊界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 數值1 and 數值2
9、說明:in 的使用方法
select * from table1 where a [not] in (『值1』,』值2』,』值4』,』值6』)
10、說明:兩張關聯表,刪除主表中已經在副表中沒有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1
11、說明:四表聯查問題:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、說明:日程安排提前五分鍾提醒
SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5
13、說明:一條sql 語句搞定資料庫分頁
select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位 = a.主鍵欄位 order by a.排序欄位
14、說明:前10條記錄
select top 10 * form table1 where 范圍
15、說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行並消除所有重復行而派生出一個結果表
(select a from tableA except (select a from tableB) except (select a from tableC)
17、說明:隨機取出10條數據
select top 10 * from tablename order by newid()
18、說明:隨機選擇記錄
select newid()
19、說明:刪除重復記錄
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、說明:列出資料庫里所有的表名
select name from sysobjects where type='U'
21、說明:列出表裡的所有的
select name from syscolumns where id=object_id('TableName')
22、說明:列示type、vender、pcs欄位,以type欄位排列,case可以方便地實現多重選擇,類似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
顯示結果:
type vender pcs
電腦 A 1
電腦 A 1
光碟 B 2
光碟 A 2
手機 B 3
手機 C 3
23、說明:初始化表table1
TRUNCATE TABLE table1
24、說明:選擇從10到15的記錄
select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc
[編輯本段]三、技巧
1、1=1,1=2的使用,在SQL語句組合時用的較多
「where 1=1」 是表示選擇全部 「where 1=2」全部不選,
如:
if @strWhere !='
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere
end
else
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'
end
我們可以直接寫成
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere
2、收縮資料庫
--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收縮數據和日誌
DBCC SHRINKDB
DBCC SHRINKFILE
3、壓縮資料庫
dbcc shrinkdatabase(dbname)
4、轉移資料庫給新用戶以已存在用戶許可權
exec sp_change_users_login 'update_one','newname','oldname'
go
5、檢查備份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
6、修復資料庫
Alter DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
Alter DATABASE [dvbbs] SET MULTI_USER
GO
7、日誌清除
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 要操作的資料庫名
Select @LogicalFileName = 'tablename_log', -- 日誌文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 1 -- 你想設定的日誌文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
Select @OriginalSize = size
FROM sysfiles
Where name = @LogicalFileName
Select 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
Where name = @LogicalFileName
Create TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
Select @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (Select size FROM sysfiles Where name = @LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
Select @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
Insert DummyTrans VALUES ('Fill Log')
Delete DummyTrans
Select @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
Select 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
Where name = @LogicalFileName
Drop TABLE DummyTrans
SET NOCOUNT OFF
8、說明:更改某個表
exec sp_changeobjectowner 'tablename','dbo'
9、存儲更改全部表
Create PROCEDURE dbo.User_ChangeObjectOwnerBatch
@OldOwner as NVARCHAR(128),
@NewOwner as NVARCHAR(128)
AS
DECLARE @Name as NVARCHAR(128)
DECLARE @Owner as NVARCHAR(128)
DECLARE @OwnerName as NVARCHAR(128)
DECLARE curObject CURSOR FOR
select 'Name' = name,
'Owner' = user_name(uid)
from sysobjects
where user_name(uid)=@OldOwner
order by name
OPEN curObject
FETCH NEXT FROM curObject INTO @Name, @Owner
WHILE(@@FETCH_STATUS=0)
BEGIN
if @Owner=@OldOwner
begin
set @OwnerName = @OldOwner + '.' + rtrim(@Name)
exec sp_changeobjectowner @OwnerName, @NewOwner
end
-- select @name,@NewOwner,@OldOwner
FETCH NEXT FROM curObject INTO @Name, @Owner
END
close curObject
deallocate curObject
GO
10、SQL SERVER中直接循環寫入數據
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
F. sql 語句大全
1、說明:創建資料庫
CREATE DATABASE database-name
2、說明:刪除資料庫
drop database dbname
3、說明:備份sql server
--- 創建 備份數據的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 開始 備份
BACKUP DATABASE pubs TO testBack
4、說明:創建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根據已有的表創建新表:
A:create table tab_new like tab_old (使用舊表創建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、說明:刪除新表
drop table tabname
6、說明:增加一個列
Alter table tabname add column col type
註:列增加後將不能刪除。DB2中列加上後數據類型也不能改變,唯一能改變的是增加varchar類型的長度。
7、說明:添加主鍵: Alter table tabname add primary key(col)
說明:刪除主鍵: Alter table tabname drop primary key(col)
8、說明:創建索引:create [unique] index idxname on tabname(col….)
刪除索引:drop index idxname
註:索引是不可更改的,想更改必須刪除重新建。
9、說明:創建視圖:create view viewname as select statement
刪除視圖:drop view viewname
10、說明:幾個簡單的基本的sql語句
選擇:select * from table1 where 范圍
插入:insert into table1(field1,field2) values(value1,value2)
刪除:delete from table1 where 范圍
更新:update table1 set field1=value1 where 范圍
查找:select * from table1 where field1 like 』%value1%』 ---like的語法很精妙,查資料!
排序:select * from table1 order by field1,field2 [desc]
總數:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、說明:幾個高級查詢運算詞
A: UNION 運算符
UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)並消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION一起使用時(即 UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
B: EXCEPT 運算符
EXCEPT運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行並消除所有重復行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。
C: INTERSECT 運算符
INTERSECT運算符通過只包括 TABLE1 和 TABLE2 中都有的行並消除所有重復行而派生出一個結果表。當 ALL隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。
註:使用運算詞的幾個查詢結果行必須是一致的。
12、說明:使用外連接
A、left (outer) join:
左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right (outer) join:
右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:full/cross (outer) join:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
12、分組:Group by:
一張表,一旦分組 完成後,查詢後只能得到組相關的信息。
組相關的信息:(統計信息) count,sum,max,min,avg 分組的標准)
在SQLServer中分組時:不能以text,ntext,image類型的欄位作為分組依據
在selecte統計函數中的欄位,不能和普通的欄位放在一起;
13、對資料庫進行操作:
分離資料庫: sp_detach_db;附加資料庫:sp_attach_db 後接表明,附加需要完整的路徑名
14.如何修改資料庫的名稱:
sp_renamedb 'old_name', 'new_name'
G. SQL資料庫語句大全
經典SQL語句大全
下列語句部分是Mssql語句,不可以在access中使用。
SQL分類:
DDL—數據定義語言(CREATE,ALTER,DROP,DECLARE)
DML—數據操縱語言(SELECT,DELETE,UPDATE,INSERT)
DCL—數據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,簡要介紹基礎語句:
1、說明:創建資料庫
CREATE DATABASE database-name
2、說明:刪除資料庫
drop database dbname
3、說明:備份sql server
--- 創建 備份數據的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 開始 備份
BACKUP DATABASE pubs TO testBack
4、說明:創建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根據已有的表創建新表:
A:create table tab_new like tab_old (使用舊表創建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、說明:
刪除新表:drop table tabname
6、說明:
增加一個列:Alter table tabname add column col type
註:列增加後將不能刪除。DB2中列加上後數據類型也不能改變,唯一能改變的是增加varchar類型的長度。
7、說明:
添加主鍵:Alter table tabname add primary key(col)
說明:
刪除主鍵:Alter table tabname drop primary key(col)
8、說明:
創建索引:create [unique] index idxname on tabname(col….)
刪除索引:drop index idxname
註:索引是不可更改的,想更改必須刪除重新建。
9、說明:
創建視圖:create view viewname as select statement
刪除視圖:drop view viewname
10、說明:幾個簡單的基本的sql語句
選擇:select * from table1 where 范圍
插入:insert into table1(field1,field2) values(value1,value2)
刪除:delete from table1 where 范圍
更新:update table1 set field1=value1 where 范圍
查找:select * from table1 where field1 like 』%value1%』 ---like的語法很精妙,查資料!
排序:select * from table1 order by field1,field2 [desc]
總數:select count * as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、說明:幾個高級查詢運算詞
A: UNION 運算符
UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)並消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
B: EXCEPT 運算符
EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行並消除所有重復行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。
C: INTERSECT 運算符
INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行並消除所有重復行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。
註:使用運算詞的幾個查詢結果行必須是一致的。
12、說明:使用外連接
A、left outer join:
左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:full outer join:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
其次,大家來看一些不錯的sql語句
1、說明:復製表(只復制結構,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
2、說明:拷貝表(拷貝數據,源表名:a 目標表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、說明:跨資料庫之間表的拷貝(具體數據使用絕對路徑) (Access可用)
insert into b(a, b, c) select d,e,f from b in 『具體資料庫』 where 條件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
4、說明:子查詢(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
5、說明:顯示文章、提交人和最後回復時間
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、說明:外連接查詢(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、說明:在線視圖查詢(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;
8、說明:between的用法,between限制查詢數據范圍時包括了邊界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 數值1 and 數值2
9、說明:in 的使用方法
select * from table1 where a [not] in (『值1』,』值2』,』值4』,』值6』)
10、說明:兩張關聯表,刪除主表中已經在副表中沒有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
11、說明:四表聯查問題:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、說明:日程安排提前五分鍾提醒
SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5
13、說明:一條sql 語句搞定資料庫分頁
select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位 = a.主鍵欄位 order by a.排序欄位
14、說明:前10條記錄
select top 10 * form table1 where 范圍
15、說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行並消除所有重復行而派生出一個結果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
17、說明:隨機取出10條數據
select top 10 * from tablename order by newid()
18、說明:隨機選擇記錄
select newid()
19、說明:刪除重復記錄
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、說明:列出資料庫里所有的表名
select name from sysobjects where type='U'
21、說明:列出表裡的所有的
select name from syscolumns where id=object_id('TableName')
22、說明:列示type、vender、pcs欄位,以type欄位排列,case可以方便地實現多重選擇,類似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
顯示結果:
type vender pcs
電腦 A 1
電腦 A 1
光碟 B 2
光碟 A 2
手機 B 3
手機 C 3
23、說明:初始化表table1
TRUNCATE TABLE table1
24、說明:選擇從10到15的記錄
select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc
隨機選擇資料庫記錄的方法(使用Randomize函數,通過SQL語句實現)
對存儲在資料庫中的數據來說,隨機數特性能給出上面的效果,但它們可能太慢了些。你不能要求ASP「找個隨機數」然後列印出來。實際上常見的解決方案是建立如下所示的循環:
Randomize
RNumber = Int(Rnd*499) +1
While Not objRec.EOF
If objRec("ID") = RNumber THEN
... 這里是執行腳本 ...
end if
objRec.MoveNext
Wend
這很容易理解。首先,你取出1到500范圍之內的一個隨機數(假設500就是資料庫內記錄的總數)。然後,你遍歷每一記錄來測試ID 的值、檢查其是否匹配RNumber。滿足條件的話就執行由THEN 關鍵字開始的那一塊代碼。假如你的RNumber 等於495,那麼要循環一遍資料庫花的時間可就長了。雖然500這個數字看起來大了些,但相比更為穩固的企業解決方案這還是個小型資料庫了,後者通常在一個資料庫內就包含了成千上萬條記錄。這時候不就死定了?
採用SQL,你就可以很快地找出准確的記錄並且打開一個只包含該記錄的recordset,如下所示:
Randomize
RNumber = Int(Rnd*499) + 1
SQL = "SELECT * FROM Customers WHERE ID = " & RNumber
set objRec = ObjConn.Execute(SQL)
Response.WriteRNumber & " = " & objRec("ID") & " " & objRec("c_email")
不必寫出RNumber 和ID,你只需要檢查匹配情況即可。只要你對以上代碼的工作滿意,你自可按需操作「隨機」記錄。Recordset沒有包含其他內容,因此你很快就能找到你需要的記錄這樣就大大降低了處理時間。
再談隨機數
現在你下定決心要榨乾Random 函數的最後一滴油,那麼你可能會一次取出多條隨機記錄或者想採用一定隨機范圍內的記錄。把上面的標准Random 示例擴展一下就可以用SQL應對上面兩種情況了。
為了取出幾條隨機選擇的記錄並存放在同一recordset內,你可以存儲三個隨機數,然後查詢資料庫獲得匹配這些數字的記錄:
SQL = "SELECT * FROM Customers WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3
假如你想選出10條記錄(也許是每次頁面裝載時的10條鏈接的列表),你可以用BETWEEN 或者數學等式選出第一條記錄和適當數量的遞增記錄。這一操作可以通過好幾種方式來完成,但是 SELECT 語句只顯示一種可能(這里的ID 是自動生成的號碼):
SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " & RNumber & "+ 9"
注意:以上代碼的執行目的不是檢查資料庫內是否有9條並發記錄。
隨機讀取若干條記錄,測試過
Access語法:SELECT top 10 * From 表名 ORDER BY Rnd(id)
Sql server:select top n * from 表名 order by newid()
mysql select * From 表名 Order By rand() Limit n
Access左連接語法(最近開發要用左連接,Access幫助什麼都沒有,網上沒有Access的SQL說明,只有自己測試, 現在記下以備後查)
語法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...
使用SQL語句 用...代替過長的字元串顯示
語法:
SQL資料庫:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
Access資料庫:SELECT iif(len(field)>2,left(field,2)+'...',field) FROM tablename;
Conn.Execute說明
Execute方法
該方法用於執行SQL語句。根據SQL語句執行後是否返回記錄集,該方法的使用格式分為以下兩種:
1.執行SQL查詢語句時,將返回查詢得到的記錄集。用法為:
Set 對象變數名=連接對象.Execute("SQL 查詢語言")
Execute方法調用後,會自動創建記錄集對象,並將查詢結果存儲在該記錄對象中,通過Set方法,將記錄集賦給指定的對象保存,以後對象變數就代表了該記錄集對象。
2.執行SQL的操作性語言時,沒有記錄集的返回。此時用法為:
連接對象.Execute "SQL 操作性語句" [, RecordAffected][, Option]
·RecordAffected 為可選項,此出可放置一個變數,SQL語句執行後,所生效的記錄數會自動保存到該變數中。通過訪問該變數,就可知道SQL語句隊多少條記錄進行了操作。
·Option 可選項,該參數的取值通常為adCMDText,它用於告訴ADO,應該將Execute方法之後的第一個字元解釋為命令文本。通過指定該參數,可使執行更高效。
·BeginTrans、RollbackTrans、CommitTrans方法
這三個方法是連接對象提供的用於事務處理的方法。BeginTrans用於開始一個事物;RollbackTrans用於回滾事務;CommitTrans用於提交所有的事務處理結果,即確認事務的處理。
事務處理可以將一組操作視為一個整體,只有全部語句都成功執行後,事務處理才算成功;若其中有一個語句執行失敗,則整個處理就算失敗,並恢復到處里前的狀態。
BeginTrans和CommitTrans用於標記事務的開始和結束,在這兩個之間的語句,就是作為事務處理的語句。判斷事務處理是否成功,可通過連接對象的Error集合來實現,若Error集合的成員個數不為0,則說明有錯誤發生,事務處理失敗。Error集合中的每一個Error對象,代表一個錯誤信息。
SQL語句大全精要
2006/10/26 13:46
DELETE語句
DELETE語句:用於創建一個刪除查詢,可從列在 FROM 子句之中的一個或多個表中刪除記錄,且該子句滿足 WHERE 子句中的條件,可以使用DELETE刪除多個記錄。
語法:DELETE [table.*] FROM table WHERE criteria
語法:DELETE * FROM table WHERE criteria='查詢的字'
說明:table參數用於指定從其中刪除記錄的表的名稱。
criteria參數為一個表達式,用於指定哪些記錄應該被刪除的表達式。
可以使用 Execute 方法與一個 DROP 語句從資料庫中放棄整個表。不過,若用這種方法刪除表,將會失去表的結構。不同的是當使用 DELETE,只有數據會被刪除;表的結構以及表的所有屬性仍然保留,例如欄位屬性及索引。
UPDATE
有關UPDATE,急!!!!!!!!!!!
在ORACLE資料庫中
表 A ( ID ,FIRSTNAME,LASTNAME )
表 B( ID,LASTNAME)
表 A 中原來ID,FIRSTNAME兩個欄位的數據是完整的
表 B中原來ID,LASTNAME兩個欄位的數據是完整的
現在要把表 B中的LASTNAME欄位的相應的數據填入到A表中LASTNAME相應的位置。兩個表中的ID欄位是相互關聯的。
先謝謝了!!!!
update a set a.lastname=(select b.lastname from b where a.id=b.id)
掌握SQL四條最基本的數據操作語句:Insert,Select,Update和Delete。
練掌握SQL是資料庫用戶的寶貴財 富。在本文中,我們將引導你掌握四條最基本的數據操作語句—SQL的核心功能—來依次介紹比較操作符、選擇斷言以及三值邏輯。當你完成這些學習後,顯然你已經開始算是精通SQL了。
在我們開始之前,先使用CREATE TABLE語句來創建一個表(如圖1所示)。DDL語句對資料庫對象如表、列和視進行定義。它們並不對表中的行進行處理,這是因為DDL語句並不處理資料庫中實際的數據。這些工作由另一類SQL語句—數據操作語言(DML)語句進行處理。
SQL中有四種基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由於這是大多數SQL用戶經常用到的,我們有必要在此對它們進行一一說明。在圖1中我們給出了一個名為EMPLOYEES的表。其中的每一行對應一個特定的雇員記錄。請熟悉這張表,我們在後面的例子中將要用到它。
H. SQL語言參考大全的內容簡介
《SQL語言參考大全》是一本介紹SQL語言的綜合參考手冊,書中幾乎囊括了使用SQL進行資料庫開發和管理的各種技術,涉及當前流行的SQL Server 2000、SQL Server 2005、Oracle和MySQL 4種資料庫。全書共分25章,包括資料庫配置與管理、使用企業管理器管理資料庫、SQL語言基礎、管理資料庫與數據表、添加數據、修改和刪除數據、SQL基本查詢、復雜查詢、數據排序、數據統計分析、子查詢、多表連接查詢、聚合與旋轉數據、視圖、存儲過程、自定義函數、觸發器、游標、事務、索引、聚合函數、數學函數、字元串處理函數、日期時間處理函數和類型轉換函數等內容。書中各部分技術既相對獨立又相互聯系,可以逐步引導讀者深入學習並掌握SQL編程的各種知識、方法和技巧。
《SQL語言參考大全》附有配套光碟。光碟提供了書中實例的全部源代碼,這些源代碼都經過精心調試,在Windows 2000下測試通過,保證能夠正常運行。
《SQL語言參考大全》內容精煉、重點突出、實例豐富,是從事資料庫開發人員的必備參考書,同時也非常適合大、中專院校師生閱讀。
I. SQL語法範例大全的目 錄
第1篇 SQL及關系資料庫概述
第1章 關系資料庫概述 2
1.1 資料庫的基本概念 3
1.1.1 資料庫的發展 3
1.1.2 資料庫系統組成 3
1.1.3 數據處理的抽象描述 3
1.1.4 數據模型 4
1.2 關系資料庫基本概念 4
1.2.1 關系模式 4
1.2.2 關系模型的特點及組成 5
1.2.3 關系數據語言的種類 6
1.2.4 域 7
1.2.5 笛卡兒積 7
1.2.6 關系 8
1.2.7 全關系系統十二准則 9
1.2.8 規范化(NF範式) 9
1.3 關系資料庫類型 10
1.3.1 桌面資料庫 10
1.3.2 網路資料庫 10
1.4 常用關系資料庫介紹 10
1.4.1 Microsoft Access 11
1.4.2 FoxPro 11
1.4.3 MySQL 11
1.4.4 Firebird 12
1.4.5 PostgreSQL 13
1.4.6 Informix 14
1.4.7 DB2 14
1.4.8 Sybase 15
1.4.9 SQL Server 17
1.4.10 Oracle 22
1.5 小結 29
第2章 SQL概述 30
2.1 SQL的功能和特性 31
2.2 SQL語法分類 32
2.3 SQL標准與版本 32
2.3.1 SQL92標准 33
2.3.2 SQL99標准 33
2.3.3 SQL:2003標准 34
2.4 SQL表達式 34
2.5 SQL標識符 34
2.5.1 特殊字元(語法約定) 34
2.5.2 注釋字元 35
2.6 SQL常量 35
2.7 SQL變數 37
2.8 SQL數據類型 37
2.8.1 數值型數據 37
2.8.2 字元型數據 38
2.8.3 日期數據類型 38
2.8.4 其他數據類型 39
2.9 SQL語句 40
2.9.1 SQL語句分類 40
2.9.2 SELECT查詢語句 41
2.10 SQL語句的執行方法 42
2.11 SQL與關系資料庫 42
2.12 SQL的發展 42
2.13 小結 42
第3章 SQL擴展、工具及範例資料庫介紹 44
3.1 T-SQL 46
3.1.1 注釋語句 46
3.1.2 常量 46
3.1.3 變數 46
3.1.4 運算符 47
3.1.5 數據類型 48
3.1.6 函數 49
3.1.7 流程式控制制語句 49
3.2 PL/SQL 50
3.2.1 注釋語句 50
3.2.2 數據類型 51
3.2.3 SQL92、T-SQL、PL/SQL數據
類型比較 51
3.2.4 運算符 52
3.2.5 函數 52
3.2.6 PL/SQL與T-SQL函數比較 53
3.2.7 常量和變數 53
3.2.8 流程式控制制語句 54
3.3 SQLCMD工具 55
3.4 SQL Server查詢分析工具 57
3.5 Oracle企業管理器EM工具 58
3.6 Oracle SQL * Plus工具 60
3.6.1 SQL*Plus的主要功能 60
3.6.2 SQL*Plus啟動和快速登錄
方法 61
3.6.3 SQL*Plus常用命令操作 62
3.6.4 iSQL * Plus 70
3.7 PL/SQL Developer工具 72
3.7.1 主要功能特性 72
3.7.2 軟體資源 74
3.7.3 基本用法 74
3.8 TOAD工具 76
3.8.1 主要功能特性 76
3.8.2 軟體資源 77
3.8.3 基本用法 77
3.9 範例資料庫介紹 80
3.9.1 SQL Server學籍管理資料庫 80
3.9.2 SQL Server系統示例庫 84
3.9.3 Oracle系統示例庫 84
3.10 本章小結 90
第2篇 SQL運算符和函數
第4章 SQL運算符 92
4.1 算術運算符 94
4.2 賦值運算符 94
4.3 字元串串聯運算符 94
4.3.1 加號「+」 94
4.3.2 雙豎號「||」 94
4.4 一元運算符 94
4.5 邏輯運算符 95
4.6 比較運算符 95
4.7 集合運算符 96
4.7.1 UNION運算符 96
4.7.2 EXCEPT運算符 96
4.7.3 INTERSECT運算符 97
4.8 運算符優先順序 97
4.9 SQL92、SQL Server和Oracle運算符
比較 97
4.10 小結 99
第5章 函數 100
5.1 數值函數 102
5.2 字元串函數 103
5.3 日期時間函數 104
5.4 數據類型轉換函數 106
5.4.1 CAST ()函數 106
5.4.2 CONVERT () 函數 107
5.5 統計函數 109
5.5.1 SUM ()求和 110
5.5.2 COUNT ()計數 110
5.5.3 MAX () /MIN ()求最大/
最小值 111
5.5.4 AVG ()求均值 112
5.5.5 VAR () /VARP () 求方差 113
5.5.6 STDEV () /STDEVP ()求標准
誤差 113
5.5.7 使用DISTINCT關鍵字進行
重值篩選 114
5.6 小結 114
第3篇 數據查詢操作
第6章 簡單查詢 116
6.1 用SELECT子句選擇列表 118
6.1.1 選擇列 119
6.1.2 更改列標題 119
6.1.3 使用TOP限制選擇行數 120
6.1.4 DISTINCT去掉重復的欄位
數據 121
6.1.5 DISTINCTROW去掉重復的
記錄數據 122
6.2 FROM子句 122
6.2.1 對具有相同列名的兩個表
進行查詢 123
6.2.2 從查詢結果集合中查詢數據 123
6.3 WHERE子句 123
6.3.1 使用比較運算符指定查詢
條件 124
6.3.2 使用邏輯運算符指定查詢
條件 124
6.3.3 使用范圍BETWEEN指定
查詢條件 125
6.3.4 使用列表IN指定查詢條件 125
6.3.5 使用LIKE與通配符指定查詢
條件 125
6.3.6 NULL空值的判斷 126
6.3.7 使用包含判斷詞EXISTS、
ALL、ANY、SOME 126
6.4 GROUP BY子句 130
6.4.1 一般情況的分組查詢 131
6.4.2 GROUP BY子句根據多列組
合行 132
6.4.3 CUBE和ROLLUP運算符及
使用 132
6.4.4 GROUP BY子句中的NULL
值處理 133
6.5 HAVING子句 134
6.5.1 HAVING子句的一般應用 134
6.5.2 HAVING與WHERE子句的
區別 135
6.5.3 HAVING子句單獨使用 136
6.5.4 HAVING子句與CASE語句
結合使用 137
6.6 ORDER BY子句 137
6.6.1 ORDER BY子句的使用 137
6.6.2 ORDER BY子句的約束 139
6.7 小結 139
第7章 連接查詢 141
7.1 連接概述 143
7.1.1 連接范圍 143
7.1.2 連接類型 143
7.1.3 笛卡兒積 143
7.1.4 連接語法 144
7.1.5 連接運算符 144
7.2 自(身)連接 144
7.3 內連接(INNER JOIN) 145
7.3.1 等值連接 145
7.3.2 不等連接 146
7.3.3 自然連接 147
7.4 外連接 148
7.4.1 左外連接(LEFT JOIN) 148
7.4.2 右外連接(RIGHT JOIN) 149
7.4.3 全外連接(FULL JOIN) 150
7.5 交叉連接(CROSS JOIN) 151
7.6 小結 151
第8章 集合查詢 153
8.1 集合概念 155
8.2 集合性質 155
8.3 集合運算 155
8.4 UNION運算符 156
8.4.1 使用UNION進行表內查詢 156
8.4.2 使用UNION進行多表查詢 157
8.4.3 使用UNION JOIN連接查詢 158
8.5 INTERSECT運算符 159
8.6 EXCEPT運算符 159
8.7 小結 160
第9章 子查詢 161
9.1 概述 163
9.1.1 子查詢定義 163
9.1.2 子查詢語法 163
9.1.3 子查詢的兩種基本形式 164
9.1.4 子查詢的優點 165
9.1.5 子查詢分類 165
9.1.6 子查詢中的比較運算符與謂詞 165
9.1.7 使用子查詢的規則 168
9.2 單行子查詢 169
9.3 多行子查詢 170
9.3.1 在多行子查詢中使用IN比較符 170
9.3.2 在多行子查詢中使用ALL、SOME、ANY比較符 171
9.4 多列子查詢 172
9.5 相關子查詢 173
9.5.1 使用單行比較運算符引入相關子查詢 174
9.5.2 使用IN引入相關子查詢 174
9.5.3 在子查詢中使用[NOT] EXISTS 175
9.6 在各類SQL語句中使用子查詢 177
9.6.1 在SELECT子句中使用子查詢 177
9.6.2 在FROM子句中使用子查詢 177
9.6.3 在WHERE子句中使用子查詢 177
9.6.4 在GROUP BY子句中使用子查詢 178
9.6.5 在HAVING子句中使用子查詢 178
9.6.6 在CREATE TABLE語句中使用子查詢 178
9.6.7 在CREATE VIEW語句中使用子查詢 179
9.6.8 在INSERT INTO子句中使用子查詢 180
9.6.9 在UPDATE語句中使用子查詢 181
9.6.10 在DELETE語句中使用子查詢 182
9.6.11 使用WITH子句重用子查詢 182
9.7 樹查詢 183
9.8 小結 184
第4篇 數據更新操作
第10章 資料庫操作 186
10.1 創建資料庫 188
10.2 查看資料庫信息 193
10.3 更改資料庫 193
10.3.1 更改資料庫名稱 195
10.3.2 修改資料庫文件 195
10.3.3 更改資料庫屬性 200
10.4 刪除資料庫 201
10.5 小結 201
第11章 方案操作 202
11.1 方案概述 204
11.2 查找方案 204
11.3 創建方案 204
11.4 更改方案 206
11.5 刪除方案 206
11.6 小結 207
第12章 數據表操作 208
12.1 創建表 210
12.2 復製表 211
12.3 修改表結構 212
12.3.1 增加列和約束 212
12.3.2 查找列約束 214
12.3.3 修改列和約束 214
12.3.4 刪除列和約束 215
12.4 行記錄操作 215
12.4.1 插入記錄 215
12.4.2 修改記錄 218
12.4.3 刪除記錄(DELETE) 223
12.4.4 刪除記錄(TRUNCATE) 225
12.5 重命名表 226
12.6 刪除表 226
12.7 MERGE語句 226
12.8 小結 228
第13章 索引操作 229
13.1 索引的分類 231
13.1.1 索引的概念 231
13.1.2 索引分類 231
13.2 索引使用的場所 232
13.3 查看索引 233
13.4 創建索引 234
13.4.1 創建索引的方法 234
13.4.2 CREATE INDEX語法 234
13.4.3 創建聚簇索引 236
13.4.4 創建非聚簇索引 236
13.4.5 創建簡單列索引 236
13.4.6 創建組合列索引 237
13.4.7 創建普通索引 238
13.4.8 創建唯一索引 238
13.4.9 創建視圖索引 241
13.5 修改索引 242
13.6 禁用/啟用索引 245
13.7 刪除索引 245
13.8 小結 246
第14章 視圖操作 248
14.1 查詢視圖 250
14.2 創建視圖 251
14.3 修改視圖 255
14.4 刪除視圖 256
14.5 小結 257
第15章 序列操作 258
15.1 創建序列 260
15.2 查找序列值 260
15.3 使用序列 261
15.4 修改序列 261
15.5 刪除序列 262
15.6 小結 262
第5篇 數據安全管理
第16章 完整性約束 264
16.1 資料庫的安全性 266
16.2 完整性約束分類 267
16.3 表約束 268
16.3.1 DEFAULT約束 268
16.3.2 NOT NULL約束 269
16.3.3 CHECK約束 269
16.3.4 UNIQUE約束 270
16.3.5 PRIMARY KEY約束 270
16.3.6 FOREIGN KEY約束 271
16.3.7 FOREIGN KEY的MATCH
約束 272
16.4 域約束 273
16.5 斷言 273
16.6 禁止與啟用約束 274
16.7 查看約束 275
16.8 刪除約束DROP 275
16.9 小結 275
第17章 用戶管理 277
17.1 查找用戶及相關信息 279
17.2 創建用戶 282
17.3 修改用戶 285
17.4 刪除用戶 286
17.5 小結 286
第18章 角色管理 288
18.1 角色的概念 290
18.2 查找角色 290
18.3 創建角色 293
18.4 更改角色 295
18.5 刪除角色 295
18.6 小結 295
第19章 許可權管理 297
19.1 許可權分類 299
19.2 查看許可權 299
19.3 授予許可權 303
19.3.1 授予ALL許可權 304
19.3.2 授予SELECT許可權 304
19.3.3 授予CREATE許可權 304
19.3.4 授予INSERT許可權 305
19.3.5 授予UPDATE列許可權 305
19.3.6 授予ALTER許可權 305
19.3.7 授予EXECUTE許可權 306
19.3.8 授予REFERENCES許可權 306
19.3.9 授予DELETE許可權 306
19.3.10 授予DROP許可權 306
19.3.11 授予用戶角色的許可權 307
19.4 收回許可權 308
19.5 小結 309
第6篇 SQL編程
第20章 事務控制與並發處理 312
20.1 事務的基本概念 314
20.2 鎖的基本概念和分類 314
20.3 事務的並發控制 318
20.3.1 並發控制方法 319
20.3.2 事務隔離級別 319
20.3.3 事務特性的設置 321
20.4 事務開始和終止 322
20.5 資料庫讀寫訪問操作 322
20.6 事務提交 322
20.7 事務回滾 323
20.8 SQL Server與Oracle事務處理的
比較 324
20.9 小結 324
第21章 存儲過程 326
21.1 存儲過程的概念 329
21.2 存儲過程的優點 329
21.3 存儲過程分類 329
21.4 SQL Server存儲過程中的控制語句 330
21.4.1 注釋語句 330
21.4.2 屏幕輸出語句 330
21.4.3 變數定義和使用語句 330
21.4.4 塊語句 331
21.4.5 判斷語句 331
21.4.6 循環語句 332
21.4.7 轉向定位語句 333
21.4.8 定時執行語句 333
21.4.9 錯誤捕獲語句 333
21.5 Oracle存儲過程中的控制語句 333
21.5.1 注釋語句 334
21.5.2 屏幕輸出語句 334
21.5.3 變數和常量的定義和使用 334
21.5.4 塊語句BEGIN…END 337
21.5.5 判斷語句IF、CASE 338
21.5.6 循環語句 340
21.5.7 轉向定位語句 342
21.5.8 定時執行作業任務dbms_job 342
21.5.9 錯誤捕獲語句 346
21.6 存儲過程的創建 346
21.6.1 創建存儲過程的語法 346
21.6.2 創建無參數的存儲過程 347
21.6.3 創建有參數的存儲過程 347
21.7 存儲過程的調用與執行 349
21.7.1 RETURN語句及返回值 350
21.7.2 存儲過程的創建和調用步驟 351
21.7.3 存儲過程調用方法和步驟 352
21.7.4 調用無參數的過程 352
21.7.5 調用有參數的過程 352
21.8 存儲過程的查看 354
21.8.1 查看SQL Server存儲過程 354
21.8.2 查看Oracle存儲過程 356
21.9 存儲過程的修改和重編譯 359
21.9.1 修改存儲過程 360
21.9.2 重命名存儲過程 360
21.9.3 存儲過程的重編譯 361
21.10 存儲過程的刪除 364
21.11 SQL Server中幾個重要的存儲
過程介紹 365
21.11.1 sp_attach_db 366
21.11.2 sp_attach_single_file_db 366
21.11.3 sp_changedbowner 367
21.11.4 sp_changeobjectowner 367
21.11.5 sp_configure 368
21.11.6 xp_cmdshell 370
21.11.7 sp_spaceused 373
21.11.8 sp_msforeachtable 374
21.12 存儲過程應用實例 374
21.12.1 用存儲過程實現數據表更新
操作 374
21.12.2 用存儲過程實現數據備份與
恢復 376
21.13 小結 377
第22章 存儲函數 379
22.1 存儲函數和存儲過程的區別 381
22.2 存儲函數的類型和約定 381
22.3 存儲函數的創建和調用 383
22.3.1 存儲函數創建語法 385
22.3.2 存儲函數調用類型、方法和
語法 387
22.3.3 SQL Server存儲函數的創建
和調用 387
22.3.4 Oracle存儲函數的創建和
調用 390
22.4 存儲函數的更改 396
22.5 存儲函數的編譯 397
22.6 存儲函數信息的查看 397
22.6.1 查看SQL Server存儲函數 398
22.6.2 查看Oracle存儲函數 399
22.7 存儲函數的刪除 401
22.8 小結 402
第23章 觸發器 404
23.1 觸發器概述 406
23.1.1 觸發器的基本概念 406
23.1.2 觸發器的用途和優勢 407
23.1.3 觸發器的類型 408
23.1.4 觸發器中的兩個臨時表 409
23.2 創建SQL Server觸發器 409
23.2.1 創建DML觸發器 410
23.2.2 創建DDL觸發器 420
23.2.3 創建INSTEAD OF觸發器 423
23.2.4 創建嵌套觸發器 426
23.2.5 創建遞歸觸發器 428
23.3 創建Oracle觸發器 430
23.3.1 觸發謂詞的使用 431
23.3.2 創建DML語句觸發器 432
23.3.3 創建DML行觸發器 435
23.3.4 創建DDL觸發器 438
23.3.5 創建INSTERD OF觸發器 439
23.3.6 創建事件觸發器 441
23.4 更改觸發器 444
23.5 重新編譯Oracle觸發器 446
23.6 禁止和啟用觸發器 446
23.7 查看觸發器信息 447
23.7.1 查看SQL Server觸發器 447
23.7.2 查看Oracle觸發器 449
23.8 刪除觸發器 451
23.9 本章小結 453
第24章 游標 455
24.1 游標的基本概念 457
24.1.1 游標的基本原理 457
24.1.2 游標的內容構成 457
24.1.3 游標的類型 457
24.1.4 游標變數 461
24.2 游標操作 462
24.2.1 申明游標 462
24.2.2 打開游標 463
24.2.3 讀取數據 464
24.2.4 關閉游標CLOSE 469
24.2.5 刪除游標 469
24.3 查看游標 470
24.3.1 查看SQL Server游標 470
24.3.2 查看Oracle游標 475
24.4 游標循環 476
24.5 參數游標 478
24.6 游標嵌套 479
24.7 游標應用 479
24.8 小結 483
第25章 錯誤和異常處理 486
25.1 錯誤和異常分類 488
25.2 SQL Server錯誤和異常處理 488
25.2.1 錯誤信息及存儲 488
25.2.2 錯誤捕獲方法 488
25.3 Oracle錯誤和異常處理 492
25.3.1 異常處理方法 492
25.3.2 異常處理語法 492
25.3.3 預定義異常處理 493
25.3.4 非預定義異常處理 494
25.3.5 自定義異常處理 495
25.4 小結 496
第7篇 SQL在資料庫開發和
管理中的應用
第26章 嵌入式SQL 498
26.1 ESQL基本概念 500
26.2 SQL的使用方法 500
26.3 ESQL語句和宿主語言之間的通信
方法 502
26.3.1 使用SQL通信區通信 503
26.3.2 使用主變數通信 503
26.3.3 使用游標通信 506
26.4 ESQL的編譯處理過程 507
26.5 使用WHENEVER語句簡化錯誤
處理 507
26.6 在高級語言中嵌入SQL 509
26.6.1 ESQL的語法格式 509
26.6.2 在Visual C++下執行ESQL
語句 509
26.6.3 在Visual C#中執行嵌入式
T-SQL語句 511
26.7 在資料庫管理系統中嵌入SQL 513
26.7.1 ESQL語句與T-SQL和
PL/SQL語句的比較 513
26.7.2 在SQL Server中使用嵌入式
SQL 514
26.7.3 在Oracle中嵌入SQL 517
26.8 動態SQL技術 524
26.8.1 動態SQL的基本概念 524
26.8.2 SQL Server動態SQL語句的處理 525
26.8.3 Oracle動態SQL語句的處理 527
26.9 小結 532
第27章 資料庫的存取訪問技術 534
27.1 資料庫系統的開發環境 536
27.2 應用系統的典型結構 536
27.3 開發平台和工具 538
27.3.1 Power Builder 538
27.3.2 Delphi 539
27.3.3 Oracle Developer Suite 539
27.3.4 .NET 540
27.3.5 J2EE 542
27.3.6 .NET和J2EE比較 543
27.4 資料庫的連接訪問技術 543
27.4.1 OLE DB 543
27.4.2 ODBC 545
27.4.3 JDBC 547
27.4.4 ADO 549
27.4.5 ADO.NET 556
27.4.6 Recordset對象方法的使用 561
27.5 ASP/ASP.NET與資料庫的連接和訪問 562
27.5.1 ASP/ASP.NET與Text 563
27.5.2 ASP/ASP.NET與Excel 563
27.5.3 ASP/ASP.NET與Access 564
27.5.4 ASP/ASP.NET與SQLServer 564
27.5.5 ASP/ASP.NET與Oracle 565
27.6 VB.NET與資料庫的連接和訪問 566
27.6.1 VB.NET與Text 566
27.6.2 VB.NET與Excel 566
27.6.3 VB.NET與Access 567
27.6.4 VB.NET與SQL Server 568
27.6.5 VB.NET與Oracle 568
27.7 VC#.NET與資料庫的連接和訪問 569
27.7.1 VC#.NET與Excel 569
27.7.2 VC#.NET與Access 570
27.7.3 VC#.NET與SQL Server 571
27.7.4 VC#.NET與Oracle 572
27.8 小結 572
第28章 用SQL管理SQL Server資料庫 573
28.1 操作系統管理 576
28.1.1 查看伺服器屬性和操作系統參數 576
28.1.2 查看磁碟目錄和文件信息 577
28.1.3 查看存儲介質與磁碟分區信息 578
28.1.4 查看伺服器提供的服務組件與程序 579
28.2 DBMS管理 579
28.2.1 查看資料庫服務屬性 579
28.2.2 查看資料庫系統版本及配置參數 580
28.2.3 查看和修改資料庫屬性 580
28.2.4 查看資料庫文件和文件組屬性 582
28.2.5 查看當前資料庫重要的數據對象 582
28.2.6 查看資料庫日誌 583
28.3 用戶對象、許可權與安全管理 584
28.3.1 查看資料庫角色 584
28.3.2 查看和管理資料庫用戶 585
28.3.3 查看有關許可權 586
28.3.4 查看和管理用戶的數據對象 587
28.3.5 查看和管理進程 590
28.3.6 查看資料庫鎖 591
28.3.7 資料庫備份和恢復 593
28.4 小結 597
第29章 用SQL管理Oracle資料庫 599
29.1 系統管理 606
29.1.1 查看資料庫系統屬性 606
29.1.2 查看所有資料庫對象的屬性 607
29.1.3 查看和修改當前資料庫的字元集 608
29.1.4 查看資料庫文件的屬性 609
29.1.5 查看和設置資料庫歸檔信息 609
29.1.6 查看資料庫的數據字典 611
29.1.7 查看資料庫的後台進程 612
29.1.8 查看和修改系統的當前時間 612
29.1.9 查看SCN和MTS 613
29.2 連接、會話與進程管理 614
29.2.1 查看資料庫的並發連接會話數 614
29.2.2 查看客戶端連接會話信息 614
29.2.3 查看會話進程及客戶端信息 617
29.3 表空間和數據文件管理 619
29.3.1 查看錶空間信息 619
29.3.2 查看錶空間的數據文件和容量統計信息 620
29.3.3 查看數據對象所佔用的表空間信息 622
29.3.4 查看錶空間的碎片 623
29.3.5 查看數據文件信息 624
29.3.6 查看日誌組信息 625
29.3.7 查看競爭與等待信息 626
29.3.8 查看TRACE腳本文件 628
29.4 回滾段管理 628
29.4.1 查看回滾段的屬性 628
29.4.2 查看用戶與會話正在使用的回滾段 631
29.5 數據表管理 631
29.5.1 查看數據表的基本屬性 631
29.5.2 查看錶的存儲信息 632
29.5.3 查看錶的約束與關聯信息 634
29.5.4 表記錄管理 636
29.6 索引管理 637
29.6.1 查看索引屬性 637
29.6.2 查看用戶的索引信息 637
29.6.3 查看索引的存儲屬性 638
29.6.4 對欄位進行全文檢索 638
29.7 存儲過程、存儲函數和觸發器管理 639
29.7.1 查看存儲過程和函數的狀態信息 639
29.7.2 查看觸發器、過程、函數的創建腳本 639
29.8 查看運行的SQL語句 640
29.8.1 查看進程所對應的SQL語句 640
29.8.2 查看用戶正在運行的SQL語句 642
29.8.3 查看Disk Read最高的SQL語句 642
29.8.4 查看回滾段里正在運行的SQL語句 643
29.8.5 查看視圖對應的SQL語句 643
29.8.6 查看SQL語句的執行情況 643
29.9 角色、用戶與安全管理 643
29.9.1 查看資料庫角色信息 644
29.9.2 查看資料庫用戶信息 644
29.9.3 查看用戶對象和類型 646
29.9.4 查看有關授權信息 649
29.9.5 查看數據備份和恢復信息 650
29.10 鎖管理 651
29.10.1 查看鎖 651
29.10.2 查看被鎖的進程及鎖類型信息 654
29.10.3 查看被鎖定的資料庫對象 655
29.10.4 查看鎖定對象的客戶端信息 656
29.10.5 解鎖操作 656
29.11 參數調整與性能優化 657
29.11.1 查看資料庫伺服器參數 658
29.11.2 查看客戶端參數 659
29.11.3 查看會話環境參數 659
29.11.4 查看inin.ora參數 659
29.11.5 查看NLS參數 659
29.11.6 查看SGA 660
29.11.7 查看PGA 670
29.11.8 查看排序區 670
29.11.9 查看Large Pool 671
29.11.10 查看Java語言區 671
29.11.11 查看UGA區 671
29.11.12 查看CPU資源 671
29.11.13 查看I/O資源的使用情況 672
29.11.14 查看等待與競爭 673
29.11.15 SQL語句優化 676
29.12 小結 678
第8篇 附錄
附錄A SQL常用語句分類索引 680
附錄B SQL、SQL Server、Oracle常用函數分類對照索引 683
附錄C SQL Server常用系統表和系統存儲過程索引 689
附錄D Oracle資料庫常用視圖索引 696
附錄E Oracle資料庫系統環境變數參數 700
J. sql語句大全
sql語句最精粹的是其查詢語句,基本語句就那麼幾個,但是要用得好得好好研究下了
http://ke..com/view/3146511.htm 看看網路的介紹吧