久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

審計模式下常用的SQL查詢語句示例

時間:2019-05-12 05:32:19下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《審計模式下常用的SQL查詢語句示例》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《審計模式下常用的SQL查詢語句示例》。

第一篇:審計模式下常用的SQL查詢語句示例

審計模式下常用的SQL查詢語句示例

隨著信息技術的不斷發展,被審計對象的財務和業務系統也大多使用了專用軟件進行計算機管理,如果暫不考慮計算機軟硬件本身的系統審計,那么我們所面對的審計也就分為了以財務賬套為基礎的賬套式審計模式和直接對數據本身(包括財務數據和業務數據)審計的數據式審計模式。但不論是何種審計模式,最根本的還是要使用計算機語句對具體問題進行查詢分析,即通過數據庫的SQL查詢語句對數據庫中的數據表進行查詢分析。

雖然SQL語句的功能很多,且不同數據庫環境下的具體使用也會因為所遵循的官方標準不同而略有差別,但多數情況下的使用是相通的。同時因為審計工作的特點,所使用的SQL語句也多是對數據的查詢,一般并不會包括對原始數據的增加、刪除、修改等操作,所以在計算機審計中重點需要掌握的內容就是靈活利用SQL語句的查詢功能。實際審計工作當中,在數據審計模式下我們所常用的是如下所示的語句,也是從實際審計工作中收集出具有代表性的語句,并且所有語句都基于Access數據庫,在AO現場審計實施系統中可正常使用。

一、對單個表的條件查詢,用where指定查詢條件,也有不使用where的情況,多用于對原始表的統計、分類等

該類情況下SQL語句的語法是“select * from 表名 where 條件”。可以指定單個條件或多個條件,并可配合其他函數或關鍵字使用,常用到的類型有如下幾類。

(一)對單個條件的簡單查詢:

select * from 存款表 where 金額>=100000;該情況的使用較為簡單,適用于任何單條件查詢。

(二)對多個條件的查詢,各條件間可能是and或or的關系:

select * from 存款表 where金額>=100000 and 存款時間 >= #2006-1-1#;

該情況常用于對多個條件的查詢,根據關鍵字and或or來決定是同時滿足所有條件還是僅滿足某些條件。

(三)對多個條件的查詢,得到符合條件的某字段的合計值:

select sum(金額)from 存款表 where金額>=100000 and 存款時間 >= #2006-1-1# and 存款時間<= #2006-12-31# order by 金額 desc, 存款時間 asc;

該情況一般用于統計某種條件下的合計值,常用于對某種情況下的總金額情況進行了解。

(四)用集函數按條件查詢:

select count(*)from 憑證表 where 金額>=100000;select max(發生金額)from 存款表;select avg(發生金額)from 存款表;

該情況類似于上面求和函數的使用,可根據具體需求進行應用。

(五)對關鍵字的內容進行查詢:

select * from 憑證表 where 摘要 like ?%招待費%?;該情況較為常用,查詢包含某些關鍵字的所有記錄,也可結合關鍵字and或or等查詢多個條件。

(六)查詢內容是否包含在給定的范圍內:

select * from 科目代碼表 where 科目代碼 in(?101?,?102?);該情況用于所關心的字段包含內容類別較少的情況,常用在已基本確定查詢范圍之后。當所關心內容類別較多時可使用下面將提到的兩張表的嵌套查詢。

(七)對某個字段進行分組,查詢各字段屬性分別對應的發生次數,并按發生次數進行排序:

select 款項代碼, count(款項代碼)as 次數from大額現金支取表 group by 款項代碼 order by count(款項代碼)desc;該情況常用于對某個所關心字段的分類統計,得出每個類別所發生的次數,并可按發生次數進行排序。

(八)按某個字段的長度進行分類并進行排序:

select len(科目代碼)as 發生次數from 科目代碼表 group by len(科目代碼)order by len(科目代碼)desc;

該情況用于了解某字段的長度分組情況,可對所取得的原始數據進行驗證,以證實原始數據的規范性或找出不規范情況的問題所在。

(九)分組查詢,group與having聯用:

select 客戶號,count(*)as 發生次數

from 存款表

where 發生金額>=100000 group by 客戶號 having count(*)>1;

該類語句常用于要列出所關心某字段的某一個或幾個條件限制下發生次數超出某范圍的情況。如查詢發生多次(即同一關鍵字發生的記錄數大于1)大額存取的客戶號及其存取次數,查詢結果按客戶號分組。

以上各類對單個表的查詢結果并未直接存儲成新表,不利于對查詢結果的進一步分析利用,我們可以使用“select * into 新表名 from 表名 where 條件”這種語句格式把查詢結果保存成新表,如

select * into 大額存款發生情況表 from 存款表 where 金額>=100000;

二、對多個表的條件查詢,一般需根據各表的相應關鍵字進行連接

這種情況下必須對各表的對應關鍵字進行關聯,一般情況下是對兩張表的關聯查詢,當有更多張表要操作時可以每次對兩張表操作后再和剩余的表關聯操作,也可以擴展SQL語句同時對兩個以上的表操作,以下只列出對兩張表操作的情況。

(一)兩張結構相同的表合并并生成新表,使用關鍵字union進行聯合查詢:

select * into 中間表 from

(select * from 原始表1 union select * from 原始表2);該情況常用于對多個原始表的整理以生成中間表,便于后續的查詢工作。如合并采集到的原始數據,將原本分月存儲的數據表全并成分年度存儲的數據表。

(二)兩張表的連接,生成新的中間表:

select a.*,b.客戶名稱into 含客戶名稱的現金支取表 from現金支取表 as a, 客戶基本信息表 as b where a.款項代碼=b.款項代碼;使用該類語句的前提是兩張表存在相關聯的關鍵字,常用于一張表根據兩表的連接關鍵字引入另一張表的某些字段,為后續的查詢準備好中間表。其中使用別名可以簡化SQL語句的輸入。如財務數據中采集到的憑證表是兩張表時,可連接兩表引入摘要字段等。

(三)兩張表的關聯查詢,可加入多個條件:

select a.*,b.科目代碼 from 對公活期存款明細表 as a, 活期存款賬戶動態表 as b where a.款項代碼=b.款項代碼 and 科目代碼 like ?201%?;

該情況可看作對兩張表連接的擴展,即根據where所限定的條件來對兩張表關聯查詢。

(四)兩張表的嵌套查詢,兩層查詢間要使用關鍵字in:

select * into頻繁發生大額現金支取

from大額現金支取

where 交易金額>=100000 and 款項代碼 in(select 款項代碼

from款項代碼發生次數_大額現金支取

where 次數 >= 10)

order by 款項代碼,交易金額,記賬日期;

這種情況也可理解為簡單查詢,不同的是其中where所指定的某個條件是由另一張表的又一個查詢所指定的,與單表查詢的語句

select * from 科目代碼表 where 科目代碼 in(?101?,?102?);進行對比后發現,可將兩張表的嵌套查詢看作如上語句的擴展。如利用大額現金支取表和大額現金支取的款項代碼發生次數表查詢交易金額大且發生次數多的情況。再比如利用貸款表和股東表查詢貸款表中含股東貸款的情況。

(五)多表的連接操作

多表連接可分為內連接、外連接、自身連接、交叉連接。其中內連接又分為等值連接、不等連接和自然連接,外連接又分為左連接、右連接和全連接。實際審計工作當中所用到的多是內連接與外連接,較少用到自身連接與交叉連接。多表的連接使用需根據具體情況而定,下面列出部分示例。

1.內連接的等值連接:

select * from 存款表 as a inner join 客戶信息表 as b on a.款項代碼=b.款項代碼;

以上語句用于列出存款表和客戶信息表中款項代碼相同的記錄。

2.外連接的左連接。

select * from 存款表 as a left join 客戶信息表 as b on a.款項代碼=b.款項代碼;左連接的特點是顯示全部左邊表中的所有項目,即使其中有些項中的數據未填寫完全。右連接與此類似,其特點是顯示全部右邊表中的所有項目,甚至是左邊表中沒有和它匹配的記錄。

以上列出的是數據審計模式下根據實際工作總結出的常用SQL語句,雖然所列內容并不全面,更不可能完全體現SQL查詢的全面功能與精妙所在,但只要能夠很好地分析出審計需求,把用自然語言表達的審計思路轉化為計算機的SQL查詢語句,并結合以上的常用語句適當組合運用,一定能使數據審計模式下的工作達到事半功倍的效果,更好地推動計算機審計的快速發展。

第二篇:SQL查詢語句

SQL查詢語句

第一次:查詢(顯示)、條件、排序、空記錄

第二次:通配符、生成表、文件(記事本)、數組、臨時表,數學函數、分組、嵌套查詢

第三次:插入記錄、刪除記錄、更新記錄 第四次:超連接、新建(打開)數據庫、表的建立、表的刪除、第五次 表結構的修改,添加記錄 顯示同張芳同一天出生的學生的信息 格式:

1、查詢(顯示)記錄

顯示所有男學生的學號,姓名,性別 區分:字段、條件、表名

Select 字段名列表(*)from 表名; where 條件表達式;

into table(dbf)文件名;

into cursor 臨時表名;

into array 數組名;

to file 文件名;

order by 字段名列表(asc desc);

group by 字段名 having 條件;

顯示所有大于平均分的學生的學號、姓名 顯示同E4掙同樣工資的職工信息

Select * from 職工 where 工資=(select 工資 from 職工 where 職工號=”E4”)職工(倉庫號C(10),職工號 C(10),工資 N(10,2))

顯示所有工資大于1500的員工的倉庫號、職工號及所在的城市

2、插入記錄

Insert into 表名(字段名列表)values(記錄值)

3、刪除記錄

Delete from 表名 where 條件

4、更新記錄

Update 表名 set 字段名=記錄值; Where 條件

5、表的刪除

drop table 表名

6、表的建立

create table 表名(字段名 數據類型(寬度))

7、表結構的修改select * from 職工where 職工號!=“E4” AND 工資=(select 工資 from 職工 where 職工號=“E4”)

alter table 表名

1)增加字段

alter table student add 身份證號 c(10)

2)刪除字段

alter table student drop colum 身份證號

3)修改字段名

alter table student rename colum 出生日期 to 出生年月

4)增加字段有效性規則

alter table student alter 成績 set check 成績>=0 and 成績<=100;

error “成績輸入錯誤,成績應該在0-100之間”

5)刪除字段有效性規則

alter table student alter 成績 drop check 注意:

以上題目中用到的 SQL語句粘貼到計事本文件XY.TXT中(每行一條語句)。對兩個表操作的方法:

1)同時打開兩個表

select 倉庫.倉庫號,城市,職工號,工資 from 倉庫,職工;

where 職工.倉庫號=倉庫.倉庫號 and 工資=1250

2)超連接(內連接、左連接、右連接、全連

接)

內連接:只顯示符合條件的記錄

左連接:顯示符合條件的記錄及第一個表中不符合條件的記錄

右連接:顯示符合條件的記錄及第二個表中不符合條件的記錄

全連接:顯示符合條件的記錄及第一、二個表中不符合條件的記錄

成績表(score)

學號姓名課程名成績 2001張三計算機10 2003張四英語20 2001張三語言30 2005張三數據40 2003張四計算機50

Select sum(成績)from score group by 學號

Select sum(成績)from score group by 課程名

select 字段名列表(*)from 表名;where 條件;

order by 字段名列表 asc|desc;

into table(dbf)表名;

into array 數組名;

to file 文件名;

into cursor 臨時表名

題目練習

實現以下功能:在考生文件夾下,打開“陶的數據庫”的數據庫,并利用SQL語句在該數據庫中新建一個表:gongzi(職工號 c(4),實發工資 n(7,0)),將zhigong表中基本工資大于1330(含1330)的記錄存儲在gongzi表中,其中實發工資為:基本工資+加班費(白天20,晚上30),最后將所有的SQL語句保存到考生目錄下的sqlanswer.txt文件中(自行建立,一行一條語句)

open database 陶的數據庫

create table gongzi(職工號 c(4),基本工資 n(7,2))

select 職工號,基本工資+白班*20+晚班*30 from zhigong;where 基本工資>1350 into array xy

insert into gongzi from array xy

第三篇:Sql語句查詢

sql語句多表連接查詢

在程序開發過程中,不僅可以對單一數據表進行查詢,還可以進行多表查詢,用戶通過多表查詢從多個表中提取出需要的數據。

多表查詢可以分為內連接查詢、外連接查詢以及聯合查詢。

1.內連接查詢

連接查詢是指通過各個表之間共同列的關聯性查詢數據。連接查詢分為內連接查詢和外連接查詢。內連接是將兩個相互交叉的數據集合中重疊部分的數據行連接起來,返回表示兩個數據集合之間匹配連接關系的數據行。

可以在FORM子句中使用INNER JOIN?ON?建立內連接,也可以在WHERE子句中指定連接條件建立內連接,例如:

select a.UserName,b.BookName,b.Datetm from UserInfo as a inner join SellSheet as b on a.UserID= b.UserID

也可以用下面的語句實現。

select a.UserName,b.BookName,b.Datetm from UserInfo as a,SellSheet as b where a.UserID=b.UserID

2.外連接查詢

外連接是對內連接的擴充,除了將兩個數據集合中重疊部分以內的數據行連接起來之外,還可以根據要求返回左側或右側數據集合中非匹配的數據,即左外連接(LEFT OUTER JOIN)和右外連接(RIGHT OUTER JOIN)。

l左外連接LEFT OUTER JOIN

左外連接LEFT OUTER JOIN邏輯運算符除了返回兩個數據表中滿足連接條件的行,它還返回任何在后一個數據表中沒有匹配行的前一個數據表中的行。非匹配行的部分字段列作為空值返回。

l右外連接RIGHT OUTER JOIN

右外連接RIGHT OUTER JOIN是左外連接的反向連接。它除了返回兩個數據表中滿足連接條件的行,還返回任何在前一個數據表中沒有匹配行的后一個數據表中的行。非匹配行的部分字段列作為空值返回。

3.使用UNION進行聯合查詢

使用UNION運算符可以進行聯合查詢。UNION運算符連接多個SELECT語句,將兩個或更多查詢的結果組合為單個結果集,該結果集包含聯合查詢中所有查詢的全部行。使用UNION運算符遵循的規則如下:

(1)在使用UNION運算符組合的語句中,所有選擇列表的表達式數目必須相同(列名、算術表達式、聚集函數等)。

(2)在使用UNION組合的結果集中的相應列必須具有相同數據類型,或者兩種數據類型之間必須存在可能的隱性數據轉換,或者提供了顯式轉換。例如,在datetime數據類型的列和binary數據類型的列之間不能使用UNION運算符,除非提供了顯式轉換,而在money數據類型的列和int數據類型的列之間可以使用UNION運算符,因為它們可以進行隱性轉換。

(3)結果集中列的名字或者別名是由第一個SELECT語句的選擇列表決定的。

注意:對數據表進行聯合查詢時,結果集中行的最大數量是各表行數之“和”,而對數據表進行連接查詢時,結果集中行的最大數量是各表行數之“積”。

第四篇:SQL語句(百度查詢)

創建數據庫

創建之前判斷該數據庫是否存在

if exists(select * from sysdatabases where name='databaseName')

drop database databaseName

go

Create DATABASE database-name 刪除數據庫

drop database dbname 備份sql server

---創建備份數據的 device

USE master

EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'

---開始備份

BACKUP DATABASE pubs TO testBack 創建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

根據已有的表創建新表:

A:go

use 原數據庫名

go

select * into 目的數據庫名.dbo.目的表名 from 原表名(使用舊表創建新表)

B:create table tab_new as select col1,col2… from tab_old definition only 創建序列

create sequence SIMON_SEQUENCE

minvalue 1--最小值

maxvalue ***999999999999--最大值

start with 1--開始值

increment by 1--每次加幾

cache 20;刪除新表

drop table tabname 增加一個列

Alter table tabname add colname coltype 刪除一個列

Alter table tabname drop column colname 添加主鍵

Alter table tabname add primary key(col)

說明:刪除主鍵:Alter table tabname drop primary key(col)創建索引

create [unique] index idxname on tabname(col…。)刪除索引:drop index idxname on tabname

注:索引是不可更改的,想更改必須刪除重新建。創建視圖

create view viewname as select statement

刪除視圖:drop view viewname 簡單基本的sql語句

(1)數據記錄篩選:

sql=“select * from 數據表 where 字段名=字段值 order by 字段名 [desc]”

sql=“select * from 數據表 where 字段名 like '%字段值%' order by 字段名 [desc]”

sql=“select top 10 * from 數據表 where 字段名 order by 字段名 [desc]”

sql=“select * from 數據表 where 字段名 in('值1','值2','值3')”

sql=“select * from 數據表 where 字段名 between 值1 and 值2”

(2)更新數據記錄:

sql=“update 數據表 set 字段名=字段值 where 條件表達式”

sql=“update 數據表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達式”

(3)刪除數據記錄:

sql=“delete from 數據表 where 條件表達式”

sql=“delete from 數據表”(將數據表所有記錄刪除)

(4)添加數據記錄:

sql=“insert into 數據表(字段1,字段2,字段3 …)values(值1,值2,值3 …)”

sql=“insert into 目標數據表 select * from 源數據表”(把源數據表的記錄添加到目標數據表)

(5)數據記錄統計函數:

AVG(字段名)得出一個表格欄平均值

COUNT(*;字段名)對數據行數的統計或對某一欄有值的數據行數統計

MAX(字段名)取得一個表格欄最大的值

MIN(字段名)取得一個表格欄最小的值

SUM(字段名)把數據欄的值相加

引用以上函數的方法:

sql=“select sum(字段名)as 別名 from 數據表 where 條件表達式”

set rs=conn.excute(sql)

用 rs(“別名”)獲取統計的值,其它函數運用同上。

查詢去除重復值:select distinct * from table1

(5)數據表的建立和刪除:

CREATE TABLE 數據表名稱(字段1 類型1(長度),字段2 類型2(長度)……)

幾個高級查詢運算詞

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),不消除重復行。

注:使用運算詞的幾個查詢結果行必須是一致的。使用外連接

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:

全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。編輯本段判斷對象是否存在 判斷數據庫是否存在

if exists(select* from sysdatabases wherename= '數據庫名')

dropdatabase[數據庫名] 判斷表是否存在

if not exists(select * from sysobjects where [name] = '表名' and xtype='U')

begin

--這里創建表

end 判斷存儲過程是否存在

if exists(select* from sysobjects whereid = object_id(N'[存儲過程名]')and OBJECTPROPERTY(id, N'IsProcedure')= 1)

dropprocedure[存儲過程名] 判斷臨時表是否存在

if object_id('tempdb..#臨時表名')isnot null

droptable#臨時表名 判斷視圖是否存在

--SQL Server 2000

IF EXISTS(SELECT* FROM sysviews WHEREobject_id = '[dbo].[視圖名]'

--SQL Server 2005 IF EXISTS(SELECT* FROM sys.views WHEREobject_id = '[dbo].[視圖名]' 判斷函數是否存在

if exists(select* from dbo.sysobjects whereid = object_id(N'[dbo].[函數名]')and xtype in(N'FN', N'IF', N'TF'))

dropfunction[dbo].[函數名] 獲取創建信息

SELECT[name],[id],crdate FROM sysobjects where xtype='U'

/*

xtype 的表示參數類型,通常包括如下這些 C = CHECK約束 D = 默認值或DEFAULT約束 F = FOREIGNKEY約束 L = 日志 FN = 標量函數 IF = 內嵌表函數 P = 存儲過程 PK = PRIMARYKEY約束(類型是K)RF = 復制篩選存儲過程 S = 系統表 TF = 表函數 TR = 觸發器U = 用戶表 UQ = UNIQUE約束(類型是K)V = 視圖 X = 擴展存儲過程 */ 判斷列是否存在

if exists(select* from syscolumns whereid=object_id('表名')and name='列名')

altertable表名dropcolumn列名 判斷列是否自增列

if columnproperty(object_id('table'),'col','IsIdentity')=1

print '自增列'

else

print '不是自增列'

SELECT* FROM sys.columns WHEREobject_id=OBJECT_ID('表名')

AND is_identity=1 判斷表中是否存在索引

if exists(select* from sysindexes whereid=object_id('表名')and name='索引名')

print '存在'

else

print '不存在 查看數據庫中對象

SELECT* FROM sysobjects WHEREname='對象名'

select * from table(所要查詢的表名)where coloum(條件)編輯本段提升 復制表

(只復制結構,源表名:a 新表名:b)(Access可用)

法一:select * into b from a where 1<>1

法二:select top 0 * into b from a 拷貝表

(拷貝數據,源表名:a 目標表名:b)(Access可用)

insert into b(x, y, z)select d,e,f from a;跨數據庫之間表的拷貝

(具體數據使用絕對路徑)(Access可用)insert into b(x, y, z)select d,e,f from a in ‘具體數據庫’ where 條件

例子:。.from b in '“&Server.MapPath(”.“&”data.mdb“ &”' where..子查詢

(表名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)顯示文章最后時間

select a.title,a.username,b.adddate from table a,(select max(adddate)adddate from table where table.title=a.title)b 外連接查詢

(表名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 在線視圖查詢

(表名1:a

select * from(Select a,b,c FROM a)T where t.a > 1;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 in 的使用方法

select * from table1 where a [not] in(‘值1’,’值2’,’值4’,’值6’)

刪除主表沒有的信息

兩張關聯表delete from table1 where not exists(select * from table2 where table1.field1=table2.field1 四表聯查問題

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.....日程安排提前五分鐘

SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5 一條sql 搞定數據庫頁

select top 10 b.* from(select top 20 主鍵字段,排序字段 from 表名 order by 排序字段 desc)a,表名 b where b.主鍵字段= a.主鍵字段 order by a.排序字段

前10條記錄

select top 10 * from table1 where 范圍 選擇排名

選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等。)

select a,b,c from tablename ta where a=(select max(a)from tablename tb where tb.b=ta.b)

包括所有在TableA 中但不在TableB和TableC 中的行并消除所有重復行而派生出一個結果表

(select a from tableA except(select a from tableB)except(select a from tableC)隨機取出10條數據

select top 10 * from tablename order by newid()隨機選擇記錄

select newid()刪除重復記錄

Delete from tablename where id not in(select max(id)from tablename group by col1,col2,...)列出數據庫里的表名

select name from sysobjects where type='U' 列出表里的所有的

select name from syscolumns where id=object_id('TableName')列示排列

列示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 初始化表table1

TRUNCATE TABLE table1 選擇從10到15的記錄

select top 5 * from(select top 5 * from(select top 15 * from table order by id asc)table_別名 order by id desc)table_2 order by id

數據類型轉換

declare @numid int

declare @id varchar(50)

set @numid=2005

set @id=convert(varchar,@numid)

通過上述語句完成數據類型Int轉換成varchar,其他轉換類似,可參看convert函數

編輯本段技巧 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 and '+ @strWhere 收縮數據庫

--重建索引

DBCC REINDEX

DBCC INDEXDEFRAG

--收縮數據和日志

DBCC SHRINKDB

DBCC SHRINKFILE 壓縮數據庫

dbcc shrinkdatabase(dbname)

轉移數據庫給新用戶以已存在用戶權限

exec sp_change_users_login 'update_one','newname','oldname'

go 檢查備份集

RESTORE VERIFYONLY from disk='E:dvbbs.bak' 修復數據庫

Alter DATABASE [dvbbs] SET SINGLE_USER

GO

DBCC CHECKDB('dvbbs',repair_allow_data_loss)WITH TABLOCK

GO

Alter DATABASE [dvbbs] SET MULTI_USER

GO 日志清除

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 更改某個表 exec sp_changeobjectowner 'tablename','dbo' 存儲更改全部表

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 SERVER中循環寫入數據

declare @i int

set @i=1

while @i<30

begin

insert into test(userid)values(@i)

set @i=@i+1

end 在SQL Server中有5種約束:

主鍵約束(primary key constraint)唯一性約束(unique constraint)檢查約束(check constraint)缺省約束(default constraint)

外部鍵約束(foreign key constraint)SQL SERVER中,(1)對于基本表的約束分為列約束和表約束

約束是限制用戶輸入到表中的數據的值的范圍,一般分為列級約束與表級約束。

列級約束有六種:主鍵Primary key、外鍵foreign key、唯一 unique、檢查 checck、默認default、非空/空值 not null/ null

表級約束有四種:主鍵、外鍵、唯

一、檢查

列約束是對某一個特定列的約束,包含在列定義中,直接跟在該列的其他定義之后,用空格分隔,不必指定列名;

表約束與列定義相互獨立,不包括在列定義中,通常用于對多個列一起進行約束,與列定義用’,’分隔,定義表約束時必須指出要約束的那些列的名稱。完整性約束的基本語法格式為:

[ CONSTRAINT <約束名> ] <約束類型> 約束名:約束不指定名稱時,系統會給定一個名稱。(2)列級約束與表級約束的區別

如果完整性約束涉及到該表的多個屬性列,必須定義在表級上,否則既可以定義在列級也可以定義在表級。簡而言之:

列級約束:列級約束是行定義的一部分,只能應用于一列上。

表級約束:表級約束是獨立于列的定義,可以應用在一個表中的多列上。(3)列級約束與表級約束在SQL中的用法(即如何在SQL中定義約束)在創建表時定義約束:

CREATE TABLE table_name

({-------列級約束定義

|column_name AS computed_column_expression-------計算列定義

|------表級約束定義

}[,….n])一個約束定義為列級約束還是表級約束???

根據實際需要和設計者思路確定。如primary key,當只涉及到一列時,定義為列級約束;當涉及到多列時,則定義為表級約束。

Prinmary key定義為列級約束時,相應SQL語句: Stu_id上建立的主鍵pk_1為列級約束 CREATE TABLE student(Stu_id int constraint pk_1 primary key,Stu_name varchar(8), ….)當定義為表級約束時,相應SQL語句: CREATE TABLE student(Stu_id int NOT NULL, Stu_id上建立的主鍵pk_1為的表級約束 Stu_name varchar(8), Constraint pk_1 primary key(Stu_id),….)各約束具體說明: 主鍵約束

PRIMARY KEY約束 PRIMARY KEY約束用于定義基本表的主鍵,起唯一標識作用,其值不能為NULL,也不能重復,以此來保證實體的完整性。PRIMARY KEY與UNIQUE約束類似,通過建立唯一索引來保證基本表在主鍵列取值的唯一性,但它們之間存在著很大的區別:

①在一個基本表中只能定義一個PRIMARY KEY約束,但可定義多個UNIQUE約束; ②對于指定為PRIMARY KEY的一個列或多個列的組合,其中任何一個列都不能出現空值,而對于UNIQUE所約束的唯一鍵,則允許為空。

注意:不能為同一個列或一組列既定義UNIQUE約束,又定義PRIMARY KEY約束。PRIMARY KEY既可用于列約束,也可用于表約束。PRIMARY KEY用于定義列約束時,其語法格式如下:

CONSTRAINT <約束名> PRIMARY KEY PRIMARY KEY用于定義表約束時,即將某些列的組合定義為主鍵,其語法格式如下:

[CONSTRAINT <約束名>]S PRIMARY KEY(<列名>[{<列名>}])2.唯一性(UNIQUE)約束

UNIQUE約束用于指明基本表在某一列或多個列的組合上的取值必須唯一。

定義了UNIQUE約束的那些列稱為唯一鍵,系統自動為唯一鍵建立唯一索引,從而保證了唯一鍵的唯一性。

唯一鍵允許為空,但系統為保證其唯一性,最多只可以出現一個NULL值。UNIQUE既可用于列約束,也可用于表約束。UNIQUE用于定義列約束時,其語法格式如下:

[CONSTRAINT <約束名>] UNIQUE 唯一性約束用于指定一個或者多個列的組合的值具有唯一性,以防止在列中輸入重復的值。當使用唯一性約束時,需要考慮以下幾個因素: ①使用唯一性約束的字段允許為空值。②一個表中可以允許有多個唯一性約束。③可以把唯一性約束定義在多個字段上。

④唯一性約束用于強制在指定字段上創建一個唯一性索引。⑤缺省情況下,創建的索引類型為非聚簇索引。

unique約束是用來確保不受主鍵約束列上的數據的唯一性.unique與primary key的區別在于:(1)unique約束主要用于非主鍵的一列或多列上要求數據唯一.(2)unique約束允許該列上存在NULL值,而主鍵決不允許出現.(3)可以在一個表創建多個unique約束,而在一個表上只能夠設置一個主鍵 3.檢查約束

CHECK約束用來檢查字段值所允許的范圍,如,一個字段只能輸入整數,而且限定在0-100的整數,以此來保證域的完整性。

CHECK既可用于列約束,也可用于表約束,其語法格式為:

[CONSTRAINT <約束名>] CHECK(<條件>)一個列級檢查約束只能與限制的字段有關;一個表級檢查約束只能與限制的表中字段有關。一個表中可以定義多個檢查約束。

每個CREATE TABLE語句中每個字段只能定義一個檢查約束。

當執行INSERT語句或者UPDATE語句時,檢查約束將驗證數據。檢查約束中不能包含子查詢。4.缺省約束

使用缺省約束時,應該注意以下幾點: 每個字段只能定義一個缺省約束。

如果定義的缺省值長于其對應字段的允許長度,那么輸入到表中的缺省值將被截斷。不能加入到帶有IDENTITY屬性或者數據類型為timestamp的字段上。如果字段定義為用戶定義的數據類型,而且有一個缺省綁定到這個數據類型上,則不允許該字段有缺省約束。5.外部鍵約束

外部鍵約束用于強制參照完整性,提供單個字段或者多個字段的參照完整性。FOREIGN KEY約束指定某一個列或一組列作為外部鍵,其中,包含外部鍵的表稱為從表(參照表),包含外部鍵所引用的主鍵或唯一鍵的表稱主表(被參照表)。

系統保證從表在外部鍵上的取值要么是主表中某一個主鍵值或唯一鍵值,要么取空值。以此保證兩個表之間的連接,確保了實體的參照完整性。FOREIGN KEY既可用于列約束,也可用于表約束,其語法格式為:

CONSTRAINT <約束名>] FOREIGN KEY

REFERENCES <主表名>(<列名>[{<列名>}])當使用外部鍵約束時,應該考慮以下幾個因素: ①外部鍵約束提供了字段參照完整性。

②外部鍵從句中的字段數目和每個字段指定的數據類型必須和REFERENCES從句中的字段相匹配。

③外部鍵約束不能自動創建索引,需要用戶手動創建。

④用戶想要修改外部鍵約束的數據,必須有對外部鍵約束所參考表的SELECT權限或者REFERENCES權限。

⑤參考同一表中的字段時,必須只使用REFERENCES子句,不能使用外部鍵子句。⑥一個表中最多可以有31個外部鍵約束。⑦在臨時表中,不能使用外部鍵約束。⑧主鍵和外部鍵的數據類型必須嚴格匹配。6.NULL 約束

(1)NULL/NOT NULL 是否允許該字段的值為NULL。NULL值不是0也不是空白,更不是填入字符串?NULL?,而是表示?不知道?、?不確定?或?沒有數據?的意思。

當某一字段的值一定要輸入才有意義的時候,則可以設置為NOT NULL。如主鍵列就不允許出現空值,否則就失去了唯一標識一條記錄的作用 只能用于定義列約束,其語法格式如下:

[constraint <約束名> ][null|not null]

第五篇:SQL結構化查詢語句

SQL結構化查詢語句

一、數據定義功能

創建表:Createtable 表名(字段名……)修改表:Altertable表名

刪除表:Droptable表名

二、數據操縱功能

數據插入:Insertinto 表名values(…,…,)數據更新:Update表名Set表達式 Where 條件 數據刪除:DeleteFrom 表名Where 條件

三、查詢功能

SELECT*FROM表名

WHERE條件

ORDERBY 字段排序

GROUPBY 字段分組

函數:SUM()AVG()COUNT()MAX()MIN()去向:

INTOTABLE表

INTOCURSOR臨時表

INTOARRAY數組

下載審計模式下常用的SQL查詢語句示例word格式文檔
下載審計模式下常用的SQL查詢語句示例.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    無憂SQL語句(除查詢)

    【64一1】用命令新建一個名為“外匯”的數據庫,并將該命令存儲于one.txt中; CREATE DATABASE 外匯 【22一3】使用SQL語句創建一個名為"分組情況表"的自由表,"分組情況表"有兩個......

    SQL Server查詢語句學習心得

    SQL Server查詢語句學習心得 李臻敏 摘要:數據庫技術已經廣泛地滲透到各個領域,數據庫應用技術也已經成為計算機必修課程,SQL Server2005是Microsoft 公司推出的數據庫服務產品......

    SQL查詢語句學習筆記

    問題描述: 為管理崗位業務培訓信息,建立3個表: S (SID,SNAME,SDEPT,SEX,AGE) SID,SNAME,SDEPT,SEX,AGE 分別代表學號、學員姓名、所屬部門、學員性別、學員年齡 C (CID,CNAME......

    sql常用語句

    //創建臨時表空間create temporary tablespace test_temp tempfile 'E:oracleproduct10.2.0oradatatestservertest_temp01.dbf'size 32m autoextend on next 32m maxs......

    SQL語句大全

    SQL練習一、 設有如下的關系模式, 試用SQL語句完成以下操作: 學生(學號,姓名,性別,年齡,所在系) 課程(課程號,課程名,學分,學期,學時) 選課(學號,課程號,成績) 1. 求選修了課程號為“C2”......

    SQL語句

    SQL語句,用友的SQL2000,通過查詢管理器寫的語句 1、查詢 2、修改 3、刪除 4、插入表名:users 包含字段:id,sname,sage 查詢 select * from users查詢users表中所有數據 select i......

    常用SQL語句

    一、創建數據庫 create database 數據庫名 on( name='數據庫名_data', size='數據庫文件大小', maxsize='數據庫文件最大值', filegrowth=5%,//數據庫文件的增長率 filename......

    sql語句

    簡單基本的sql語句 幾個簡單的基本的sql語句 選擇:select * from table1 where范圍 插入:insert into table1(field1,field2) values(value1,value2) 刪除:delete from table1......

主站蜘蛛池模板: 99精品无码一区二区| 亚洲国产精品第一区二区三区| 尤物av无码色av无码麻豆| 亚洲精品无码一区二区三区久久久| 国精产品999一区二区三区有限| av人摸人人人澡人人超碰| 亚洲人禽杂交av片久久| 国产精品嫩草久久久久| 色欲天天天无码视频| 欧美人与动人物姣配xxxx| 97爱爱| 大尺度av无码污污福利网站| 国产乱色精品成人免费视频| 久久r999热精品国产首页| 少妇私密会所按摩到高潮呻吟| 天干天干夜啦天干天干国产| 亚洲精品成人网线在线播放va| 精品欧洲av无码一区二区男男| 色综合久久一区二区三区| 国产无遮挡又黄又爽在线观看| 亚洲国产精品一区二区成人片| 天堂√最新版中文在线天堂| 精品服丝袜无码视频一区| 免费无码又爽又刺激毛片| 人妻少妇久久中文字幕| 欧美精品亚洲精品日韩专区一乛方| 人妻少妇精品视频专区| 中文天堂资源在线www| 亚洲欧美日韩综合俺去了| 国产麻豆天美果冻无码视频| 久久精品免费国产大片| 麻豆国产成人av高清在线观看| 狠狠色噜噜狼狼狼色综合久| 日本乱子伦一区二区三区| 久久天天躁狠狠躁夜夜爽| 国产一区二区三区四区三区| 自拍区小说区图片区亚洲| ā片在线观看免费看无码| 大地资源中文在线观看官网第二页| 寂寞骚妇被后入式爆草抓爆| 区二区欧美性插b在线视频网站|