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

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

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

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

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

      SQL語(yǔ)句學(xué)習(xí)總結(jié)(共五篇)

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

      第一篇:SQL語(yǔ)句學(xué)習(xí)總結(jié)

      SQL 快速參考

      ?

      ? Previous PageNext Page

      來(lái)自 W3School 的 SQL 快速參考??梢源蛴∷?,以備日常使用。SQL 語(yǔ)句

      語(yǔ)句

      AND / OR 語(yǔ)法 SELECT column_name(s)

      FROM table_name

      WHERE condition

      AND|OR condition

      ALTER TABLE(add column)ALTER TABLE table_name

      ADD column_name datatype

      ALTER TABLE(drop column)ALTER TABLE table_name

      DROP COLUMN column_name

      AS(alias for column)SELECT column_name AS column_alias

      FROM table_name

      AS(alias for table)SELECT column_name

      FROM table_name AS table_alias

      BETWEEN SELECT column_name(s)

      FROM table_name

      WHERE column_name

      BETWEEN value1 AND value2

      CREATE DATABASE

      CREATE INDEX CREATE DATABASE database_name CREATE INDEX index_name

      ON table_name(column_name)

      CREATE TABLE CREATE TABLE table_name

      (column_name1 data_type,column_name2 data_type,.......)

      CREATE UNIQUE INDEX CREATE UNIQUE INDEX index_name

      ON table_name(column_name)

      CREATE VIEW CREATE VIEW view_name AS SELECT column_name(s)

      FROM table_name WHERE condition

      DELETE FROM DELETE FROM table_name(Note: Deletes the entire table!)

      or

      DELETE FROM table_name

      WHERE condition

      DROP DATABASE DROP INDEX DROP TABLE GROUP BY

      DROP DATABASE database_name DROP INDEX table_name.index_name

      DROP TABLE table_name

      SELECT column_name1,SUM(column_name2)

      FROM table_name GROUP BY column_name1

      HAVING SELECT column_name1,SUM(column_name2)

      FROM table_name GROUP BY column_name1

      HAVING SUM(column_name2)condition value

      IN SELECT column_name(s)

      FROM table_name WHERE column_name IN(value1,value2,..)

      INSERT INTO INSERT INTO table_name VALUES(value1, value2,....)

      or

      INSERT INTO table_name(column_name1, column_name2,...)

      VALUES(value1, value2,....)

      LIKE SELECT column_name(s)

      FROM table_name

      WHERE column_name

      LIKE pattern

      ORDER BY

      SELECT column_name(s)

      FROM table_name

      ORDER BY column_name [ASC|DESC]

      SELECT

      SELECT column_name(s)

      FROM table_name

      SELECT *

      SELECT * FROM table_name

      SELECT DISTINCT

      SELECT DISTINCT column_name(s)

      FROM table_name

      SELECT INTO

      (used to create backup copies of tables)

      SELECT * INTO new_table_name FROM original_table_name

      or

      SELECT column_name(s)INTO new_table_name FROM original_table_name

      TRUNCATE TABLE

      (deletes only the data inside the table)

      UPDATE

      UPDATE table_name SET column_name=new_value [, column_name=new_value] WHERE column_name=some_value

      WHERE

      SELECT column_name(s)

      FROM table_name WHERE condition

      TRUNCATE TABLE table_name

      ? ?

      Previous PageNext Page

      我們已經(jīng)學(xué)習(xí)了 SQL,下一步學(xué)習(xí)什么呢?

      ? ?

      Previous PageNext Page

      SQL 概要

      本教程已經(jīng)向您講解了用來(lái)訪問(wèn)和處理數(shù)據(jù)庫(kù)系統(tǒng)的標(biāo)準(zhǔn)計(jì)算機(jī)語(yǔ)言。

      我們已經(jīng)學(xué)習(xí)了如何使用 SQL 在數(shù)據(jù)庫(kù)中執(zhí)行查詢(xún)、獲取數(shù)據(jù)、插入新的紀(jì)錄、刪除記錄以及更新記錄。SQL 是一種與數(shù)據(jù)庫(kù)程序協(xié)同工作的標(biāo)準(zhǔn)語(yǔ)言,這些數(shù)據(jù)庫(kù)程序包括 MS Access、DB2、Informix、MS SQL Server、Oracle、MySQL、Sybase 等等。

      我們已經(jīng)學(xué)習(xí)了 SQL,下一步學(xué)習(xí)什么呢?

      下一步應(yīng)該學(xué)習(xí)ADO。

      ADO 是一種從網(wǎng)站訪問(wèn)數(shù)據(jù)庫(kù)中數(shù)據(jù)的編程接口。ADO 使用 SQL 來(lái)查詢(xún)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

      如果您需要學(xué)習(xí)更多關(guān)于 ADO 的知識(shí),請(qǐng)?jiān)L問(wèn)我們的《ADO 教程》。

      ? ?

      Previous PageNext Page

      第二篇:sql語(yǔ)句學(xué)習(xí)

      一、選擇題

      1、SQL語(yǔ)言是()語(yǔ)言?!⊿QL特點(diǎn))(易)

      A)層次數(shù)據(jù)庫(kù) B)網(wǎng)絡(luò)數(shù)據(jù)庫(kù) C)關(guān)系數(shù)據(jù)庫(kù)D)非數(shù)據(jù)庫(kù)

      答案:C2、SQL語(yǔ)言具有兩種使用方式,分別稱(chēng)為交互式SQL和()。

      ——(SQL語(yǔ)言使用方式)(易)

      A)提示式SQLB)多用戶(hù)SQLC)嵌入式SQLD)解釋式SQL

      答案:C

      3-4-5()包括數(shù)據(jù)庫(kù)模式定義和數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)與存取方法定義。()實(shí)現(xiàn)對(duì)DB的操作,包括查詢(xún)、插入、刪除、修改數(shù)據(jù)庫(kù)中的數(shù)據(jù)。()用于數(shù)據(jù)保護(hù),包括數(shù)據(jù)的安全性,完整性,并發(fā)控制和恢復(fù)等。——(數(shù)據(jù)庫(kù)語(yǔ)言DDLDMLDCL)(中)

      A)數(shù)據(jù)控制子語(yǔ)言 B)數(shù)據(jù)定義子語(yǔ)言 C)數(shù)據(jù)操縱子語(yǔ)言 D)數(shù)據(jù)庫(kù)語(yǔ)言

      答案:B C A

      6-7-8-9-

      10、下列SQL語(yǔ)句中,實(shí)現(xiàn)數(shù)據(jù)檢索的語(yǔ)句是(),修改表結(jié)構(gòu)的是(),修改屬性值的是(),刪除表結(jié)構(gòu)的是(),刪除表記錄的是()。

      ——(DROP TABLE, ALTER TABLE,UPDATE, DELETE,SELECT 語(yǔ)句)(易)

      A)SELECTB)DROPC)UPDATED)ALTERE)DELETE

      答案:A D C B E

      二、用關(guān)系代數(shù)表達(dá)式及SQL語(yǔ)句描述關(guān)系查詢(xún)

      1、設(shè)有如下關(guān)系表R、S和T:——(易)R(BH,XM,XB,DWH)

      S(DWH,DWM)

      T(BH,XM,XB,DWH)

      寫(xiě)出實(shí)現(xiàn)下列關(guān)系代數(shù)的SQL語(yǔ)句:

      1)?DWH?'100'(R)σDWH=’100’(R)

      2)?XM,XB(R)∏xM,XB(R)

      3)?XM,DWH(?

      4)R?S R∞S

      5)?XM,XB,DWH(?

      解:

      1)SELECT * FROM R WHERE DWH=’100’;

      2)SELECT XM,XB FROM R;

      3)SELECT XM,DWH FROM R WHERE XB=’女’;

      4)SELECT R.*,S.DWM FROM R, S WHERE R.DWH=S.DWH;

      5)SELECT XM,XB,DWH FROM R,S WHERE R.DWH=S.DWH AND XB=’男’;XB?'男'XB?'女'(R))∏XM,DWH(σXB=’女’(R))(R?S))∏XM,XB,DWH(σXB=’男’(R∞S))

      2、設(shè)有如下三個(gè)關(guān)系:——(易-易)

      A(A#,ANAME,WQTY,CITY): A#:商店代號(hào);ANAME:商店名;WQTY:店員人數(shù)

      B(B#,BNAME,PRICE):B#:商品號(hào);BNAME:商品名稱(chēng);

      AB(A#,B#,QTY):QTY:商品數(shù)量

      試用關(guān)系代數(shù)和SQL語(yǔ)言寫(xiě)出下列查詢(xún)。

      1)找出店員人數(shù)不超過(guò)100人或者在長(zhǎng)沙市的所有商店的代號(hào)和商店名;

      2)找出供應(yīng)書(shū)包的商店名;

      解:

      1)?A#,ANAME(?WQTY??100 ? CITY?'長(zhǎng)沙'(A))∏A#,ANAME(σWQTY<=100ⅤCITY=’長(zhǎng)沙’(A))

      SELECT A#,ANAME FROM A WHERE WQTY<=100 OR CITY=’長(zhǎng)沙’;

      2)?ANAME((?BNAME?'書(shū)包'(B))?AB?A)∏ANAME((σBNAME=’書(shū)包’(B))∞AB∞(A))

      SELECT ANAME FROM A,B,AB

      WHERE BNAME=’書(shū)包’ AND B.B#=AB.B# AND AB.A#=A.A#;

      3.設(shè)有如下關(guān)系模式:

      student(NO, NAME , SEX ,BIRTHDAY, CLASS)

      teacher(NO,NAME,SEX,BIRTHDAY,PROF,DEPART)PROF為職稱(chēng),DEPART為系別

      course(CNO, CNAME, TNO)

      score(NO, CNO, DEGREE)DEGREE 為成績(jī)

      寫(xiě)出實(shí)現(xiàn)以下各題功能的SQL語(yǔ)句:

      (1)查詢(xún)至少有2名男生的班號(hào);——(難)

      (2)查詢(xún)不姓“王”的同學(xué)記錄;——(易)

      (3)查詢(xún)每個(gè)學(xué)生的姓名和年齡;——(難)

      (4)查詢(xún)學(xué)生中最大和最小的birthday日期值;——(中)

      (5)查詢(xún)學(xué)生表的全部記錄并按班號(hào)和年齡從大到小的順序;——(中)

      (6)查詢(xún)男教師及其所上的課程;——(中)

      (7)查詢(xún)最高分同學(xué)的學(xué)號(hào),課程號(hào)和成績(jī);——(中)

      (8)查詢(xún)和“李軍”同性別并同班的所有同學(xué)的姓名;——(中)

      (9)查詢(xún)選修“數(shù)據(jù)庫(kù)系統(tǒng)概論”課程的男同學(xué)的成績(jī)表;——(中)

      (10)查詢(xún)所有未講課的教師的姓名和所在系別;——(難)

      (11)查詢(xún)“計(jì)算機(jī)系”教師所教課程的成績(jī)表;——(難)

      (12)查詢(xún)選修“3-105”課程的成績(jī)高于“109”號(hào)同學(xué)成績(jī)的所有同學(xué)的記錄;——(難)

      (13)查詢(xún)最低分大于70,最高分小于90的學(xué)生的學(xué)號(hào);——(中)

      (14)查詢(xún)成績(jī)?cè)?0到80之間的所有記錄;——(中)

      (15)查詢(xún)成績(jī)比該課程平均成績(jī)低的同學(xué)的成績(jī)表;——(相關(guān)子查詢(xún))(難)

      (16)查詢(xún)所有女教師和女同學(xué)的姓名、性別和生日;——(中)

      (17)查詢(xún)“計(jì)算機(jī)系”和“無(wú)線(xiàn)電系”不同職稱(chēng)的教師的姓名和職稱(chēng);——(中)

      解:(1)SELECT CLASS FROM student WHERE SEX=‘男’

      GROUP BY CLASS HAVING COUNT(*)>=2;

      (2)SELECT * FROM student WHERE NAME NOT LIKE ‘王%’;

      (3)SELECT NAME,year(date())-year(birthday)as age FROM student;

      (4)SELECT MAX(BIRTHDAY), MIN(BIRTHDAY)FROM student;

      (5)SELECT * FROM student ORDER BY CLASS,BIRTHDAY DESC;

      (6)SELECT x.name, y.cname FROM teacher x, course y WHERE x.no=y.tno and x.sex=’男’;

      (7)SELECT * FROM score WHERE degree=(SELECT max(degree)FROM score);

      (8)SELECT name FROM student WHERE sex=(SELECT sex FROM student WHEREname=’

      李軍’)and class=(SELECT class FROM student WHERE name=’李軍’);

      (9)SELECT * FROM score WHERE no IN(SELECT no FROM student WHERE sex=‘男’)and

      cno=(SELECT cno FROM course WHERE cname=‘?dāng)?shù)據(jù)庫(kù)系統(tǒng)概論’);

      (10)SELECT name, depart FROM teacher t WHERE NOT EXIST(SELECT * FROM course c

      WHERE c.tno=t.no);

      (11)SELECT * FROM score s, teacher t, course c WHERE t.depart=’計(jì)算機(jī)系’ and t.no=c.tno

      and c.cno=score.cno;

      (12)SELECT * FROM student s, score sc WHERE s.no=sc.no and cno=’3-105’ and

      degree>(SELECT degree FROMsc WHERE no=’109’ and cno=’3-105’);

      (13)SELECT no FROM score GROUP BY no HAVING min(degree)>70 and max(degree)<90;

      (14)SELECT * FROM score WHERE degree BETWEEN 60 AND 80;

      (15)SELECT * FROM score a WHERE degree <(SELECT avg(degree)FROM score b WHERE b.cno=a.cno group by b.cno);

      (16)SELECT name, sex, birthday FROM teacher WHERE sex=‘女’UNION SELECT name, sex,birthday FROM student WHERE sex=‘女’;

      (17)SELECT name, prof FROM teacher WHERE depart=’計(jì)算機(jī)系’ OR depart=’無(wú)線(xiàn)電系’

      order by prof;

      4、設(shè)有圖書(shū)登記表TS,具有屬性:BNO(圖書(shū)編號(hào)),BC(圖書(shū)類(lèi)別),BNA(書(shū)名),AU(著者),PUB(出版社)。按下列要求用SQL語(yǔ)言進(jìn)行設(shè)計(jì)。——(易)

      1)按圖書(shū)館編號(hào)BNO建立TS表的索引ITS;

      2)查詢(xún)按出版社統(tǒng)計(jì)其出版圖書(shū)總數(shù)。

      3)刪除索引。

      解:1)CREATE INDEX ITSON TS(BNO);

      2)SELECT PUB,COUNT(BNO)FROM TS GROUP BY PUB;

      3)DROP INDEXITS;

      5、已知三個(gè)關(guān)系R、S和T——(中)

      R(A,B,C)S(A,D,E)T(D,F)

      試用SQL語(yǔ)句實(shí)現(xiàn)如下操作:

      1)R、S和T三個(gè)關(guān)系按關(guān)聯(lián)屬性建立一個(gè)視圖R-S-T;

      2)對(duì)視圖R-S-T按屬性A分組后,求屬性C和E的平均值。

      解:1)CREATE VIEW R-S-T(A,B,C,D,E,F)AS

      SELECT R.A , B, C ,S.D, E, F FROM R, S, T

      WHERE R.A=S.A AND S.D=T.D;

      2)SELECT AVG(C), AVG(E)FROM R-S-T GOUPY BY A;

      6、設(shè)有學(xué)生表S(SNO, SN)(SNO為學(xué)生號(hào),SN為姓名)和學(xué)生選修課程表SC(SNO,CNO,CN,G)

      (CNO為課程號(hào),CN為課程名,G為成績(jī)),試用SQL語(yǔ)言完成以下各題:——(易)

      a)建立一個(gè)視圖V-SSC(SNO, SN, CNO, CN, G);

      b)從視圖V-SSC上查詢(xún)平均成績(jī)?cè)?0分以上的SN, CN 和G。

      解:

      1)CREATE VIEW V-SSC(SNO , SN, CNO, CN, G)AS

      SELECT S.SNO, SN, CNO, CN, GFROM S, SC WHERE S.SNO=SC.SNO

      2)SELECT SN, CN, G FROM V-SSC GROUP BY SNO HAVING AVG(G)>907、設(shè)有關(guān)系模式: 其中SB表示供應(yīng)商,SN為供應(yīng)商號(hào),SNAME為供應(yīng)商名字,CITY

      為供應(yīng)商所在城市; PB(PN, PNAME, COLOR, WEIGHT)其中PB表示零件,PN為零件代號(hào),PANME為零件名

      字,COLOR為零件顏色,WEIGHT為零件重量; JB(JN, JNAME, CITY)其中JB表示工程,JN為工程編號(hào),JNAME為工程名字,CITY為工

      程所在城市;

      SPJB()其中SPJB表示供應(yīng)關(guān)系,QTY表示提供的零件數(shù)量。

      寫(xiě)出實(shí)現(xiàn)以下各題功能的SQL語(yǔ)句:

      (1)取出所有工程的全部細(xì)節(jié);——(易)

      (2)取出所在城市為上海的所有工程的全部細(xì)節(jié);——(易)

      (3)取出重量最輕的零件代號(hào);——(難)

      (4)取出為工程J1提供零件的供應(yīng)商代號(hào);——(易)

      (5)取出為工程J1提供零件P1的供應(yīng)商代號(hào);——(易)

      (6)取出由供應(yīng)商S1提供零件的工程名稱(chēng);——(易)

      (7)取出供應(yīng)商S1提供的零件的顏色;——(易)

      (8)取出為工程J1或J2提供零件的供應(yīng)商代號(hào);——(中)

      (9)取出為工程J1提供紅色零件的供應(yīng)商代號(hào);——(易)

      (10)取出為所在城市為上海的工程提供零件的供應(yīng)商代號(hào);——(易)

      (11)取出為所在城市為上海或北京的工程提供紅色零件的供應(yīng)商代號(hào);——(中)

      (12)取出供應(yīng)商與工程所在城市相同的供應(yīng)商提供的零件代號(hào);——(中)

      (13)取出上海的供應(yīng)商提供給上海的任一工程的零件的代號(hào);——(難)

      (14)取出至少有一個(gè)和工程不在同一城市的供應(yīng)商提供零件的工程代號(hào);——(難)

      (15)取出上海供應(yīng)商不提供任何零件的工程的代號(hào);——(難)

      (16)取出這樣一些供應(yīng)商代號(hào),它們能夠提供至少一種由紅色零件的供應(yīng)商提供的零件;

      ——(難)

      (17)取出由供應(yīng)商S1提供零件的工程的代號(hào);——(易)

      (18)取出所有這樣的一些

      市的工程提供零件;——(難)

      (19)取出所有這樣的三元組,使得第一個(gè)城市的供應(yīng)商為第二個(gè)城

      市的工程提供指定的零件;——(難)

      (20)重復(fù)(19)題,但不檢索兩個(gè)CITY值相同的三元組。——(難)

      解:

      (1)SELECT * FROM JB;

      (2)SELECT * FROM JB WHERE CITY=‘上?!?

      (3)SELECT PN FROM PB

      WHERE WEIGHT=(SELECT MIN(WEIGHT)FROM PB);

      (4)SELECT SN FORM SPJB WHERE JN=‘J1’;

      (5)SELECT SN FORM SPJB WHERE JN=‘J1’AND PN=‘P1’;

      (6)SELECT JNAME FROM JB,SPJB WHERE SN=‘S1’AND SPJB.JN=JB.JN;

      (7)SELECT DISTINCT COLOR FROM PB,SPJB WHERE SN=‘S1’AND SPJB.JN=JB.JN'

      (8)SELECT SN FROM SPJB WHERE JN IN {J1, J2};

      或者 SELECT SN FROM SPJB WHERE JN=’J1’ OR JN=’J2’;

      (9)SELECT SN FROM SPJB,PB

      WHERE COLOR=‘紅色’AND PB.PN=SPJB.PN AND JN=’J1’;

      (10)SELECT DISTINCT SN FROM SPJB,JB WHERE CITY=‘上海’AND JB.JN=SPJB.JN;

      (11)SELECT SN FROM PB, JB, SPJB WHERE COLOR=‘紅色’AND CITY IN {‘上?!?,‘北京’} AND PB.PN=SPJB.PN AND JB.JN=SPJB.JN;

      (12)SELECT PN FROM SB, JB , SPJB WEHRE SB.CITY=JB.CITY AND SB.SN=SPJB.SN

      AND JB.JN=SPJB.JN;

      (13)SELECT PN FROM SB, SPJB, JB WEHRE SB.CITY=‘上?!疉ND JB.CITY=‘上?!?/p>

      AND SB.SN=SPJB.SN AND JB.JN=SPJB.JN;

      (14)SELECT JN FROM JB WHERE EXISTS(SELECT * FROM SB WHERE

      EXISTS(SELECT * FROM SPJB WHERE SB.CITY<>JB.CITY AND SPJB.SN= SB.SN AND SPJB.JN= JB.JN));

      (15)SELECT DISTINCT JN FROM SPJB WHERE JN NOT IN(SELECT DISTINCT

      SPJB.JN FROM SB,SPJB WHERE SB.SN=SPJB.SN AND SB.CITY=‘上海’);

      (16)SELECT DISTINCT SPJB.SN FROM SB,SPJB WHERE SPJB.PN IN(SELECT

      SPJB.PN FROM SPJB,PB WHEREPB.PN=SPJB.PN AND PB.COLOR=‘紅色’;

      (17)SELECTJN FROM SPJB WHERE SN=’S1’;

      (18)SELECT DINSINCT SB.CITY , JB.CITY FROM SB, JB, SPJB WHERE

      SB.SN=SPJB.SN AND JB.JN=SPJB.SN;

      (19)SELECT SB.CITY, SPJB.PN, JB.CITY FROM SB,JB,SPJB WHERE SB.SN=SPJB.SN

      AND JB.JN=SPJB.JN;

      (20)SELECT DISTINCT SB.CITY, SPJB.PN, JB.CITY FROM SB,JB,SPJB WHERE

      SB.SN=SPJB.SN AND JB.JN=SPJB.JN AND SB.CITY<>JB.CITY;

      8、設(shè)有如下關(guān)系模式:——(中)

      圖書(shū)關(guān)系B(圖書(shū)編號(hào)B#,圖書(shū)名T,作者A,出版社P);

      讀者關(guān)系R(借書(shū)證號(hào)C#,讀者名N,讀者地址D);

      借閱關(guān)系L(C#,B#,借書(shū)日期E,還書(shū)標(biāo)志BZ);

      BZ=‘1’表示已還; BZ=‘0’ 表示未還;

      寫(xiě)出實(shí)現(xiàn)以下各題功能的SQL語(yǔ)句:

      (1)查詢(xún)“工業(yè)出版社”出版的圖書(shū)名

      (2)將書(shū)號(hào)為B5的圖書(shū)的出版社改為“工業(yè)出版社”

      (3)查詢(xún)99年12月31日以前借書(shū)未還的讀者名與書(shū)名

      (4)查所借的書(shū)包含借書(shū)證號(hào)為C1的讀者借出未還的所有書(shū)的讀者名與借書(shū)證號(hào)。

      (5)刪去“工業(yè)出版社”出版的所有圖書(shū)及相關(guān)的借閱信息。

      解:

      (1)SelectTfromBWhereP = ’工業(yè)出版社’

      (2)UpdateBSetP=’工業(yè)出版社’ WhereB# = ’B5’

      (3)SelectN , TFrom B, R , L

      WhereE <’99/12/31’ AND BZ=’0’ AND

      L.C#=R.C# AND L.B#=B.B#

      (4)select N,C# from R where not exists

      (select * from LL1 where L1.C#=’c1’ and BZ=‘0’ andnot exists

      (select * from L L2 where L2.c#=R.c#

      and L2.B#=L1.B#))

      (6)Delete from LWhere B#IN(Select B#From B

      Where P=’工業(yè)出版社’);

      Delete from B Where P=’工業(yè)出版社’;

      第三篇:sql語(yǔ)句學(xué)習(xí)_經(jīng)典_推薦

      sql語(yǔ)句學(xué)習(xí)

      ? 數(shù)據(jù)定義語(yǔ)言(DDL):

      1)創(chuàng)建數(shù)據(jù)庫(kù)(create):create database database-name;

      eg.create database test;

      2)刪除數(shù)據(jù)庫(kù):drop database dbname;

      eg.drop database test;

      3)創(chuàng)建新表:create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..);

      eg.根據(jù)已有的表創(chuàng)建新表的例子:create table tab_new like tab_old;create table tab_new as select col1,col2… from tab_old definition only;

      4)刪除表:drop table tabname;

      5)增加列:alter table tabname add column col type;

      6)添加主鍵: alter table tabname add primary key(col);

      7)刪除主鍵:alter table tabname drop primary key(col);

      8)創(chuàng)建索引:create [unique] index idxname on tabname(col….);

      9)刪除索引:drop index idxname;注:索引是不可更改的,想更改必須刪除重新建;

      10)創(chuàng)建視圖:create view viewname as select statement;

      2.數(shù)據(jù)操縱語(yǔ)言(DML)

      1)查詢(xún)語(yǔ)句(select)

      eg1.select * from table1 where field1 like '%value1%';

      eg2.select * from table1 order by field1,field2 [desc];

      eg3.select count as totalcount from table1;

      eg4.select sum(field1)as sumvalue from table1;

      eg5.select avg(field1)as avgvalue from table1;

      eg6.select max(field1)as maxvalue from table1;

      eg7.select min(field1)as minvalue from table1;

      eg8.select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c;(注:此為左外連接,結(jié)果集中包括連接表的匹配行,也包括左連接表的所有行)

      2)插入語(yǔ)句(insert)

      insert into table1(field1,field2)values(value1,value2);

      3)刪除語(yǔ)句(delete)

      delete from table1 where 范圍;

      4)更新語(yǔ)句(update)

      update table1 set field1=value1 where 范圍;

      3.數(shù)據(jù)控制語(yǔ)言(DCL)

      1)授予權(quán)限語(yǔ)句(GRANT)

      GRANT privileges(columns)ON what TO user IDENTIFIED BY “password” WITH GRANT OPTION;

      其中:privileges可為如下限定符:ALTER 修改表和索引、CREATE(創(chuàng)建數(shù)據(jù)庫(kù)和表)、DELETE(刪除表中已有的記錄)、DROP(刪除數(shù)據(jù)庫(kù)和表)、INDEX(創(chuàng)建或刪除索引)、INSERT(向表中插入新行)、REFERENCE(未用)、SELECT(檢索表中的記錄)、UPDATE(修改現(xiàn)存表記錄)、FILE(讀或?qū)懛?wù)器上的文件)、PROCESS(查看服務(wù)器中執(zhí)行的線(xiàn)程信息或殺死線(xiàn)程)、RELOAD(重載授權(quán)表或清空日志、主機(jī)緩存或表緩存)、SHUTDOWN(關(guān)閉服務(wù)器)、ALL 所

      有;ALL PRIVILEGES同義詞、USAGE(特殊的“無(wú)權(quán)限”權(quán)限)

      columns:權(quán)限運(yùn)用的列,它是可選的,并且你只能設(shè)置列特定的權(quán)限。如果命令有多于一個(gè)列,應(yīng)該用逗號(hào)分開(kāi)它們;

      what:權(quán)限運(yùn)用的級(jí)別。權(quán)限可以是全局的(適用于所有數(shù)據(jù)庫(kù)和所有表)、特定數(shù)據(jù)庫(kù)(適用于一個(gè)數(shù)據(jù)庫(kù)中的所有表)或特定表的。可以通過(guò)指定一個(gè)columns字句是權(quán)限是列特定的。

      user :權(quán)限授予的用戶(hù),它由一個(gè)用戶(hù)名和主機(jī)名組成。MySQL中的一個(gè)用戶(hù)名就?悄懔臃衿魘敝付ǖ撓沒(méi)?該名字不必與你的Unix登錄名或Windows名聯(lián)系起來(lái)。缺省地,如果你不明確指定一個(gè)名字,客戶(hù)程序?qū)⑹褂?/p>

      你的登錄名作為MySQL用戶(hù)名。這只是一個(gè)約定。你可以在授權(quán)表中將該名字改為nobody,然后以nobody連接

      執(zhí)行需要超級(jí)用戶(hù)權(quán)限的操作。

      password:賦予用戶(hù)的口令,它是可選的。如果你對(duì)新用戶(hù)沒(méi)有指定IDENTIFIED BY子句,該用戶(hù)不賦給口令(不安全)。對(duì)現(xiàn)有用戶(hù),任何你指定的口令將代替老口令。如果你不指定口令,老口令保持不變,當(dāng)你用IDENTIFIED BY

      時(shí),口令字符串用改用口令的字面含義,GRANT將為你編碼口令,不要象你用SET PASSWORD 那樣使用password()

      函數(shù)。

      WITH GRANT OPTION子句是可選的。如果你包含它,用戶(hù)可以授予權(quán)限通過(guò)GRANT語(yǔ)句授權(quán)給其它用戶(hù)。你可以用該子句給與其它用戶(hù)授權(quán)的能力。

      用戶(hù)名、口令、數(shù)據(jù)庫(kù)和表名在授權(quán)表記錄中是大小寫(xiě)敏感的,主機(jī)名和列名不是。

      eg1.創(chuàng)建一個(gè)超級(jí)用戶(hù)test1

      grant all privilleges on *.* to test1@localhost identified by '123456' with grant option;eg2.創(chuàng)建一個(gè)只能查詢(xún)的用戶(hù) test2

      mysql> grant select on *.* to test2@localhost identified by '9876543';

      2)撤權(quán)并刪除用戶(hù)(revoke)

      要取消一個(gè)用戶(hù)的權(quán)限,使用REVOKE語(yǔ)句。REVOKE的語(yǔ)法非常類(lèi)似于GRANT語(yǔ)句,除了TO用FROM取代并且沒(méi)有INDETIFED BY和WITH GRANT OPTION子句:

      revoke privileges(columns)ON what FROM user

      user部分必須匹配原來(lái)GRANT語(yǔ)句的你想撤權(quán)的用戶(hù)的user部分。privileges部分不需匹配,你可以用GRANT

      語(yǔ)句授權(quán),然后用REVOKE語(yǔ)句只撤銷(xiāo)部分權(quán)限。REVOKE語(yǔ)句只刪除權(quán)限,而不刪除用戶(hù)。即使你撤銷(xiāo)了所有

      權(quán)限,在user表中的用戶(hù)記錄依然保留,這意味著用戶(hù)仍然可以連接服務(wù)器。要完全刪除一個(gè)用戶(hù),你必須

      用一條DELETE語(yǔ)句明確從user表中刪除用戶(hù)記錄:

      #mysql-u root mysql

      DELETE FROM user WHERE User=“user_name” and Host=“host_name”;

      FLUSH PRIVILEGES;

      DELETE語(yǔ)句刪除用戶(hù)記錄,而FLUSH語(yǔ)句告訴服務(wù)器重載授權(quán)表。(當(dāng)你使用GRANT和REVOKE語(yǔ)句時(shí),表自動(dòng)重載,而你直接修改授權(quán)表時(shí)不是。)

      eg.刪除用戶(hù)test1

      revoke all on *.* from;

      use mysql;

      delete from user where user='test' and host='localhost';flush privileges;

      3)提交語(yǔ)句(commit)

      4)回滾語(yǔ)句(rollback)

      第四篇:SQL語(yǔ)句經(jīng)典總結(jié)

      SQL語(yǔ)句經(jīng)典總結(jié)

      一、入門(mén)

      1、說(shuō)明:創(chuàng)建數(shù)據(jù)庫(kù)

      CREATE DATABASE database-name2、說(shuō)明:刪除數(shù)據(jù)庫(kù) drop database dbname

      3、說(shuō)明:備份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

      4、說(shuō)明:創(chuàng)建新表

      create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根據(jù)已有的表創(chuàng)建新表:

      A:create table tab_new like tab_old(使用舊表創(chuàng)建新表)

      B:create table tab_new as select col1,col2? from tab_old definition only

      5、說(shuō)明:刪除新表 drop table tabname

      6、說(shuō)明:增加一個(gè)列

      Alter table tabname add column col type

      注:列增加后將不能刪除。DB2中列加上后數(shù)據(jù)類(lèi)型也不能改變,唯一能改變的是增加varchar類(lèi)型的長(zhǎng)度。

      7、說(shuō)明:添加主鍵: Alter table tabname add primary key(col)說(shuō)明:刪除主鍵: Alter table tabname drop primary key(col)

      8、說(shuō)明:創(chuàng)建索引:create [unique] index idxname on tabname(col?.)刪除索引:drop index idxname

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

      9、說(shuō)明:創(chuàng)建視圖:create view viewname as select statement 刪除視圖:drop view viewname

      10、說(shuō)明:幾個(gè)簡(jiǎn)單的基本的sql語(yǔ)句 選擇: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的語(yǔ)法很精妙,查資料!排序:select * from table1 order by field1,field2 [desc] 總數(shù):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 最?。簊elect min(field1)as minvalue from table1

      11、說(shuō)明:幾個(gè)高級(jí)查詢(xún)運(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è)查詢(xún)結(jié)果行必須是一致的。

      12、說(shuō)明:使用外連接

      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/cross(outer)join:

      全外連接:不僅包括符號(hào)連接表的匹配行,還包括兩個(gè)連接表中的所有記錄。

      12、分組:Group by: 一張表,一旦分組 完成后,查詢(xún)后只能得到組相關(guān)的信息。

      組相關(guān)的信息:(統(tǒng)計(jì)信息)count,sum,max,min,avg 分組的標(biāo)準(zhǔn))

      在SQLServer中分組時(shí):不能以text,ntext,image類(lèi)型的字段作為分組依據(jù) 在selecte統(tǒng)計(jì)函數(shù)中的字段,不能和普通的字段放在一起;

      13、對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作:

      分離數(shù)據(jù)庫(kù): sp_detach_db;附加數(shù)據(jù)庫(kù):sp_attach_db 后接表明,附加需要完整的路徑名 14.如何修改數(shù)據(jù)庫(kù)的名稱(chēng):

      sp_renamedb 'old_name', 'new_name'

      二、提升

      1、說(shuō)明:復(fù)制表(只復(fù)制結(jié)構(gòu),源表名:a 新表名:b)(Access可用)法一:select * into b from a where 1<>1(僅用于SQlServer)法二:select top 0 * into b from a

      2、說(shuō)明:拷貝表(拷貝數(shù)據(jù),源表名:a 目標(biāo)表名:b)(Access可用)insert into b(a, b, c)select d,e,f from b;

      3、說(shuō)明:跨數(shù)據(jù)庫(kù)之間表的拷貝(具體數(shù)據(jù)使用絕對(duì)路徑)(Access可用)insert into b(a, b, c)select d,e,f from b in ‘具體數(shù)據(jù)庫(kù)’ where 條件 例子:..from b in '“&Server.MapPath(”.“)&”data.mdb“ &”' where..2

      4、說(shuō)明:子查詢(xún)(表名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、說(shuō)明:顯示文章、提交人和最后回復(fù)時(shí)間

      select a.title,a.username,b.adddate from table a,(select max(adddate)adddate from table where table.title=a.title)b

      6、說(shuō)明:外連接查詢(xún)(表名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、說(shuō)明:在線(xiàn)視圖查詢(xún)(表名1:a)select * from(SELECT a,b,c FROM a)T where t.a > 1;

      8、說(shuō)明:between的用法,between限制查詢(xún)數(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

      9、說(shuō)明:in 的使用方法

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

      10、說(shuō)明:兩張關(guān)聯(lián)表,刪除主表中已經(jīng)在副表中沒(méi)有的信息

      delete from table1 where not exists(select * from table2 where table1.field1=table2.field1)

      11、說(shuō)明:四表聯(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.....12、說(shuō)明:日程安排提前五分鐘提醒

      SQL: select * from 日程安排 where datediff('minute',f開(kāi)始時(shí)間,getdate())>5

      13、說(shuō)明:一條sql 語(yǔ)句搞定數(shù)據(jù)庫(kù)分頁(yè)

      select top 10 b.* from(select top 20 主鍵字段,排序字段 from 表名 order by 排序字段 desc)a,表名 b where b.主鍵字段 = a.主鍵字段 order by a.排序字段 具體實(shí)現(xiàn):

      關(guān)于數(shù)據(jù)庫(kù)分頁(yè):

      declare @start int,@end int @sql nvarchar(600)set @sql=’select top’+str(@end-@start+1)+’+from top’+str(@str-1)+’Rid from T where Rid>-1)’ exec sp_executesql @sql

      注意:在top后不能直接跟一個(gè)變量,所以在實(shí)際應(yīng)用中只有這樣的進(jìn)行特殊的處理。Rid為一個(gè)標(biāo)識(shí)列,如果top后還有具體的字段,這樣做是非常有好處的。因?yàn)檫@樣可以避免 top的字段如果是邏輯索引的,查詢(xún)的結(jié)果后實(shí)際表中的不一致(邏輯索引中的數(shù)據(jù)有可能和數(shù)據(jù)表中的不一致,而查詢(xún)時(shí)如果處在索引則首先查詢(xún)索引)

      T where rid not in(select

      14、說(shuō)明:前10條記錄

      select top 10 * form table1 where 范圍

      15、說(shuō)明:選擇在每一組b值相同的數(shù)據(jù)中對(duì)應(yīng)的a最大的記錄的所有信息(類(lèi)似這樣的用法可以用于論壇每月排行榜,每月熱銷(xiāo)產(chǎn)品分析,按科目成績(jī)排名,等等.)select a,b,c from tablename ta where a=(select max(a)from tablename tb where tb.b=ta.b)

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

      (select a from tableA)except(select a from tableB)except(select a from tableC)

      17、說(shuō)明:隨機(jī)取出10條數(shù)據(jù)

      select top 10 * from tablename order by newid()

      18、說(shuō)明:隨機(jī)選擇記錄 select newid()

      19、說(shuō)明:刪除重復(fù)記錄

      1),delete from tablename where id not in(select max(id)from tablename group by col1,col2,...)2),select distinct * into temp from tablename delete from tablename

      insert into tablename select * from temp 評(píng)價(jià): 這種操作牽連大量的數(shù)據(jù)的移動(dòng),這種做法不適合大容量但數(shù)據(jù)操作

      3),例如:在一個(gè)外部表中導(dǎo)入數(shù)據(jù),由于某些原因第一次只導(dǎo)入了一部分,但很難判斷具體位置,這樣只有在下一次全部導(dǎo)入,這樣也就產(chǎn)生好多重復(fù)的字段,怎樣刪除重復(fù)字段 alter table tablename--添加一個(gè)自增列

      add column_b int identity(1,1)delete from tablename where column_b not in(select max(column_b)from tablename group by column1,column2,...)alter table tablename drop column column_b

      20、說(shuō)明:列出數(shù)據(jù)庫(kù)里所有的表名

      select name from sysobjects where type='U' // U代表用戶(hù)

      21、說(shuō)明:列出表里的所有的列名

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

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

      23、說(shuō)明:初始化表table1 TRUNCATE TABLE table1

      24、說(shuō)明:選擇從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語(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ě)成 錯(cuò)誤!未找到目錄項(xiàng)。

      set @strSQL = 'select count(*)as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere

      2、收縮數(shù)據(jù)庫(kù)--重建索引 DBCC REINDEX DBCC INDEXDEFRAG--收縮數(shù)據(jù)和日志 DBCC SHRINKDB DBCC SHRINKFILE

      3、壓縮數(shù)據(jù)庫(kù)

      dbcc shrinkdatabase(dbname)

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

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

      5、檢查備份集

      RESTORE VERIFYONLY from disk='E:dvbbs.bak'

      6、修復(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

      7、日志清除 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

      8、說(shuō)明:更改某個(gè)表

      exec sp_changeobjectowner 'tablename','dbo'

      9、存儲(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

      10、SQL 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 案例:

      有如下表,要求就裱中所有沒(méi)有及格的成績(jī),在每次增長(zhǎng)0.1的基礎(chǔ)上,使他們剛好及格:

      Name score Zhangshan 80

      Lishi 59 Wangwu 50

      Songquan 69

      while((select min(score)from tb_table)<60)begin update tb_table set score =score*1.01 where score<60

      if(select min(score)from tb_table)>60 break else continue end

      數(shù)據(jù)開(kāi)發(fā)-經(jīng)典

      1.按姓氏筆畫(huà)排序:

      Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //從少到多2.數(shù)據(jù)庫(kù)加密: select encrypt('原始密碼')

      select pwdencrypt('原始密碼')select pwdcompare('原始密碼','加密后密碼')= 1--相同;否則不相同 encrypt('原始密碼')select pwdencrypt('原始密碼')select pwdcompare('原始密碼','加密后密碼')= 1--相同;否則不相同 3.取回表中字段: declare @list varchar(1000), @sql nvarchar(1000)select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A' set @sql='select '+right(@list,len(@list)-1)+' from 表A' exec(@sql)4.查看硬盤(pán)分區(qū): EXEC master..xp_fixeddrives 5.比較A,B表是否相等: if(select checksum_agg(binary_checksum(*))from A)=(select checksum_agg(binary_checksum(*))from B)print '相等' else print '不相等' 6.殺掉所有的事件探察器進(jìn)程: DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid)FROM master.dbo.sysprocesses WHERE program_name IN('SQL profiler',N'SQL 事件探查器')EXEC sp_msforeach_worker '?' 7.記錄搜索: 開(kāi)頭到N條記錄

      Select Top N * From 表

      N到M條記錄(要有主索引ID)Select Top M-N * From 表 Where ID in(Select Top M ID From 表)Order by ID Desc---N到結(jié)尾記錄

      Select Top N * From 表 Order by ID Desc 案例

      例如1:一張表有一萬(wàn)多條記錄,表的第一個(gè)字段 RecID 是自增長(zhǎng)字段,寫(xiě)一個(gè)SQL語(yǔ)句,找出表的第31到第40個(gè)記錄。

      select top 10 recid from A where recid not in(select top 30 recid from A)分析:如果這樣寫(xiě)會(huì)產(chǎn)生某些問(wèn)題,如果recid在表中存在邏輯索引。

      select top 10 recid from A where??是從索引中查找,而后面的select top 30 recid from A則在數(shù)據(jù)表中查找,這樣由于索引中的順序有可能和數(shù)據(jù)表中的不一致,這樣就導(dǎo)致查詢(xún)到的不是本來(lái)的欲得到的數(shù)據(jù)。解決方案

      1,用order by select top 30 recid from A order by ricid 如果該字段不是自增長(zhǎng),就會(huì)出現(xiàn)問(wèn)題 2,在那個(gè)子查詢(xún)中也加條件:select top 30 recid from A where recid>-1

      例2:查詢(xún)表中的最后以條記錄,并不知道這個(gè)表共有多少數(shù)據(jù),以及表結(jié)構(gòu)。

      set @s = 'select top 1 * from T

      where pid not in(select top ' + str(@count-1)+ ' pid from T)' print @s

      exec sp_executesql

      @s 9:獲取當(dāng)前數(shù)據(jù)庫(kù)中的所有用戶(hù)表

      select Name from sysobjects where xtype='u' and status>=0 10:獲取某一個(gè)表的所有字段

      select name from syscolumns where id=object_id('表名')select name from syscolumns where id in(select id from sysobjects where type = 'u' and name = '表名')兩種方式的效果相同

      11:查看與某一個(gè)表相關(guān)的視圖、存儲(chǔ)過(guò)程、函數(shù)

      select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%' 12:查看當(dāng)前數(shù)據(jù)庫(kù)中所有存儲(chǔ)過(guò)程

      select name as 存儲(chǔ)過(guò)程名稱(chēng) from sysobjects where xtype='P' 13:查詢(xún)用戶(hù)創(chuàng)建的所有數(shù)據(jù)庫(kù)

      select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')或者

      select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01 14:查詢(xún)某一個(gè)表的字段和數(shù)據(jù)類(lèi)型

      select column_name,data_type from information_schema.columns where table_name = '表名' 15:不同服務(wù)器數(shù)據(jù)庫(kù)之間的數(shù)據(jù)操作--創(chuàng)建鏈接服務(wù)器

      exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '遠(yuǎn)程服務(wù)器名或ip地址 ' exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用戶(hù)名 ', '密碼 '--查詢(xún)示例

      select * from ITSV.數(shù)據(jù)庫(kù)名.dbo.表名--導(dǎo)入示例

      select * into 表 from ITSV.數(shù)據(jù)庫(kù)名.dbo.表名--以后不再使用時(shí)刪除鏈接服務(wù)器

      exec sp_dropserver 'ITSV ', 'droplogins '

      --連接遠(yuǎn)程/局域網(wǎng)數(shù)據(jù)(openrowset/openquery/opendatasource)--

      1、openrowset--查詢(xún)示例

      select * from openrowset('SQLOLEDB ', 'sql服務(wù)器名 ';'用戶(hù)名 ';'密碼 ',數(shù)據(jù)庫(kù)名.dbo.表名)

      --生成本地表

      select * into 表 from openrowset('SQLOLEDB ', 'sql服務(wù)器名 ';'用戶(hù)名 ';'密碼 ',數(shù)據(jù)庫(kù)名.dbo.表名)

      --把本地表導(dǎo)入遠(yuǎn)程表

      insert openrowset('SQLOLEDB ', 'sql服務(wù)器名 ';'用戶(hù)名 ';'密碼 ',數(shù)據(jù)庫(kù)名.dbo.表名)select *from 本地表--更新本地表 update b set b.列A=a.列A from openrowset('SQLOLEDB ', 'sql服務(wù)器名 ';'用戶(hù)名 ';'密碼 ',數(shù)據(jù)庫(kù)名.dbo.表名)as a inner join 本地表 b on a.column1=b.column1--openquery用法需要?jiǎng)?chuàng)建一個(gè)連接--首先創(chuàng)建一個(gè)連接創(chuàng)建鏈接服務(wù)器

      exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '遠(yuǎn)程服務(wù)器名或ip地址 '--查詢(xún)

      select * FROM openquery(ITSV, 'SELECT * FROM 數(shù)據(jù)庫(kù).dbo.表名 ')--把本地表導(dǎo)入遠(yuǎn)程表

      insert openquery(ITSV, 'SELECT * FROM 數(shù)據(jù)庫(kù).dbo.表名 ')select * from 本地表--更新本地表 update b set b.列B=a.列B FROM openquery(ITSV, 'SELECT * FROM 數(shù)據(jù)庫(kù).dbo.表名 ')as a inner join 本地表 b on a.列A=b.列A

      --

      3、opendatasource/openrowset SELECT * FROM opendatasource('SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ').test.dbo.roy_ta--把本地表導(dǎo)入遠(yuǎn)程表

      insert opendatasource('SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ').數(shù)據(jù)庫(kù).dbo.表名 select * from 本地表

      SQL Server基本函數(shù)

      SQL Server基本函數(shù) 1.字符串函數(shù) 長(zhǎng)度與分析用

      1,datalength(Char_expr)返回字符串包含字符數(shù),但不包含后面的空格

      2,substring(expression,start,length)取子串,字符串的下標(biāo)是從“1”,start為起始位置,length為字符串長(zhǎng)度,實(shí)際應(yīng)用中以len(expression)取得其長(zhǎng)度

      3,right(char_expr,int_expr)返回字符串右邊第int_expr個(gè)字符,還用left于之相反

      4,isnull(check_expression , replacement_value)如果check_expression為空,則返回replacement_value的值,不為空,就返回check_expression字符操作類(lèi)

      5,Sp_addtype 自定義數(shù)據(jù)類(lèi)型

      例如:EXEC sp_addtype birthday, datetime, 'NULL' 6,set nocount {on|off} 使返回的結(jié)果中不包含有關(guān)受 Transact-SQL 語(yǔ)句影響的行數(shù)的信息。如果存儲(chǔ)過(guò)程中包含的一些語(yǔ)句并不返回許多實(shí)際的數(shù)據(jù),則該設(shè)置由于大量減少了網(wǎng)絡(luò)流量,因此可顯著提高性能。SET NOCOUNT 設(shè)置是在執(zhí)行或運(yùn)行時(shí)設(shè)置,而不是在分析時(shí)設(shè)置。

      SET NOCOUNT 為 ON 時(shí),不返回計(jì)數(shù)(表示受 Transact-SQL 語(yǔ)句影響的行數(shù))。SET NOCOUNT 為 OFF 時(shí),返回計(jì)數(shù)

      常識(shí)

      在SQL查詢(xún)中:from后最多可以跟多少?gòu)埍砘蛞晥D:256 在SQL語(yǔ)句中出現(xiàn) Order by,查詢(xún)時(shí),先排序,后取

      在SQL中,一個(gè)字段的最大容量是8000,而對(duì)于nvarchar(4000),由于nvarchar是Unicode碼。

      SQLServer2000同步復(fù)制技術(shù)實(shí)現(xiàn)步驟

      一、預(yù)備工作

      1.發(fā)布服務(wù)器,訂閱服務(wù)器都創(chuàng)建一個(gè)同名的windows用戶(hù),并設(shè)置相同的密碼,做為發(fā)布快照文件夾的有效訪問(wèn)用戶(hù)--管理工具--計(jì)算機(jī)管理--用戶(hù)和組--右鍵用戶(hù)

      --新建用戶(hù)

      --建立一個(gè)隸屬于administrator組的登陸windows的用戶(hù)(SynUser)2.在發(fā)布服務(wù)器上,新建一個(gè)共享目錄,做為發(fā)布的快照文件的存放目錄,操作: 我的電腦--D: 新建一個(gè)目錄,名為: PUB--右鍵這個(gè)新建的目錄--屬性--共享

      --選擇“共享該文件夾”--通過(guò)“權(quán)限”按紐來(lái)設(shè)置具體的用戶(hù)權(quán)限,保證第一步中創(chuàng)建的用戶(hù)(SynUser)具有對(duì)該文件夾的所有權(quán)限

      --確定

      3.設(shè)置SQL代理(SQLSERVERAGENT)服務(wù)的啟動(dòng)用戶(hù)(發(fā)布/訂閱服務(wù)器均做此設(shè)置)開(kāi)始--程序--管理工具--服務(wù)--右鍵SQLSERVERAGENT--屬性--登陸--選擇“此賬戶(hù)”--輸入或者選擇第一步中創(chuàng)建的windows登錄用戶(hù)名(SynUser)--“密碼”中輸入該用戶(hù)的密碼

      4.設(shè)置SQL Server身份驗(yàn)證模式,解決連接時(shí)的權(quán)限問(wèn)題(發(fā)布/訂閱服務(wù)器均做此設(shè)置)企業(yè)管理器

      --右鍵SQL實(shí)例--屬性

      --安全性--身份驗(yàn)證

      --選擇“SQL Server 和 Windows”

      --確定

      5.在發(fā)布服務(wù)器和訂閱服務(wù)器上互相注冊(cè) 企業(yè)管理器

      --右鍵SQL Server組

      --新建SQL Server注冊(cè)...--下一步--可用的服務(wù)器中,輸入你要注冊(cè)的遠(yuǎn)程服務(wù)器名--添加--下一步--連接使用,選擇第二個(gè)“SQL Server身份驗(yàn)證”--下一步--輸入用戶(hù)名和密碼(SynUser)

      --下一步--選擇SQL Server組,也可以創(chuàng)建一個(gè)新組--下一步--完成

      6.對(duì)于只能用IP,不能用計(jì)算機(jī)名的,為其注冊(cè)服務(wù)器別名(此步在實(shí)施中沒(méi)用到)

      (在連接端配置,比如,在訂閱服務(wù)器上配置的話(huà),服務(wù)器名稱(chēng)中輸入的是發(fā)布服務(wù)器的IP)開(kāi)始--程序--Microsoft SQL Server--客戶(hù)端網(wǎng)絡(luò)實(shí)用工具--別名--添加

      --網(wǎng)絡(luò)庫(kù)選擇“tcp/ip”--服務(wù)器別名輸入SQL服務(wù)器名

      --連接參數(shù)--服務(wù)器名稱(chēng)中輸入SQL服務(wù)器ip地址

      --如果你修改了SQL的端口,取消選擇“動(dòng)態(tài)決定端口”,并輸入對(duì)應(yīng)的端口號(hào)

      二、正式配置

      1、配置發(fā)布服務(wù)器

      打開(kāi)企業(yè)管理器,在發(fā)布服務(wù)器(B、C、D)上執(zhí)行以下步驟:(1)從[工具]下拉菜單的[復(fù)制]子菜單中選擇[配置發(fā)布、訂閱服務(wù)器和分發(fā)]出現(xiàn)配置發(fā)布和分發(fā)向?qū)?2)[下一步] 選擇分發(fā)服務(wù)器 可以選擇把發(fā)布服務(wù)器自己作為分發(fā)服務(wù)器或者其他sql的服務(wù)器(選擇自己)

      (3)[下一步] 設(shè)置快照文件夾

      采用默認(rèn)servernamePub(4)[下一步] 自定義配置

      可以選擇:是,讓我設(shè)置分發(fā)數(shù)據(jù)庫(kù)屬性啟用發(fā)布服務(wù)器或設(shè)置發(fā)布設(shè)置 否,使用下列默認(rèn)設(shè)置(推薦)

      (5)[下一步] 設(shè)置分發(fā)數(shù)據(jù)庫(kù)名稱(chēng)和位置 采用默認(rèn)值(6)[下一步] 啟用發(fā)布服務(wù)器 選擇作為發(fā)布的服務(wù)器(7)[下一步] 選擇需要發(fā)布的數(shù)據(jù)庫(kù)和發(fā)布類(lèi)型(8)[下一步] 選擇注冊(cè)訂閱服務(wù)器(9)[下一步] 完成配置

      2、創(chuàng)建出版物

      發(fā)布服務(wù)器B、C、D上

      (1)從[工具]菜單的[復(fù)制]子菜單中選擇[創(chuàng)建和管理發(fā)布]命令(2)選擇要?jiǎng)?chuàng)建出版物的數(shù)據(jù)庫(kù),然后單擊[創(chuàng)建發(fā)布](3)在[創(chuàng)建發(fā)布向?qū)的提示對(duì)話(huà)框中單擊[下一步]系統(tǒng)就會(huì)彈出一個(gè)對(duì)話(huà)框。對(duì)話(huà)框上的內(nèi)容是復(fù)制的三個(gè)類(lèi)型。我們現(xiàn)在選第一個(gè)也就是默認(rèn)的快照發(fā)布(其他兩個(gè)大家可以去看看幫助)(4)單擊[下一步]系統(tǒng)要求指定可以訂閱該發(fā)布的數(shù)據(jù)庫(kù)服務(wù)器類(lèi)型, SQLSERVER允許在不同的數(shù)據(jù)庫(kù)如 orACLE或ACCESS之間進(jìn)行數(shù)據(jù)復(fù)制。但是在這里我們選擇運(yùn)行“SQL SERVER 2000”的數(shù)據(jù)庫(kù)服務(wù)器

      (5)單擊[下一步]系統(tǒng)就彈出一個(gè)定義文章的對(duì)話(huà)框也就是選擇要出版的表 注意: 如果前面選擇了事務(wù)發(fā)布 則再這一步中只能選擇帶有主鍵的表(6)選擇發(fā)布名稱(chēng)和描述

      (7)自定義發(fā)布屬性 向?qū)峁┑倪x擇:

      是 我將自定義數(shù)據(jù)篩選,啟用匿名訂閱和或其他自定義屬性 否 根據(jù)指定方式創(chuàng)建發(fā)布(建議采用自定義的方式)(8)[下一步] 選擇篩選發(fā)布的方式

      (9)[下一步] 可以選擇是否允許匿名訂閱

      1)如果選擇署名訂閱,則需要在發(fā)布服務(wù)器上添加訂閱服務(wù)器

      方法: [工具]->[復(fù)制]->[配置發(fā)布、訂閱服務(wù)器和分發(fā)的屬性]->[訂閱服務(wù)器] 中添加 否則在訂閱服務(wù)器上請(qǐng)求訂閱時(shí)會(huì)出現(xiàn)的提示:改發(fā)布不允許匿名訂閱 如果仍然需要匿名訂閱則用以下解決辦法

      [企業(yè)管理器]->[復(fù)制]->[發(fā)布內(nèi)容]->[屬性]->[訂閱選項(xiàng)] 選擇允許匿名請(qǐng)求訂閱 2)如果選擇匿名訂閱,則配置訂閱服務(wù)器時(shí)不會(huì)出現(xiàn)以上提示(10)[下一步] 設(shè)置快照 代理程序調(diào)度(11)[下一步] 完成配置

      當(dāng)完成出版物的創(chuàng)建后創(chuàng)建出版物的數(shù)據(jù)庫(kù)也就變成了一個(gè)共享數(shù)據(jù)庫(kù) 有數(shù)據(jù)

      srv1.庫(kù)名..author有字段:id,name,phone, srv2.庫(kù)名..author有字段:id,name,telphone,adress

      要求:

      srv1.庫(kù)名..author增加記錄則srv1.庫(kù)名..author記錄增加

      srv1.庫(kù)名..author的phone字段更新,則srv1.庫(kù)名..author對(duì)應(yīng)字段telphone更新--*/

      --大致的處理步驟

      --1.在 srv1 上創(chuàng)建連接服務(wù)器,以便在 srv1 中操作 srv2,實(shí)現(xiàn)同步

      exec sp_addlinkedserver 'srv2','','SQLOLEDB','srv2的sql實(shí)例名或ip' exec sp_addlinkedsrvlogin 'srv2','false',null,'用戶(hù)名','密碼' go--2.在 srv1 和 srv2 這兩臺(tái)電腦中,啟動(dòng) msdtc(分布式事務(wù)處理服務(wù)),并且設(shè)置為自動(dòng)啟動(dòng)

      。我的電腦--控制面板--管理工具--服務(wù)--右鍵 Distributed Transaction Coordinator--屬性--啟動(dòng)--并將啟動(dòng)類(lèi)型設(shè)置為自動(dòng)啟動(dòng) go

      --然后創(chuàng)建一個(gè)作業(yè)定時(shí)調(diào)用上面的同步處理存儲(chǔ)過(guò)程就行了

      企業(yè)管理器--管理

      --SQL Server代理--右鍵作業(yè)--新建作業(yè)

      --“常規(guī)”項(xiàng)中輸入作業(yè)名稱(chēng)--“步驟”項(xiàng)

      --新建

      --“步驟名”中輸入步驟名

      --“類(lèi)型”中選擇“Transact-SQL 腳本(TSQL)”--“數(shù)據(jù)庫(kù)”選擇執(zhí)行命令的數(shù)據(jù)庫(kù)

      --“命令”中輸入要執(zhí)行的語(yǔ)句: exec p_process--確定--“調(diào)度”項(xiàng)--新建調(diào)度

      --“名稱(chēng)”中輸入調(diào)度名稱(chēng)

      --“調(diào)度類(lèi)型”中選擇你的作業(yè)執(zhí)行安排--如果選擇“反復(fù)出現(xiàn)”--點(diǎn)“更改”來(lái)設(shè)置你的時(shí)間安排

      然后將SQL Agent服務(wù)啟動(dòng),并設(shè)置為自動(dòng)啟動(dòng),否則你的作業(yè)不會(huì)被執(zhí)行

      設(shè)置方法: 我的電腦--控制面板--管理工具--服務(wù)--右鍵 SQLSERVERAGENT--屬性--啟動(dòng)類(lèi)型--選擇“自動(dòng)啟動(dòng)”--確定.--3.實(shí)現(xiàn)同步處理的方法2,定時(shí)同步

      --在srv1中創(chuàng)建如下的同步處理存儲(chǔ)過(guò)程 create proc p_process as--更新修改過(guò)的數(shù)據(jù)

      update b set name=i.name,telphone=i.telphone from srv2.庫(kù)名.dbo.author b,author i where b.id=i.id and(b.name <> i.name or b.telphone <> i.telphone)

      --插入新增的數(shù)據(jù)

      insert srv2.庫(kù)名.dbo.author(id,name,telphone)select id,name,telphone from author i where not exists(select * from srv2.庫(kù)名.dbo.author where id=i.id)

      --刪除已經(jīng)刪除的數(shù)據(jù)(如果需要的話(huà))delete b from srv2.庫(kù)名.dbo.author b where not exists(select * from author where id=b.id)go

      第五篇:經(jīng)典實(shí)用SQL語(yǔ)句總結(jié)

      經(jīng)典實(shí)用SQL語(yǔ)句大全總結(jié)

      [編輯語(yǔ)言]2015-05-26 19:56

      本文導(dǎo)航

      1、首頁(yè)2、11、說(shuō)明:四表聯(lián)查問(wèn)題:

      本文是經(jīng)典實(shí)用SQL語(yǔ)句大全的介紹,下面是該介紹的詳細(xì)信息。下列語(yǔ)句部分是Mssql語(yǔ)句,不可以在access中使用。SQL分類(lèi):

      DDL—數(shù)據(jù)定義語(yǔ)言(CREATE,ALTER,DROP,DECLARE)DML—數(shù)據(jù)操縱語(yǔ)言(SELECT,DELETE,UPDATE,INSERT)DCL—數(shù)據(jù)控制語(yǔ)言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,簡(jiǎn)要介紹基礎(chǔ)語(yǔ)句:

      1、說(shuō)明:創(chuàng)建數(shù)據(jù)庫(kù)

      CREATE DATABASE database-name

      2、說(shuō)明:刪除數(shù)據(jù)庫(kù) drop database dbname

      3、說(shuō)明:備份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

      4、說(shuō)明:創(chuàng)建新表

      create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根據(jù)已有的表創(chuàng)建新表:

      A:create table tab_new like tab_old(使用舊表創(chuàng)建新表)B:create table tab_new as select col1,col2… from tab_old definition only

      5、說(shuō)明:

      刪除新表:drop table tabname

      6、說(shuō)明:

      增加一個(gè)列:Alter table tabname add column col type 注:列增加后將不能刪除。DB2中列加上后數(shù)據(jù)類(lèi)型也不能改變,唯一能改變的是增加varchar類(lèi)型的長(zhǎng)度。

      7、說(shuō)明:

      添加主鍵:Alter table tabname add primary key(col)說(shuō)明:

      刪除主鍵:Alter table tabname drop primary key(col)

      8、說(shuō)明:

      創(chuàng)建索引:create [unique] index idxname on tabname(col….)刪除索引:drop index idxname 注:索引是不可更改的,想更改必須刪除重新建。

      9、說(shuō)明: 創(chuàng)建視圖:create view viewname as select statement 刪除視圖:drop view viewname

      10、說(shuō)明:幾個(gè)簡(jiǎn)單的基本的sql語(yǔ)句 選擇: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的語(yǔ)法很精妙,查資料!排序:select * from table1 order by field1,field2 [desc] 總數(shù):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 最?。簊elect min(field1)as minvalue from table1

      11、說(shuō)明:幾個(gè)高級(jí)查詢(xún)運(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è)查詢(xún)結(jié)果行必須是一致的。

      12、說(shuō)明:使用外連接 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è)連接表中的所有記錄。其次,大家來(lái)看一些不錯(cuò)的sql語(yǔ)句

      1、說(shuō)明:復(fù)制表(只復(fù)制結(jié)構(gòu),源表名:a 新表名:b)(Access可用)法一:select * into b from a where 1<>1 法二:select top 0 * into b from a

      2、說(shuō)明:拷貝表(拷貝數(shù)據(jù),源表名:a 目標(biāo)表名:b)(Access可用)insert into b(a, b, c)select d,e,f from b;

      3、說(shuō)明:跨數(shù)據(jù)庫(kù)之間表的拷貝(具體數(shù)據(jù)使用絕對(duì)路徑)(Access可用)insert into b(a, b, c)select d,e,f from b in ‘具體數(shù)據(jù)庫(kù)’ where 條件 例子:..from b in '“&Server.MapPath(”.“)&”data.mdb“ &”' where..4、說(shuō)明:子查詢(xún)(表名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、說(shuō)明:顯示文章、提交人和最后回復(fù)時(shí)間

      select a.title,a.username,b.adddate from table a,(select max(adddate)adddate from table where table.title=a.title)b

      6、說(shuō)明:外連接查詢(xún)(表名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、說(shuō)明:在線(xiàn)視圖查詢(xún)(表名1:a)select * from(SELECT a,b,c FROM a)T where t.a > 1;

      8、說(shuō)明:between的用法,between限制查詢(xún)數(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

      9、說(shuō)明:in 的使用方法

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

      10、說(shuō)明:兩張關(guān)聯(lián)表,刪除主表中已經(jīng)在副表中沒(méi)有的信息 delete from table1 where not exists(select * from table2 where table1.field1=table2.field1)

      11、說(shuō)明:四表聯(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.....12、說(shuō)明:日程安排提前五分鐘提醒

      SQL: select * from 日程安排 where datediff('minute',f開(kāi)始時(shí)間,getdate())>5

      13、說(shuō)明:一條sql 語(yǔ)句搞定數(shù)據(jù)庫(kù)分頁(yè)

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

      14、說(shuō)明:前10條記錄

      select top 10 * form table1 where 范圍

      15、說(shuō)明:選擇在每一組b值相同的數(shù)據(jù)中對(duì)應(yīng)的a最大的記錄的所有信息(類(lèi)似這樣的用法可以用于論壇每月排行榜,每月熱銷(xiāo)產(chǎn)品分析,按科目成績(jī)排名,等等.)select a,b,c from tablename ta where a=(select max(a)from tablename tb where tb.b=ta.b)

      16、說(shuō)明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表(select a from tableA)except(select a from tableB)except(select a from tableC)

      17、說(shuō)明:隨機(jī)取出10條數(shù)據(jù)

      select top 10 * from tablename order by newid()

      18、說(shuō)明:隨機(jī)選擇記錄 select newid()

      19、說(shuō)明:刪除重復(fù)記錄

      Delete from tablename where id not in(select max(id)from tablename group by col1,col2,...)20、說(shuō)明:列出數(shù)據(jù)庫(kù)里所有的表名

      select name from sysobjects where type='U'

      21、說(shuō)明:列出表里的所有的

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

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

      23、說(shuō)明:初始化表table1 TRUNCATE TABLE table1

      24、說(shuō)明:選擇從10到15的記錄

      select top 5 * from(select top 15 * from table order by id asc)table_別名 order by id desc 隨機(jī)選擇數(shù)據(jù)庫(kù)記錄的方法(使用Randomize函數(shù),通過(guò)SQL語(yǔ)句實(shí)現(xiàn))對(duì)存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)來(lái)說(shuō),隨機(jī)數(shù)特性能給出上面的效果,但它們可能太慢了些。你不能要求ASP“找個(gè)隨機(jī)數(shù)”然后打印出來(lái)。實(shí)際上常見(jiàn)的解決方案是建立如下所示的循環(huán):

      Randomize RNumber = Int(Rnd*499)+1 While Not objRec.EOF If objRec(“ID”)= RNumber THEN...這里是執(zhí)行腳本...end if objRec.MoveNext Wend 這很容易理解。首先,你取出1到500范圍之內(nèi)的一個(gè)隨機(jī)數(shù)(假設(shè)500就是數(shù)據(jù)庫(kù)內(nèi)記錄的總數(shù))。然后,你遍歷每一記錄來(lái)測(cè)試ID 的值、檢查其是否匹配RNumber。滿(mǎn)足條件的話(huà)就執(zhí)行由THEN 關(guān)鍵字開(kāi)始的那一塊代碼。假如你的RNumber 等于495,那么要循環(huán)一遍數(shù)據(jù)庫(kù)花的時(shí)間可就長(zhǎng)了。雖然500這個(gè)數(shù)字看起來(lái)大了些,但相比更為穩(wěn)固的企業(yè)解決方案這還是個(gè)小型數(shù)據(jù)庫(kù)了,后者通常在一個(gè)數(shù)據(jù)庫(kù)內(nèi)就包含了成千上萬(wàn)條記錄。這時(shí)候不就死定了? 采用SQL,你就可以很快地找出準(zhǔn)確的記錄并且打開(kāi)一個(gè)只包含該記錄的 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”)不必寫(xiě)出RNumber 和ID,你只需要檢查匹配情況即可。只要你對(duì)以上代碼的工作滿(mǎn)意,你自可按需操作“隨機(jī)”記錄。Recordset沒(méi)有包含其他內(nèi)容,因此你很快就能找到你需要的記錄這樣就大大降低了處理時(shí)間。

      再談隨機(jī)數(shù)

      現(xiàn)在你下定決心要榨干Random 函數(shù)的最后一滴油,那么你可能會(huì)一次取出多條隨機(jī)記錄或者想采用一定隨機(jī)范圍內(nèi)的記錄。把上面的標(biāo)準(zhǔn)Random 示例擴(kuò)展一下就可以用SQL應(yīng)對(duì)上面兩種情況了。為了取出幾條隨機(jī)選擇的記錄并存放在同一recordset內(nèi),你可以存儲(chǔ)三個(gè)隨機(jī)數(shù),然后查詢(xún)數(shù)據(jù)庫(kù)獲得匹配這些數(shù)字的記錄:

      SQL = “SELECT * FROM Customers WHERE ID = ” & RNumber & “ OR ID = ” & RNumber2 & “ OR ID = ” & RNumber3 假如你想選出10條記錄(也許是每次頁(yè)面裝載時(shí)的10條鏈接的列表),你可以用BETWEEN 或者數(shù)學(xué)等式選出第一條記錄和適當(dāng)數(shù)量的遞增記錄。這一操作可以通過(guò)好幾種方式來(lái)完成,但是 SELECT 語(yǔ)句只顯示一種可能(這里的ID 是自動(dòng)生成的號(hào)碼):

      SQL = “SELECT * FROM Customers WHERE ID BETWEEN ” & RNumber & “ AND ” & RNumber & “+ 9” 注意:以上代碼的執(zhí)行目的不是檢查數(shù)據(jù)庫(kù)內(nèi)是否有9條并發(fā)記錄。隨機(jī)讀取若干條記錄,測(cè)試過(guò)

      Access語(yǔ)法: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左連接語(yǔ)法(最近開(kāi)發(fā)要用左連接,Access幫助什么都沒(méi)有,網(wǎng)上沒(méi)有Access的SQL說(shuō)明,只有自己測(cè)試, 現(xiàn)在記下以備后查)語(yǔ)法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where...使用SQL語(yǔ)句 用...代替過(guò)長(zhǎng)的字符串顯示 語(yǔ)法: SQL數(shù)據(jù)庫(kù):select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename Access數(shù)據(jù)庫(kù):SELECT iif(len(field)>2,left(field,2)+'...',field)FROM tablename;Conn.Execute說(shuō)明 Execute方法

      該方法用于執(zhí)行SQL語(yǔ)句。根據(jù)SQL語(yǔ)句執(zhí)行后是否返回記錄集,該方法的使用格式分為以下兩種:

      1.執(zhí)行SQL查詢(xún)語(yǔ)句時(shí),將返回查詢(xún)得到的記錄集。用法為: Set 對(duì)象變量名=連接對(duì)象.Execute(“SQL 查詢(xún)語(yǔ)言”)Execute方法調(diào)用后,會(huì)自動(dòng)創(chuàng)建記錄集對(duì)象,并將查詢(xún)結(jié)果存儲(chǔ)在該記錄對(duì)象中,通過(guò)Set方法,將記錄集賦給指定的對(duì)象保存,以后對(duì)象變量就代表了該記錄集對(duì)象。

      2.執(zhí)行SQL的操作性語(yǔ)言時(shí),沒(méi)有記錄集的返回。此時(shí)用法為: 連接對(duì)象.Execute “SQL 操作性語(yǔ)句” [, RecordAffected][, Option] ·RecordAffected 為可選項(xiàng),此出可放置一個(gè)變量,SQL語(yǔ)句執(zhí)行后,所生效的記錄數(shù)會(huì)自動(dòng)保存到該變量中。通過(guò)訪問(wèn)該變量,就可知道SQL語(yǔ)句隊(duì)多少條記錄進(jìn)行了操作。

      ·Option 可選項(xiàng),該參數(shù)的取值通常為adCMDText,它用于告訴ADO,應(yīng)該將Execute方法之后的第一個(gè)字符解釋為命令文本。通過(guò)指定該參數(shù),可使執(zhí)行更高效。

      ·BeginTrans、RollbackTrans、CommitTrans方法 這三個(gè)方法是連接對(duì)象提供的用于事務(wù)處理的方法。BeginTrans用于開(kāi)始一個(gè)事物;RollbackTrans用于回滾事務(wù);CommitTrans用于提交所有的事務(wù)處理結(jié)果,即確認(rèn)事務(wù)的處理。

      事務(wù)處理可以將一組操作視為一個(gè)整體,只有全部語(yǔ)句都成功執(zhí)行后,事務(wù)處理才算成功;若其中有一個(gè)語(yǔ)句執(zhí)行失敗,則整個(gè)處理就算失敗,并恢復(fù)到處里前的狀態(tài)。

      BeginTrans和CommitTrans用于標(biāo)記事務(wù)的開(kāi)始和結(jié)束,在這兩個(gè)之間的語(yǔ)句,就是作為事務(wù)處理的語(yǔ)句。判斷事務(wù)處理是否成功,可通過(guò)連接對(duì)象的Error集合來(lái)實(shí)現(xiàn),若Error集合的成員個(gè)數(shù)不為0,則說(shuō)明有錯(cuò)誤發(fā)生,事務(wù)處理失敗。Error集合中的每一個(gè)Error對(duì)象,代表一個(gè)錯(cuò)誤信息。

      SQL語(yǔ)句大全精要 2006/10/26 13:46 DELETE 語(yǔ)句

      DELETE語(yǔ)句:用于創(chuàng)建一個(gè)刪除查詢(xún),可從列在 FROM 子句之中的一個(gè)或多個(gè)表中刪除記錄,且該子句滿(mǎn)足 WHERE 子句中的條件,可以使用DELETE刪除多個(gè)記錄。

      語(yǔ)法:DELETE [table.*] FROM table WHERE criteria 語(yǔ)法:DELETE * FROM table WHERE criteria='查詢(xún)的字' 說(shuō)明:table參數(shù)用于指定從其中刪除記錄的表的名稱(chēng)。

      criteria參數(shù)為一個(gè)表達(dá)式,用于指定哪些記錄應(yīng)該被刪除的表達(dá)式。可以使用 Execute 方法與一個(gè) DROP 語(yǔ)句從數(shù)據(jù)庫(kù)中放棄整個(gè)表。不過(guò),若用這種方法刪除表,將會(huì)失去表的結(jié)構(gòu)。不同的是當(dāng)使用 DELETE,只有數(shù)據(jù)會(huì)被刪除;表的結(jié)構(gòu)以及表的所有屬性仍然保留,例如字段屬性及索引。

      以上就是精品學(xué)習(xí)網(wǎng)提供的關(guān)于經(jīng)典實(shí)用SQL語(yǔ)句大全的內(nèi)容,希望對(duì)大家有所幫助。

      下載SQL語(yǔ)句學(xué)習(xí)總結(jié)(共五篇)word格式文檔
      下載SQL語(yǔ)句學(xué)習(xí)總結(jié)(共五篇).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(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)范文推薦

        SQL語(yǔ)句總結(jié)

        SQL語(yǔ)句總結(jié) 一、插入記錄 1. 插入固定的數(shù)值 語(yǔ)法: INSERT[INTO]表名[(字段列表)]VALUES(值列表) 示例1: Insert into Students values('Mary’,24,’mary@163.com’) 若沒(méi)有指......

        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ò)查詢(xún)管理器寫(xiě)的語(yǔ)句 1、查詢(xún) 2、修改 3、刪除 4、插入表名:users 包含字段:id,sname,sage 查詢(xún) select * from users查詢(xún)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......

        常用sql語(yǔ)句

        1、查看表空間的名稱(chēng)及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d......

        SQL基礎(chǔ)語(yǔ)句總結(jié)

        一. 四種基本的SQL語(yǔ)句 1. 查詢(xún) select * from table 2. 更新 update table set field=value 3. 插入 insert [into] table (field) values(value) 4. 刪除 delete [from] t......