欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      審計(jì)模式下常用的SQL查詢語(yǔ)句示例

      時(shí)間:2019-05-12 05:32:19下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《審計(jì)模式下常用的SQL查詢語(yǔ)句示例》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《審計(jì)模式下常用的SQL查詢語(yǔ)句示例》。

      第一篇:審計(jì)模式下常用的SQL查詢語(yǔ)句示例

      審計(jì)模式下常用的SQL查詢語(yǔ)句示例

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

      雖然SQL語(yǔ)句的功能很多,且不同數(shù)據(jù)庫(kù)環(huán)境下的具體使用也會(huì)因?yàn)樗裱墓俜綐?biāo)準(zhǔn)不同而略有差別,但多數(shù)情況下的使用是相通的。同時(shí)因?yàn)閷徲?jì)工作的特點(diǎn),所使用的SQL語(yǔ)句也多是對(duì)數(shù)據(jù)的查詢,一般并不會(huì)包括對(duì)原始數(shù)據(jù)的增加、刪除、修改等操作,所以在計(jì)算機(jī)審計(jì)中重點(diǎn)需要掌握的內(nèi)容就是靈活利用SQL語(yǔ)句的查詢功能。實(shí)際審計(jì)工作當(dāng)中,在數(shù)據(jù)審計(jì)模式下我們所常用的是如下所示的語(yǔ)句,也是從實(shí)際審計(jì)工作中收集出具有代表性的語(yǔ)句,并且所有語(yǔ)句都基于Access數(shù)據(jù)庫(kù),在AO現(xiàn)場(chǎng)審計(jì)實(shí)施系統(tǒng)中可正常使用。

      一、對(duì)單個(gè)表的條件查詢,用where指定查詢條件,也有不使用where的情況,多用于對(duì)原始表的統(tǒng)計(jì)、分類等

      該類情況下SQL語(yǔ)句的語(yǔ)法是“select * from 表名 where 條件”??梢灾付▎蝹€(gè)條件或多個(gè)條件,并可配合其他函數(shù)或關(guān)鍵字使用,常用到的類型有如下幾類。

      (一)對(duì)單個(gè)條件的簡(jiǎn)單查詢:

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

      (二)對(duì)多個(gè)條件的查詢,各條件間可能是and或or的關(guān)系:

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

      該情況常用于對(duì)多個(gè)條件的查詢,根據(jù)關(guān)鍵字and或or來(lái)決定是同時(shí)滿足所有條件還是僅滿足某些條件。

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

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

      該情況一般用于統(tǒng)計(jì)某種條件下的合計(jì)值,常用于對(duì)某種情況下的總金額情況進(jìn)行了解。

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

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

      該情況類似于上面求和函數(shù)的使用,可根據(jù)具體需求進(jìn)行應(yīng)用。

      (五)對(duì)關(guān)鍵字的內(nèi)容進(jìn)行查詢:

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

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

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

      (七)對(duì)某個(gè)字段進(jìn)行分組,查詢各字段屬性分別對(duì)應(yīng)的發(fā)生次數(shù),并按發(fā)生次數(shù)進(jìn)行排序:

      select 款項(xiàng)代碼, count(款項(xiàng)代碼)as 次數(shù)from大額現(xiàn)金支取表 group by 款項(xiàng)代碼 order by count(款項(xiàng)代碼)desc;該情況常用于對(duì)某個(gè)所關(guān)心字段的分類統(tǒng)計(jì),得出每個(gè)類別所發(fā)生的次數(shù),并可按發(fā)生次數(shù)進(jìn)行排序。

      (八)按某個(gè)字段的長(zhǎng)度進(jìn)行分類并進(jìn)行排序:

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

      該情況用于了解某字段的長(zhǎng)度分組情況,可對(duì)所取得的原始數(shù)據(jù)進(jìn)行驗(yàn)證,以證實(shí)原始數(shù)據(jù)的規(guī)范性或找出不規(guī)范情況的問(wèn)題所在。

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

      select 客戶號(hào),count(*)as 發(fā)生次數(shù)

      from 存款表

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

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

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

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

      二、對(duì)多個(gè)表的條件查詢,一般需根據(jù)各表的相應(yīng)關(guān)鍵字進(jìn)行連接

      這種情況下必須對(duì)各表的對(duì)應(yīng)關(guān)鍵字進(jìn)行關(guān)聯(lián),一般情況下是對(duì)兩張表的關(guān)聯(lián)查詢,當(dāng)有更多張表要操作時(shí)可以每次對(duì)兩張表操作后再和剩余的表關(guān)聯(lián)操作,也可以擴(kuò)展SQL語(yǔ)句同時(shí)對(duì)兩個(gè)以上的表操作,以下只列出對(duì)兩張表操作的情況。

      (一)兩張結(jié)構(gòu)相同的表合并并生成新表,使用關(guān)鍵字union進(jìn)行聯(lián)合查詢:

      select * into 中間表 from

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

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

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

      (三)兩張表的關(guān)聯(lián)查詢,可加入多個(gè)條件:

      select a.*,b.科目代碼 from 對(duì)公活期存款明細(xì)表 as a, 活期存款賬戶動(dòng)態(tài)表 as b where a.款項(xiàng)代碼=b.款項(xiàng)代碼 and 科目代碼 like ?201%?;

      該情況可看作對(duì)兩張表連接的擴(kuò)展,即根據(jù)where所限定的條件來(lái)對(duì)兩張表關(guān)聯(lián)查詢。

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

      select * into頻繁發(fā)生大額現(xiàn)金支取

      from大額現(xiàn)金支取

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

      from款項(xiàng)代碼發(fā)生次數(shù)_大額現(xiàn)金支取

      where 次數(shù) >= 10)

      order by 款項(xiàng)代碼,交易金額,記賬日期;

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

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

      (五)多表的連接操作

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

      1.內(nèi)連接的等值連接:

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

      以上語(yǔ)句用于列出存款表和客戶信息表中款項(xiàng)代碼相同的記錄。

      2.外連接的左連接。

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

      以上列出的是數(shù)據(jù)審計(jì)模式下根據(jù)實(shí)際工作總結(jié)出的常用SQL語(yǔ)句,雖然所列內(nèi)容并不全面,更不可能完全體現(xiàn)SQL查詢的全面功能與精妙所在,但只要能夠很好地分析出審計(jì)需求,把用自然語(yǔ)言表達(dá)的審計(jì)思路轉(zhuǎn)化為計(jì)算機(jī)的SQL查詢語(yǔ)句,并結(jié)合以上的常用語(yǔ)句適當(dāng)組合運(yùn)用,一定能使數(shù)據(jù)審計(jì)模式下的工作達(dá)到事半功倍的效果,更好地推動(dòng)計(jì)算機(jī)審計(jì)的快速發(fā)展。

      第二篇:SQL查詢語(yǔ)句

      SQL查詢語(yǔ)句

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

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

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

      1、查詢(顯示)記錄

      顯示所有男學(xué)生的學(xué)號(hào),姓名,性別 區(qū)分:字段、條件、表名

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

      into table(dbf)文件名;

      into cursor 臨時(shí)表名;

      into array 數(shù)組名;

      to file 文件名;

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

      group by 字段名 having 條件;

      顯示所有大于平均分的學(xué)生的學(xué)號(hào)、姓名 顯示同E4掙同樣工資的職工信息

      Select * from 職工 where 工資=(select 工資 from 職工 where 職工號(hào)=”E4”)職工(倉(cāng)庫(kù)號(hào)C(10),職工號(hào) C(10),工資 N(10,2))

      顯示所有工資大于1500的員工的倉(cāng)庫(kù)號(hào)、職工號(hào)及所在的城市

      2、插入記錄

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

      3、刪除記錄

      Delete from 表名 where 條件

      4、更新記錄

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

      5、表的刪除

      drop table 表名

      6、表的建立

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

      7、表結(jié)構(gòu)的修改select * from 職工where 職工號(hào)!=“E4” AND 工資=(select 工資 from 職工 where 職工號(hào)=“E4”)

      alter table 表名

      1)增加字段

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

      2)刪除字段

      alter table student drop colum 身份證號(hào)

      3)修改字段名

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

      4)增加字段有效性規(guī)則

      alter table student alter 成績(jī) set check 成績(jī)>=0 and 成績(jī)<=100;

      error “成績(jī)輸入錯(cuò)誤,成績(jī)應(yīng)該在0-100之間”

      5)刪除字段有效性規(guī)則

      alter table student alter 成績(jī) drop check 注意:

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

      1)同時(shí)打開(kāi)兩個(gè)表

      select 倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào),城市,職工號(hào),工資 from 倉(cāng)庫(kù),職工;

      where 職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào) and 工資=1250

      2)超連接(內(nèi)連接、左連接、右連接、全連

      接)

      內(nèi)連接:只顯示符合條件的記錄

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

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

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

      成績(jī)表(score)

      學(xué)號(hào)姓名課程名成績(jī) 2001張三計(jì)算機(jī)10 2003張四英語(yǔ)20 2001張三語(yǔ)言30 2005張三數(shù)據(jù)40 2003張四計(jì)算機(jī)50

      Select sum(成績(jī))from score group by 學(xué)號(hào)

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

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

      order by 字段名列表 asc|desc;

      into table(dbf)表名;

      into array 數(shù)組名;

      to file 文件名;

      into cursor 臨時(shí)表名

      題目練習(xí)

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

      open database 陶的數(shù)據(jù)庫(kù)

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

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

      insert into gongzi from array xy

      第三篇:Sql語(yǔ)句查詢

      sql語(yǔ)句多表連接查詢

      在程序開(kāi)發(fā)過(guò)程中,不僅可以對(duì)單一數(shù)據(jù)表進(jìn)行查詢,還可以進(jìn)行多表查詢,用戶通過(guò)多表查詢從多個(gè)表中提取出需要的數(shù)據(jù)。

      多表查詢可以分為內(nèi)連接查詢、外連接查詢以及聯(lián)合查詢。

      1.內(nèi)連接查詢

      連接查詢是指通過(guò)各個(gè)表之間共同列的關(guān)聯(lián)性查詢數(shù)據(jù)。連接查詢分為內(nèi)連接查詢和外連接查詢。內(nèi)連接是將兩個(gè)相互交叉的數(shù)據(jù)集合中重疊部分的數(shù)據(jù)行連接起來(lái),返回表示兩個(gè)數(shù)據(jù)集合之間匹配連接關(guān)系的數(shù)據(jù)行。

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

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

      也可以用下面的語(yǔ)句實(shí)現(xiàn)。

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

      2.外連接查詢

      外連接是對(duì)內(nèi)連接的擴(kuò)充,除了將兩個(gè)數(shù)據(jù)集合中重疊部分以內(nèi)的數(shù)據(jù)行連接起來(lái)之外,還可以根據(jù)要求返回左側(cè)或右側(cè)數(shù)據(jù)集合中非匹配的數(shù)據(jù),即左外連接(LEFT OUTER JOIN)和右外連接(RIGHT OUTER JOIN)。

      l左外連接LEFT OUTER JOIN

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

      l右外連接RIGHT OUTER JOIN

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

      3.使用UNION進(jìn)行聯(lián)合查詢

      使用UNION運(yùn)算符可以進(jìn)行聯(lián)合查詢。UNION運(yùn)算符連接多個(gè)SELECT語(yǔ)句,將兩個(gè)或更多查詢的結(jié)果組合為單個(gè)結(jié)果集,該結(jié)果集包含聯(lián)合查詢中所有查詢的全部行。使用UNION運(yùn)算符遵循的規(guī)則如下:

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

      (2)在使用UNION組合的結(jié)果集中的相應(yīng)列必須具有相同數(shù)據(jù)類型,或者兩種數(shù)據(jù)類型之間必須存在可能的隱性數(shù)據(jù)轉(zhuǎn)換,或者提供了顯式轉(zhuǎn)換。例如,在datetime數(shù)據(jù)類型的列和binary數(shù)據(jù)類型的列之間不能使用UNION運(yùn)算符,除非提供了顯式轉(zhuǎn)換,而在money數(shù)據(jù)類型的列和int數(shù)據(jù)類型的列之間可以使用UNION運(yùn)算符,因?yàn)樗鼈兛梢赃M(jìn)行隱性轉(zhuǎn)換。

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

      注意:對(duì)數(shù)據(jù)表進(jìn)行聯(lián)合查詢時(shí),結(jié)果集中行的最大數(shù)量是各表行數(shù)之“和”,而對(duì)數(shù)據(jù)表進(jìn)行連接查詢時(shí),結(jié)果集中行的最大數(shù)量是各表行數(shù)之“積”。

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

      創(chuàng)建數(shù)據(jù)庫(kù)

      創(chuàng)建之前判斷該數(shù)據(jù)庫(kù)是否存在

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

      drop database databaseName

      go

      Create DATABASE database-name 刪除數(shù)據(jù)庫(kù)

      drop database dbname 備份sql server

      ---創(chuàng)建備份數(shù)據(jù)的 device

      USE master

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

      ---開(kāi)始備份

      BACKUP DATABASE pubs TO testBack 創(chuàng)建新表

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

      根據(jù)已有的表創(chuàng)建新表:

      A:go

      use 原數(shù)據(jù)庫(kù)名

      go

      select * into 目的數(shù)據(jù)庫(kù)名.dbo.目的表名 from 原表名(使用舊表創(chuàng)建新表)

      B:create table tab_new as select col1,col2… from tab_old definition only 創(chuàng)建序列

      create sequence SIMON_SEQUENCE

      minvalue 1--最小值

      maxvalue ***999999999999--最大值

      start with 1--開(kāi)始值

      increment by 1--每次加幾

      cache 20;刪除新表

      drop table tabname 增加一個(gè)列

      Alter table tabname add colname coltype 刪除一個(gè)列

      Alter table tabname drop column colname 添加主鍵

      Alter table tabname add primary key(col)

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

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

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

      create view viewname as select statement

      刪除視圖:drop view viewname 簡(jiǎn)單基本的sql語(yǔ)句

      (1)數(shù)據(jù)記錄篩選:

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

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

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

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

      sql=“select * from 數(shù)據(jù)表 where 字段名 between 值1 and 值2”

      (2)更新數(shù)據(jù)記錄:

      sql=“update 數(shù)據(jù)表 set 字段名=字段值 where 條件表達(dá)式”

      sql=“update 數(shù)據(jù)表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達(dá)式”

      (3)刪除數(shù)據(jù)記錄:

      sql=“delete from 數(shù)據(jù)表 where 條件表達(dá)式”

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

      (4)添加數(shù)據(jù)記錄:

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

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

      (5)數(shù)據(jù)記錄統(tǒng)計(jì)函數(shù):

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

      COUNT(*;字段名)對(duì)數(shù)據(jù)行數(shù)的統(tǒng)計(jì)或?qū)δ骋粰谟兄档臄?shù)據(jù)行數(shù)統(tǒng)計(jì)

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

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

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

      引用以上函數(shù)的方法:

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

      set rs=conn.excute(sql)

      用 rs(“別名”)獲取統(tǒng)計(jì)的值,其它函數(shù)運(yùn)用同上。

      查詢?nèi)コ貜?fù)值:select distinct * from table1

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

      CREATE TABLE 數(shù)據(jù)表名稱(字段1 類型1(長(zhǎng)度),字段2 類型2(長(zhǎng)度)……)

      幾個(gè)高級(jí)查詢運(yùn)算詞

      A:UNION 運(yùn)算符 UNION 運(yùn)算符通過(guò)組合其他兩個(gè)結(jié)果表(例如TABLE1 和TABLE2)并消去表中任何重復(fù)行而派生出一個(gè)結(jié)果表。當(dāng) ALL 隨UNION 一起使用時(shí)(即UNION ALL),不消除重復(fù)行。兩種情況下,派生表的每一行不是來(lái)自TABLE1 就是來(lái)自TABLE2。

      B: EXCEPT 運(yùn)算符

      EXCEPT 運(yùn)算符通過(guò)包括所有在TABLE1 中但不在TABLE2 中的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表。當(dāng)ALL 隨EXCEPT 一起使用時(shí)(EXCEPT ALL),不消除重復(fù)行。

      C:INTERSECT 運(yùn)算符

      INTERSECT 運(yùn)算符通過(guò)只包括TABLE1 和TABLE2 中都有的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表。當(dāng)ALL 隨INTERSECT 一起使用時(shí)(INTERSECT ALL),不消除重復(fù)行。

      注:使用運(yùn)算詞的幾個(gè)查詢結(jié)果行必須是一致的。使用外連接

      A、left outer join:

      左外連接(左連接):結(jié)果集既包括連接表的匹配行,也包括左連接表的所有行。

      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:

      右外連接(右連接):結(jié)果集既包括連接表的匹配連接行,也包括右連接表的所有行。

      C:full outer join:

      全外連接:不僅包括符號(hào)連接表的匹配行,還包括兩個(gè)連接表中的所有記錄。編輯本段判斷對(duì)象是否存在 判斷數(shù)據(jù)庫(kù)是否存在

      if exists(select* from sysdatabases wherename= '數(shù)據(jù)庫(kù)名')

      dropdatabase[數(shù)據(jù)庫(kù)名] 判斷表是否存在

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

      begin

      --這里創(chuàng)建表

      end 判斷存儲(chǔ)過(guò)程是否存在

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

      dropprocedure[存儲(chǔ)過(guò)程名] 判斷臨時(shí)表是否存在

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

      droptable#臨時(shí)表名 判斷視圖是否存在

      --SQL Server 2000

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

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

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

      dropfunction[dbo].[函數(shù)名] 獲取創(chuàng)建信息

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

      /*

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

      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 '不存在 查看數(shù)據(jù)庫(kù)中對(duì)象

      SELECT* FROM sysobjects WHEREname='對(duì)象名'

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

      (只復(fù)制結(jié)構(gòu),源表名:a 新表名:b)(Access可用)

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

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

      (拷貝數(shù)據(jù),源表名:a 目標(biāo)表名:b)(Access可用)

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

      (具體數(shù)據(jù)使用絕對(duì)路徑)(Access可用)insert into b(x, y, z)select d,e,f from a in ‘具體數(shù)據(jù)庫(kù)’ 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)顯示文章最后時(shí)間

      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限制查詢數(shù)據(jù)范圍時(shí)包括了邊界值,not between不包括

      select * from table1 where time between time1 and time2

      select a,b,c, from table1 where a not between 數(shù)值1 and 數(shù)值2 in 的使用方法

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

      刪除主表沒(méi)有的信息

      兩張關(guān)聯(lián)表delete from table1 where not exists(select * from table2 where table1.field1=table2.field1 四表聯(lián)查問(wèn)題

      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開(kāi)始時(shí)間,getdate())>5 一條sql 搞定數(shù)據(jù)庫(kù)頁(yè)

      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值相同的數(shù)據(jù)中對(duì)應(yīng)的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產(chǎn)品分析,按科目成績(jī)排名,等等。)

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

      包括所有在TableA 中但不在TableB和TableC 中的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表

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

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

      select newid()刪除重復(fù)記錄

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

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

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

      列示type、vender、pcs字段,以type字段排列,case可以方便地實(shí)現(xiàn)多重選擇,類似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

      顯示結(jié)果:

      type vender pcs

      電腦A 1

      電腦A 1

      光盤(pán)B 2

      光盤(pán)A 2

      手機(jī)B 3

      手機(jī)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

      數(shù)據(jù)類型轉(zhuǎn)換

      declare @numid int

      declare @id varchar(50)

      set @numid=2005

      set @id=convert(varchar,@numid)

      通過(guò)上述語(yǔ)句完成數(shù)據(jù)類型Int轉(zhuǎn)換成varchar,其他轉(zhuǎn)換類似,可參看convert函數(shù)

      編輯本段技巧 1=1,1=2的使用 在SQL語(yǔ)句組合時(shí)用的較多

      ?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

      我們可以直接寫(xiě)成

      set @strSQL = 'select count(*)as Total from [' + @tblName + '] where 1=1 and '+ @strWhere 收縮數(shù)據(jù)庫(kù)

      --重建索引

      DBCC REINDEX

      DBCC INDEXDEFRAG

      --收縮數(shù)據(jù)和日志

      DBCC SHRINKDB

      DBCC SHRINKFILE 壓縮數(shù)據(jù)庫(kù)

      dbcc shrinkdatabase(dbname)

      轉(zhuǎn)移數(shù)據(jù)庫(kù)給新用戶以已存在用戶權(quán)限

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

      go 檢查備份集

      RESTORE VERIFYONLY from disk='E:dvbbs.bak' 修復(fù)數(shù)據(jù)庫(kù)

      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--要操作的數(shù)據(jù)庫(kù)名

      Select @LogicalFileName = 'tablename_log',--日志文件名

      @MaxMinutes = 10,--Limit on time allowed to wrap log.@NewSize = 1--你想設(shè)定的日志文件的大小(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 更改某個(gè)表 exec sp_changeobjectowner 'tablename','dbo' 存儲(chǔ)更改全部表

      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中循環(huán)寫(xiě)入數(shù)據(jù)

      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)對(duì)于基本表的約束分為列約束和表約束

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

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

      表級(jí)約束有四種:主鍵、外鍵、唯

      一、檢查

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

      表約束與列定義相互獨(dú)立,不包括在列定義中,通常用于對(duì)多個(gè)列一起進(jìn)行約束,與列定義用’,’分隔,定義表約束時(shí)必須指出要約束的那些列的名稱。完整性約束的基本語(yǔ)法格式為:

      [ CONSTRAINT <約束名> ] <約束類型> 約束名:約束不指定名稱時(shí),系統(tǒng)會(huì)給定一個(gè)名稱。(2)列級(jí)約束與表級(jí)約束的區(qū)別

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

      列級(jí)約束:列級(jí)約束是行定義的一部分,只能應(yīng)用于一列上。

      表級(jí)約束:表級(jí)約束是獨(dú)立于列的定義,可以應(yīng)用在一個(gè)表中的多列上。(3)列級(jí)約束與表級(jí)約束在SQL中的用法(即如何在SQL中定義約束)在創(chuàng)建表時(shí)定義約束:

      CREATE TABLE table_name

      ({-------列級(jí)約束定義

      |column_name AS computed_column_expression-------計(jì)算列定義

      |------表級(jí)約束定義

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

      根據(jù)實(shí)際需要和設(shè)計(jì)者思路確定。如primary key,當(dāng)只涉及到一列時(shí),定義為列級(jí)約束;當(dāng)涉及到多列時(shí),則定義為表級(jí)約束。

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

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

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

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

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

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

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

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

      唯一鍵允許為空,但系統(tǒng)為保證其唯一性,最多只可以出現(xiàn)一個(gè)NULL值。UNIQUE既可用于列約束,也可用于表約束。UNIQUE用于定義列約束時(shí),其語(yǔ)法格式如下:

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

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

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

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

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

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

      每個(gè)CREATE TABLE語(yǔ)句中每個(gè)字段只能定義一個(gè)檢查約束。

      當(dāng)執(zhí)行INSERT語(yǔ)句或者UPDATE語(yǔ)句時(shí),檢查約束將驗(yàn)證數(shù)據(jù)。檢查約束中不能包含子查詢。4.缺省約束

      使用缺省約束時(shí),應(yīng)該注意以下幾點(diǎn): 每個(gè)字段只能定義一個(gè)缺省約束。

      如果定義的缺省值長(zhǎng)于其對(duì)應(yīng)字段的允許長(zhǎng)度,那么輸入到表中的缺省值將被截?cái)?。不能加入到帶有IDENTITY屬性或者數(shù)據(jù)類型為timestamp的字段上。如果字段定義為用戶定義的數(shù)據(jù)類型,而且有一個(gè)缺省綁定到這個(gè)數(shù)據(jù)類型上,則不允許該字段有缺省約束。5.外部鍵約束

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

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

      CONSTRAINT <約束名>] FOREIGN KEY

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

      ②外部鍵從句中的字段數(shù)目和每個(gè)字段指定的數(shù)據(jù)類型必須和REFERENCES從句中的字段相匹配。

      ③外部鍵約束不能自動(dòng)創(chuàng)建索引,需要用戶手動(dòng)創(chuàng)建。

      ④用戶想要修改外部鍵約束的數(shù)據(jù),必須有對(duì)外部鍵約束所參考表的SELECT權(quán)限或者REFERENCES權(quán)限。

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

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

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

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

      第五篇:SQL結(jié)構(gòu)化查詢語(yǔ)句

      SQL結(jié)構(gòu)化查詢語(yǔ)句

      一、數(shù)據(jù)定義功能

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

      刪除表:Droptable表名

      二、數(shù)據(jù)操縱功能

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

      三、查詢功能

      SELECT*FROM表名

      WHERE條件

      ORDERBY 字段排序

      GROUPBY 字段分組

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

      INTOTABLE表

      INTOCURSOR臨時(shí)表

      INTOARRAY數(shù)組

      下載審計(jì)模式下常用的SQL查詢語(yǔ)句示例word格式文檔
      下載審計(jì)模式下常用的SQL查詢語(yǔ)句示例.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        無(wú)憂SQL語(yǔ)句(除查詢)

        【64一1】用命令新建一個(gè)名為“外匯”的數(shù)據(jù)庫(kù),并將該命令存儲(chǔ)于one.txt中; CREATE DATABASE 外匯 【22一3】使用SQL語(yǔ)句創(chuàng)建一個(gè)名為"分組情況表"的自由表,"分組情況表"有兩個(gè)......

        SQL Server查詢語(yǔ)句學(xué)習(xí)心得

        SQL Server查詢語(yǔ)句學(xué)習(xí)心得 李臻敏 摘要:數(shù)據(jù)庫(kù)技術(shù)已經(jīng)廣泛地滲透到各個(gè)領(lǐng)域,數(shù)據(jù)庫(kù)應(yīng)用技術(shù)也已經(jīng)成為計(jì)算機(jī)必修課程,SQL Server2005是Microsoft 公司推出的數(shù)據(jù)庫(kù)服務(wù)產(chǎn)品......

        SQL查詢語(yǔ)句學(xué)習(xí)筆記

        問(wèn)題描述: 為管理崗位業(yè)務(wù)培訓(xùn)信息,建立3個(gè)表: S (SID,SNAME,SDEPT,SEX,AGE) SID,SNAME,SDEPT,SEX,AGE 分別代表學(xué)號(hào)、學(xué)員姓名、所屬部門(mén)、學(xué)員性別、學(xué)員年齡 C (CID,CNAME......

        sql常用語(yǔ)句

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

        SQL語(yǔ)句大全

        SQL練習(xí)一、 設(shè)有如下的關(guān)系模式, 試用SQL語(yǔ)句完成以下操作: 學(xué)生(學(xué)號(hào),姓名,性別,年齡,所在系) 課程(課程號(hào),課程名,學(xué)分,學(xué)期,學(xué)時(shí)) 選課(學(xué)號(hào),課程號(hào),成績(jī)) 1. 求選修了課程號(hào)為“C2”......

        SQL語(yǔ)句

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

        常用SQL語(yǔ)句

        一、創(chuàng)建數(shù)據(jù)庫(kù) create database 數(shù)據(jù)庫(kù)名 on( name='數(shù)據(jù)庫(kù)名_data', size='數(shù)據(jù)庫(kù)文件大小', maxsize='數(shù)據(jù)庫(kù)文件最大值', filegrowth=5%,//數(shù)據(jù)庫(kù)文件的增長(zhǎng)率 filename......

        sql語(yǔ)句

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