當前位置:首頁 » 編程語言 » sql編程圖解
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql編程圖解

發布時間: 2022-11-23 04:07:16

『壹』 sql Server 的學習(編程語言)

你的概念不是很清楚,我給你說一說:

資料庫是用來存放數據的,跟你說的JAVA、VC/C++、VB沒有關系,因為JAVA、VC/C++、VB都是編程語言!記住一句話,只有當你用JAVA、VC/C++、VB等編程語言遍寫的程序需要和資料庫來連接的話,才需要用到資料庫!

SQL Server不是編程語言,是資料庫語言,這必須搞清楚!

舉個很簡單的例子:
用VB編一個"計算器"程序,就不需要用到資料庫.
而如果用VB編一個"學生成績管理系統",就要用到資料庫里學生的信息,就需要資料庫,從資料庫中取出學生姓名,成績等數據來操作.

軟體開發大多要求JAVA、VC/C++、VB,這是對的,他們都是編程語言

是不是代表資料庫開發還是以VB為主啊? 這是錯的,以後不要這么說,別人會笑你的,不過在網路"知道"上沒關系,但應聘的時候一定不要說錯!

最後總結一下:
編程語言有:
C
C++
C#
java
VB
VB.NET
...

資料庫(語言)有:

SQL Server
ACCESS
ORACLE
DB2
Visual for pro
...

『貳』 SQl常用增刪改查

SQl常用增刪改查模板

篇一:SQl常用增刪改查

SQL常用增刪改查語句

增加

現在有一張表,表(Test)裡面有三個欄位,分別為sno,sname,age。舉例用一條增加SQL語句,插入一條數據進庫。

語句:

Insert into 表名 value(『數據1』,』數據2』,』數據3』)

具體操作: Insert into testvalues('test','test','1')

通過上面這條語句,Test表裡面就多了一條數據。如下圖所示:

上面這個例子,是在每條欄位都需要插入的時候為了方便而直接在 into 後面跟表名。但是也會遇到一些特殊的情況,比如一張表,因為有主外鍵約束(我這里只有一張表),而我只想插入被約束的欄位sno(主鍵)加上age這個欄位,在 into的時候就需要指明需要插入的欄位,下面舉例說明:

語句:

Insert into 表名(『欄位名1』,』欄位名2』) values(『數據1』,』數據2』)

具體操作:

into test(sno,age)values('彭宇','21')

這樣資料庫裡面,又多了一條數據,而沒有插入任何數據那個欄位默認為NULL。如下圖所示:

刪除

在我們增加數據入庫的時候,難免會出現數據錄入錯誤,或者信息過期後不再需要的數據,所以我們要利用刪除語句將表裡面不需要的數據刪除掉。下面舉例說明。

語句:

Delete from 表名 where 欄位名='需要刪除的數據'

具體操作:

from test where sno='test'

通過這條SQL語句,Test表主鍵sno欄位裡面數據為test的該條數據就已經被刪除了。

Ps:一般來說都以主鍵為條件進行刪除,因為主鍵是不可重復的,我們可以設想一下,如果沒使用主鍵為刪除條件,假設一個公司有兩個叫彭宇的人。我使用sname=』彭宇』作為刪除條件的話,那麼這兩個同名同姓人的資料都會被刪除掉,所以這是不可取的。

批量刪除

當有多條數據需要刪除的時候,我們可以使用批量刪除語句來實現一次刪除多條數據。

語句:

from表名where欄位名in('該欄位裡面的數據1','該欄位裡面的數據2',……)

具體操作:

首先,看一下Test表裡面有多少條數據,如下圖:

現在我想利用一條SQL語句,將前三條數據刪除掉。

from test where sno in('test','test2','test3')

通過執行這條SQL語句後,前三條數據已經被我批量刪除了。

修改

一條已經錄入資料庫裡面的數據如果需要更新、修正,我們就需要用到SQL修改語句。

語句:

Update 表名set欄位='修改後的數據' where 欄位='修改條件'

具體操作:

Update test set sno='SQL修改語句' where sno='test'

修改前後比較,下圖所示: (

修改前

)(修改後)

查詢

上面進行了增加,修改操作後,資料庫裡面已經存在有數據了,最後我們要利用SQL查詢語句將它們查詢並顯示出來。

全部查詢

語句:

Select * from 表名

具體操作:

Select * from test

執行了上面這句話,那麼test表裡面存在的數據都會被查詢出來,如果我想要單獨查詢出某個人的數據怎麼辦?很簡單,只需要加上一個關鍵詞where就能夠實現了。

單條件查詢

語句:

Select * from 表名 where 欄位=』需要查詢的數據』

具體操作:

Select * from test where sno=』彭宇』

這樣我就查詢出資料庫裡面sno欄位為彭宇的數據了。

多條件查詢

多條件查詢就是比起單條件查詢多了一個and關鍵詞,使用多條件查詢,查出來的結構能夠更加的精確。

語句:

Select * from 表名 where 欄位=』需要查詢的數據』 and 欄位=』需要查詢的數據』

具體操作:

Select * from test where sno=』彭宇』』21』 and age=

篇二:SQL語句增刪改查

一、刪:有2中方法

1.使用刪除數據某些數據

語法: from <表名> [where <刪除條件>]

例: from a where name='開心朋朋'(刪除表a中列值為開心朋朋的行) 注意:刪除整行不是刪除單個欄位,所以在後面不能出現欄位名

2.使用truncate table 刪除整個表的數據

語法:truncate table <表名>

例:truncate table tongxunlu

注意:刪除表的所有行,但表的結構、列、約束、索引等不會被刪除;不能用語有外建約束引用的表

二、改

使用update更新修改數據

語法:<表名> set <列名=更新值> [where <更新條件>]例:tongxunlu set 年齡=18 where 姓名='藍色小名'

注意:set後面可以緊隨多個數據列的更新值;where子句是可選的,用來限制條件,如果不選則整個表的所有行都被更新

四、查

1.普通查詢

語法:select <列名> from <表名> [where <查詢條件表達試>] [order by <排序的列名>[asc或desc]]

1).查詢所有數據行和列

例:select * from a

說明:查詢a表中所有行和列

2).查詢部分行列--條件查詢

例:select i,j,k from a where f=5 說明:查詢表a中f=5的所有行,並顯示i,j,k3列

3).在查詢中使用AS更改列名

例:select name as 姓名 from a whrer xingbie='男'

說明:查詢a表中性別為男的所有行,顯示name列,並將name列改名為(姓名)顯示

4).查詢空行

例:select name from a where email is null

說明:查詢表a中email為空的所有行,並顯示name列;SQL語句中用is null或者is not null來判斷是否為空行

5).在查詢中使用常量

例:select name '唐山' as 地址 from a

說明:查詢表a,顯示name列,並添加地址列,其列值都為'唐山'

6).查詢返回限制行數(關鍵字:top percent)

例1:select top 6 name from a

說明:查詢表a,顯示列name的前6行,top為關鍵字

例2:select top 60 percent name from a

說明:查詢表a,顯示列name的60%,percent為關鍵字

7).查詢排序(關鍵字:order by , asc , desc)

例:select name

from a

where chengji>=60

order by desc

說明:查詢表中chengji大於等於60的所有行,並按降序顯示name列;默認為ASC升序

2.模糊查詢

1).使用like進行模糊查詢

注意:like運算副只用語字元串,所以僅與char和varchar數據類型聯合使用 例:select * from a where name like '趙%'

說明:查詢顯示表a中,name欄位第一個字為趙的記錄

2).使用between在某個范圍內進行查詢

例:select * from a where nianling between 18 and 20

說明:查詢顯示表a中nianling在18到20之間的記錄

3).使用in在列舉值內進行查詢

例:select name from a where address in ('北京','上海','唐山')

說明:查詢表a中address值為北京或者上海或者唐山的記錄,顯示name欄位3.分組查詢

1).使用group by進行分組查詢

例:select studentID as 學員編號,AVG(score) as 平均成績 (注釋:這里的score是列名)

from score (注釋:這里的score是表名)

group by studentID

說明:在表score中查詢,按strdentID欄位分組,顯示strdentID欄位和score欄位的平均值;select語句中只允許被分組的列和為每個分組返回的一個值的表達試,例如用一個列名作為參數的聚合函數

2).使用having子句進行分組篩選

例:select studentID as 學員編號,AVG(score) as 平均成績 (注釋:這里的score是列名)

from score (注釋:這里的score是表名)

group by studentID

having count(score)>1

說明:接上面例子,顯示分組後count(score)>1的行,由於where只能在沒有分組時使用,分組後只能使用having來限制條件,

4.多表聯接查詢

1).內聯接

①在where子句中指定聯接條件

例:select a.name,b.chengji

from a,b

where a.name=b.name

說明:查詢表a和表b中name欄位相等的記錄,並顯示表a中的name欄位和表b中的chengji欄位

②在from子句中使用join…on

例:select a.name,b.chengji

from a inner join b

on (a.name=b.name)

說明:同上

2).外聯接

①左外聯接查詢

例:select s.name,c.courseID,c.score

from strdents as s

left outer join score as c

on s.scode=c.strdentID

說明:在strdents表和score表中查詢滿足on條件的行,條件為score表的.strdentID與strdents表中的sconde相同

②右外聯接查詢

例:select s.name,c.courseID,c.score

from strdents as s

right outer join score as c

on s.scode=c.strdentID

說明:在strdents表和score表中查詢滿足on條件的行,條件為strdents表中的sconde與score表的strdentID相同

三、增:有4種方法

1.使用插入單行數據:

語法: [into] <表名> [列名] values <列值>

例: into Strdents (姓名,性別,出生日期) values ('開心朋朋','男','1980/6/15')

注意:into可以省略;列名列值用逗號分開;列值用單引號因上;如果省略表名,將依次插入所有列

2.使用 select語句將現有表中的數據添加到已有的新表中

語法: into <已有的新表> <列名>

select <原表列名> from <原表名>

例: into tongxunlu ('姓名','地址','電子郵件')

select name,address,email

from Strdents

注意:into不可省略;查詢得到的數據個數、順序、數據類型等,必須與插入的項保持一致

3.使用select into語句將現有表中的數據添加到新建表中

語法:select <新建表列名> into <新建表名> from <源表名>例:select name,address,email into tongxunlu from strdents

注意:新表是在執行查詢語句的時候創建的,不能夠預先存在

在新表中插入標識列(關鍵字『identity』):

語法:select identity (數據類型,標識種子,標識增長量) AS 列名

into 新表 from 原表名

例:select identity(int,1,1) as 標識列,dengluid,password into tongxunlu from Struents

注意:關鍵字『identity』

4.使用union關鍵字合並數據進行插入多行

語法: <表名> <列名> select <列值> tnion select <列值>

例: Students (姓名,性別,出生日期)

select '開心朋朋','男','1980/6/15' union(union表示下一行)

select '藍色小明','男','19**/**/**'

注意:插入的列值必須和插入的列名個數、順序、數據類型一致

篇三:SQL常用增刪改查語句

SQLSQL常用增刪改查語句

作者:hiker

一. Insert 插入語句

1. Insert into 表名(列名) values (對應列名值)//插入一行.

2. Insert into 新表名(列名)

Select (列名) 舊表名

3. Select 舊表名.欄位…

Into 新表名 from 舊表名

4. Select identity ( 數據類型,標識種子,標識增長量) as 列名

Into新表名

From 舊表名

5. Insert 表名(列名)

Select (對應列名值) union

Select (對應列名值) union

Select (對應列名值)

二. Update 更新語句

1. Update 表名 set 列名=』更新值』 where 更新條件

三. 刪除語句

1. from 表名 where 刪除條件

2. truncate table 表名 //刪除表中所有行

四. select 基本查詢語句

1. select 列名 from 表名 where 查詢條件

order by 排序的列名asc或desc升/降

2. select 列名 as 別名 from 表名 where 查詢條件

3. select 列名 from 表名 where 列名 is null //查詢空值

4. select 列名 , 『常量值』 as 別名 from 表名//查詢時定義輸出一列常量值

5. select top 5 列名 from 表名 //查詢前5行

6. select top 5 percent 列名 from 表名 //查詢前百分之5的數據行

五.

1.

2.

3.

4. select 函數查詢語句 selectLEN(Class_Name)fromClass //查詢class_Name字元串長度 selectupper(Class_Name)fromClass //查詢class_Name並轉換為大寫 ltrim和rtrim //清除字元串左右空格 selectREPLACE(card_No,'0','9')fromCardRecord//修改列中字元串中的字元 列名字元串中0修改為9

5. selectSTUFF(Card_No,2,3,'8888')fromCardRecord

列名字元串中第2個開始刪除3個字元,再從第二個開始插入8888字元串

6. selectGETDATE()//顯示系統日期

六.

1.

2.

3.

4.

5. select 高級查詢語句 select * from 表名 where列名 like 『 %s%』 //模糊查詢 select * from 表名 where 列名 between 60 and 80 //范圍查詢 select * from 表名 where 列名 in (『列舉』,』』,』』) //在列舉范圍內查詢 selectSUM(Score_Num)fromscores //查詢分數總和 avg max min count //查詢平均分/最大數/最小數/行數

selectcourse_Id,SUM(Score_Num)fromscores

groupbyCourse_Id//分組查詢

havingCourse_Id='jsj001'//分組子句篩選

七. Select 多表連接查詢語句

1.selects.stu_Nameas'姓名',c.Course_nameas'科目',sc.Score_Num

fromStudentsass

innerjoinScoresasscon(sc.Stu_Id=s.Stu_ID)

innerjoinCoursesascon(sc.Course_Id=c.Course_Id)

orderbys.Stu_Namedesc //三表內聯查詢

2.selects.stu_Nameas'姓名',c.Course_nameas'科目',sc.Score_Num

fromStudentsass

leftouterjoinScoresasscon(sc.Stu_Id=s.Stu_ID)

leftouterjoinCoursesascon(sc.Course_Id=c.Course_Id)

//三表左外聯查詢,以stu表為主,其它表為從。

3.selects.stu_Nameas'姓名',c.Course_nameas'科目',sc.Score_Num

fromCoursesasc

rightouterjoinScoresasscon(sc.Course_Id=c.Course_Id)

rightouterjoinStudentsasson(sc.Stu_Id=s.Stu_ID)

//三表右外聯查詢,以stu右表為主,其它表為從。

八. Create 創建資料庫語句

1. create database 資料庫名

on[primary]

(

<數據文件參數>[,…n] [<文件參數>]

)

[log on]

(

{<日誌文件參數> […n]}

)

文件參數:

Name=邏輯文件名,filename=物理文件名,size=大小,maxsize=最大容量,

Filegrowth=增長

文件組參數:

Filegroup 文件組名<文件參數>

例:

usemaster

go

ifexists(select*fromsysdatabaseswherename='abc')

dropdatabaseabc

createdatabaseabc

onprimary

(

name='abc',

filename='d:abc.mdf',

size=5,

maxsize=50,

filegrowth=10%

)

logon

(

name='abc_log',

filename='d:abc_log.ldf',

size=2,

maxsize=20,

filegrowth=1

)

2. use 資料庫名

go

create table 表名

(

欄位數據類型列的特徵

)

Go

例:

usedb_myschool

go

ifexists(select*fromsysobjectswherename='test1')

droptabletest1

createtabletest1

(

Idintnotnull,

SNamenvar50)notnull,

Telintnotnull

)

go

3.使用SQL語句創建和刪除約束

alter table表名

Add constraint 約束名約束類型描述說明

altertabledbo.testaddconstraintPK_IDprimarykey (ID)

主鍵:primary keyPK_ 唯一:uniqueUQ_ 檢查:check CK_ 默認:defaultDF_外鍵:foreign keyFK_

1.execsp_addlogin'abc','abc'//添加SQL用戶名

usedb_myqq

go

execsp_grantdbaccess'abc'//添加用戶名到資料庫中

3. 授權語句

Grant 許可權 on 表名 to 資料庫用戶名 九. 登錄驗證語句

十. SQL編程語句

局部變數/全局變數

1.以@標記符作前綴

Declare @name var8)//聲明

Set @name = value

Select @name=value//賦值

2.以@@標記符作前綴

@@error //最後一個T-SQL錯誤的錯誤號

@@identity //最後一次插入的標識值

@@language//當前使用的語言的名稱

@@max_connections //可以創建的同時連接的最大數目

@@rowcount //受上一個SQL語句影響的行數

@@servername//本地伺服器的名稱

@@servicename //該計算機上的SQL服務的名稱

@@timeticks //當前計算機上每刻度的微秒數

@@transcount //當前連接打開的事務數

@@version //SQL Server的版本信息

4. 輸出

print'SQL服務名:'+@@servicename

select@@SERVICENAMEas'SQL服務名'

5. 邏輯控制項語句

declare@avgfloat

select@avg=avg(Score_Num)fromScoreswhereStu_Id='sc0002'

print'平均分為'+convert(var8),@avg)+'分'

if(@avg>90)

begin

print'最高分'

selectMAX(Score_Num)fromScores

end

else

begin

print'最低分'

selectMIN(Score_Num)fromScores

6. while 循環語句

declare@nint

while(1=1)

begin

select@n=COUNT(*)fromScoreswhereScore_Num<60

if(@n>0)

updateScoressetScore_Num+=2 whereScore_Num<60

else

break

end

print'加分後的成績'

select*fromScores

7. Case多分支語句

selectStu_id,score=case

whenScore_Num>90 then'A'

whenScore_Numbetween 80 and 89 then'B'

whenScore_Numbetween 60 and 79 then'C'

else'D'

end

fromScores

十一.高級查詢

1. where子查詢

2. in 和 not in 子查詢

3. if exists (子查詢)

;

『叄』 SQl指的是什麼

SQL全稱是「結構化查詢語言(Structured Query Language)」

SQL(STructured Query Language)是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更新和管理關聯式資料庫系統。

SQL同時也是資料庫文件格式的擴展名。

SQL是高級的非過程化編程語言,允許用戶在高層數據結構上工作。他不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的SQL語言作為數據輸入與管理的介面。它以記錄集合作為操縱對象,所有SQL語句接受集合作為輸入,返回集合作為輸出,這種集合特性允許一條SQL語句的輸出作為另一條SQL語句的輸入,所以SQL語言可以嵌套,這使他具有極大的靈活性和強大的功能,在多數情況下,在其他語言中需要一大段程序實現的一個單獨事件只需要一個SQL語句就可以達到目的,這也意味著用SQL語言可以寫出非常復雜的語句。

結構化查詢語言(Structured Query Language)最早的是IBM的聖約瑟研究實驗室為其關系資料庫管理系統SYSTEM R開發的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言,得到了廣泛的應用。如今無論是像Oracle ,Sybase,Informix,SQL server這些大型的資料庫管理系統,還是像Visual Foxporo,PowerBuilder這些微機上常用的資料庫開發系統,都支持SQL語言作為查詢語言。

美國國家標准局(ANSI)與國際標准化組織(ISO)已經制定了 SQL 標准。ANSI 是一個美國工業和商業集團組織,發展美國的商務和通訊標准。ANSI 同時也是 ISO 和 International Electrotechnical Commission(IEC)的成員之一。ANSI 發布與國際標准組織相應的美國標准。1992年,ISO 和 IEC 發布了 SQL 的國際標准,稱為 SQL-92。ANSI 隨之發布的相應標準是 ANSI SQL-92。ANSI SQL-92 有時被稱為 ANSI SQL。盡管不同的關聯式資料庫使用的 SQL 版本有一些差異,但大多數都遵循 ANSI SQL 標准。SQL Server 使用 ANSI SQL-92 的擴展集,稱為 T-SQL,其遵循 ANSI 制定的 SQL-92 標准。

SQL語言包含4個部分:

數據定義(DDL)語言(如CREATE, DROP,ALTER等語句)

數據操縱(DML)語言(INSERT, UPDATE, DELETE語句)

數據查詢語言(SELECT語句)

數據控制語言(如GRANT,REVOKE,COMMIT, ROLLBACK等語句)

SQL 語言包括兩種主要程式設計語言類別的陳述式: 資料定義語言 (DDL)與資料操作語言 (DML)。

『肆』 sql如何入門

看看教程吧,有《21天精通sql資料庫》,由淺入深,還算不錯的,學過這個以後,再看看sql的help.方法是進入sql企業管理器,F1
這個絕對是精通sql的方法之一

『伍』 SQL可以用來編程嗎

1.SQL可以用來編寫什麼樣的程序
SQL是用來操作資料庫的語言,主要可以針對表結構,表數據進行相應的增刪改查處理。是現在很多信息系統的重要組成部分。
2.使用SQL編程是怎麼樣的過程?
SQL編程是通過SQL特有的語言,編寫相應的SQL代碼(屬於腳本語言),在SQLPlus等界面下執行就可以了。
3.是否還需要用到別的編程語言?例如?
這個要看你的具體需求了,如果只是針對資料庫的批處理操作等,完全可以只使用SQL來編程。如果是常見的信息系統,一般需要有別的編程語言的支持,常見的主要是Java,.Net
,PHP等

『陸』 靜態sql與動態sql有什麼區別

SQL語句從編譯和運行的角度可以分為兩種,靜態SQL和動態SQL,這兩種SQL在使用方式、運行機制和性能表現等方面各有特點:


靜態SQL:靜態SQL語句一般用於嵌入式SQL應用中,在程序運行前,SQL語句必須是確定的,例如SQL語句中涉及的列名和表名必須是存在的。靜態SQL語句的編譯是在應用程序運行前進行的,編譯的結果會存儲在資料庫內部。而後程序運行時,資料庫將直接執行編譯好的SQL語句,降低運行時的開銷。


動態SQL:動態SQL語句是在應用程序運行時被編譯和執行的,例如,使用DB2的互動式工具CLP訪問資料庫時,用戶輸入的SQL語句是不確定的,因此SQL語句只能被動態地編譯。動態SQL的應用較多,常見的CLI和JDBC應用程序都使用動態SQL。


靜態sql:語句類型在編程時候必須是確定好的。比如

select*fromemployeewhereempno='abc'
select*fromemployeewhereempno='12'

都必須是確定的,唯一可以變化的是abc的值。

動態sql:語句類型可以在運行期間指定,比如clp就是最典型的動態sql程序,你可以輸入任何命令。

靜態sql的存取路徑是在運行前就確定好的,而動態sql的存取路徑是在運行時動態生成的。因此生成的存取計劃相對更優,但考慮到生成存取路徑的開銷,有可能應用程序的運行時間相對會比靜態sql長些。


更多請參見:de.cel.blog.163.com/blog/static/514512362011423113913592/

『柒』 Sql語言是一個什麼語言

結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統,可以使用相同的結構化查詢語言作為數據輸入與管理的介面。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。


(7)sql編程圖解擴展閱讀:

sql語言的特點

1、綜合統一

SQL語言集數據定義語言DDL、數據操縱語言DML、數據控制語言DCL的功能於一體,語言風格統一,可以獨立完成資料庫生命周期中的全部活動,包括定義關系模式、錄入數據以建立資料庫、查詢、更新、維護、資料庫重構、資料庫安全性控制等一系列操作要求,這就為資料庫應用系統開發提供了良好的環境,例如用戶在資料庫投入運行後,還可根據需要隨時地逐步地修改模式,並不影響資料庫的運行,從而使系統具有良好的可擴充性。

2、高度非過程化

非關系數據模型的數據操縱語言是面向過程的語言,用其完成某項請求,必須指定存取路徑。而用SQL語言進行數據操作,用戶只需提出「做什麼」,而不必指明「怎麼做」,因此用戶無需了解存取路徑,存取路徑的選擇以及SQL語句的操作過程由系統自動完成。這不但大大減輕了用戶負擔,而且有利於提高數據獨立性。

3、面向集合的操作方式

SQL語言採用集合操作方式,不僅查找結果可以是元組的集合,而且一次插入、刪除、更新操作的對象也可以是元組的集合。

非關系數據模型採用的是面向記錄的操作方式,任何一個操作其對象都是一條記錄。例如查詢所有平均成績在80分以上的學生姓名,用戶必須說明完成該請求的具體處理過程,即如何用循環結構按照某條路徑一條一條地把滿足條件的學生記錄讀出來。

4、以同一種語法結構提供兩種使用方式

SQL語言既是自含式語言,又是嵌入式語言。

作為自含式語言,它能夠獨立地用於聯機交互的使用方式,用戶可以在終端鍵盤上直接鍵入SQL命令對資料庫進行操作。作為嵌入式語言,SQL語句能夠嵌入到高級語言(例如C、PB)程序中,供程序員設計程序時使用。而在兩種不同的使用方式下,SQL語言的語法結構基本上是一致的。這種以統一的語法結構提供兩種不同的使用方式的作法,為用戶提供了極大的靈活性與方便性。

『捌』 sql 是做什麼用的編程軟體

SQL是資料庫編程語言不是軟體!!!
SQL Server 是編輯資料庫的軟體,一般都是配合其他軟體一起使用的,例如:
在JAVA中一般與eclipse或Myeclipse一起使用
在DoNet中一般與Microsoft Visual Studio 2005或Microsoft Visual Studio 2008一起使用
其他資料庫軟體還有Oracle和MySQL

『玖』 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

『拾』 SQL觸發器編程

1、
在「Borrow」表中創建一個觸發器ins_borrower_tr,當向「借閱」表中插入記錄時,「借書日期」不能為空值,「還書日期」必須為空值。不滿足上述條件則不允許向「借閱」表中插入記錄,滿足上述條件則允許插入,同時得到該書的應還日期,且「圖書」表中對應的圖書數量要減1,此操作對應讀者的借書行為。
----「借書日期」不能為空值
可以通過
IS
NOT
NULL
來設置,不需要觸發器;
----「還書日期」必須為空值
可以通過設置默認值實現,就是不管輸入何值,最後都清空;
----「應還日期」是通過「借書日期」計算得出、「圖書」表中對應的圖書數量要減1
:兩個功能通過觸發器實現;
CREATE
TRIGGER
ins_borrower_tr

ON
Borrow

FOR
INSERT
AS
BEGIN

UPDATE
Borrow
SET
應還日期
=
借書日期
+ n
FROM
Borrow,Inserted
WHERE
Borrow.b_id,
=
Inserted.b_id

【其他的類似】
END
GO

2、在「Borrow」表中創建一個觸發器del_borrower_tr,當刪除「借閱」表中的某個記錄時,若「還書日期」為空值,則不允許刪除該記錄。
----
這個可以通過觸發器實現

3、在「Borrow」表中創建一個觸發器update_return_tr,當更新「借閱」表中的某個記錄時,只能更新「還書日期」欄位,其他欄位不能更新,請計算出是否過期並給出罰款信息(過期一天罰款0.1元)。如果更新,「book」表中對應的圖書數量要加1。此操作對應讀者的還書行為。
----只能更新「還書日期」欄位,其他欄位不能更新:這個不好實現的,因為如果程序中是可寫的,就有點麻煩了!建議在程序中設置其他欄位修改時為只讀屬性。
----其他科通過觸發器實現。