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

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

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

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

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

      SQL學習基礎(chǔ)篇

      時間:2019-05-14 12:48:04下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《SQL學習基礎(chǔ)篇》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《SQL學習基礎(chǔ)篇》。

      第一篇:SQL學習基礎(chǔ)篇

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

      CREATE DATABASE TEST_ABC;說明:(可以采用大寫也可以采用小寫,SQL語句本身不區(qū)分大小寫,創(chuàng)建完畢之 后需要用英文分號;來結(jié)尾,TEST_ABC是數(shù)據(jù)庫名字的代表)。

      進入數(shù)據(jù)庫:

      use TEST_ABC;說明:只有當創(chuàng)建好數(shù)據(jù)庫之后,進入數(shù)據(jù)庫,才能創(chuàng)建table(表)。創(chuàng)建表:

      create table food_list(food_name varchar(10),food_price int(5));

      說明:(table代表的是表,table之后的就是表的名字,名字之后用括 號(英文格式括起來),然后穿件的就是表的列的名字如food_name和 food_price,varchar和int代表的是這兩個的數(shù)據(jù)類型,其后括號里 面的數(shù)字表示的是可以接受的最大字符數(shù),最后用分號結(jié)束整個表的創(chuàng) 建過程。)

      檢查表:

      desc food_list;

      說明:desc是describe的縮寫。

      刪除表:

      drop table food_list;

      插入值:

      insert into food_list(food_name,food_price)values('鐵板魷魚','200');

      說明:insert into表示插入,插入的某個數(shù)據(jù)庫中的表中的相應的值,第一個括弧之內(nèi)的為每一列的名字,但是可以只是部分列的名字,而相 應的第二個括弧之內(nèi)的為第一個括弧之內(nèi)的列相對應的值,不可多也不 可少。中間用values來連接。

      查找:

      select * from food_list;

      select * from food_list where food_name='鐵板魷魚';select food_name,food_price from food_list wherefood_name='紅燒豆腐';

      select food_name,food_price from food_list wherefood_name='紅燒豆腐'and food_name='手抓羊肉' orfood_name='雞腿排骨' or food_price<20;

      select * from food_list where food_price between 5and 20;

      select food_name from food_list where food_namein('碳烤魚','鐵板魷魚','紅燒肉','辣子雞丁','烤龍蝦');

      說明1: select是選擇,from表示從指定的某一張table(表)中選,第一個查詢語句用來顯示整個表的記錄情況,而第二個查詢語句是普通 的查詢方式,更為普遍,where后面表示條件,其后跟隨的是列的名字,如food_name,用等號連接 后面為查詢的對象,如鐵板魷魚,但是要用 英文的引號引起來,然后用英文的分號結(jié)束整個查詢語句即可。對于數(shù) 字類型的值可以加單引號也可以不加,而對于字符類型的值而言需要加 單引號,而且必須加單引號。說明2:對于第三個的格式,select后面是列的名字,表示選擇了某列,而* 號表示將所有的列全選上,其他的地方和以上兩個查詢語句相同。說明3:對于第四種形式而言,最大的不同在于對and和or 關(guān)鍵字的 應用,and表示兩個或者多個條件都要滿足,而or表示只要滿足其中的 一個條件就可以了。說明4:between是一個很有效的比較方式,和and連用,并且在第一 個between...and之后也可以接第二個between and。說明5:用in關(guān)鍵字可以代替連續(xù)使用多個or的情況,上述where子 句等同于where food_name='碳烤魚' or food_name='鐵板魷魚' orfood_name='紅燒肉' or food_name='辣子雞丁' or food_name='烤龍 蝦';還有一種狀況是not in作用和in 正好相反。

      通配符:

      select* from food_list where food_name like'_雞'and food_name like '%肉’;

      說明:配合關(guān)鍵字like使用,通配符有%,_,%是任意數(shù)量的未知字符的通配符,_是單個未知字符的通配符,如'%肉'可能表示紅燒肉,可以表示手抓羊肉,也可 以表示孜然烤肉,總之,其表示以肉字為結(jié)尾的所有字符,而'肉%'表示以肉開頭 所有字符。'_雞',表示兩個字符,所有以'雞'為結(jié)尾的字符串。

      刪除數(shù)據(jù):

      delete from food_list where food_name='紅燒肉';說明:delete后面直接跟from,from后面是某個表的名字where后面是條件,表示要刪除的某個元組(行)。

      更新數(shù)據(jù):

      update food_list

      setfood_name=”清真黑熊掌,暴炒驢肝”

      where food_price=300;

      說明:update之后的是表的名稱,set的是對指定的記錄要更新的值,而一切的決定權(quán)就設(shè)在where子句之中,如果沒有where子句,整個food_name都列被設(shè)置為 清真黑熊掌,暴炒驢肝。而且最后的where子 句之中也可以和and,or,in,not in,like等關(guān)鍵字組合使用。

      第二篇:SQL基礎(chǔ)語句總結(jié)

      一.四種基本的SQL語句

      1.查詢

      select * from table 2.更新

      update table set field=value 3.插入

      insert [into] table(field)values(value)4.刪除

      delete [from] table 二.語句的執(zhí)行順序

      1.語法分析

      分析語句中語法是否符合規(guī)范,衡量語句中各表達式的意義。

      2.語義分析

      檢查語句中涉及的所有數(shù)據(jù)庫對象是否存在,且用戶有相應的權(quán)限。

      3.選擇優(yōu)化器

      不同的數(shù)據(jù)庫有不同的算法(這個涉及到數(shù)據(jù)結(jié)構(gòu)),數(shù)據(jù)庫會根據(jù)自己的理解(數(shù)據(jù)庫本身)為 SQL語句選擇不同的優(yōu)化器,不同的優(yōu)化器會選擇不同的“執(zhí)行計劃”

      4.運行“執(zhí)行計劃”

      根據(jù)“執(zhí)行計劃”執(zhí)行SQL語句。以上所述是數(shù)據(jù)執(zhí)行時的大體路線。

      5.select 語句的執(zhí)行順序

      借用ItZik Ben-Gan、Lubor Kollar、Dejan Sarka所著的《Sql Server 2005 技術(shù)內(nèi)幕:T-SQL查詢》的一段話足以說明:

      (8)select(9)distinct(11) (1)from(3) join (2)on (4)where (5)group by (6)with {cube|rollup}(7)having(having_condition)(10)order by 從這個順序可以看出,所有的查詢語句都是從from開始執(zhí)行的。在執(zhí)行過程中,每個步驟都會為下一個步驟生成一個虛擬表,這個虛擬表將作為下一個執(zhí)行步驟的基礎(chǔ)。第一步:from 首先對from子句中的前兩個表執(zhí)行一個笛卡爾乘積,此時生成虛擬表vt1.第二步:on 接下來便是應用on篩選器,on 中的邏輯表達式將應用到 vt1 中的各個行,篩選出滿足on邏輯表達式的行,生成虛擬表 vt2.第三步:join 如果是outer join 那么這一步就將添加外部行,left outer jion 就把左表在第二步中過濾的添加進來,如果是right outer join 那么就將右表在第二步中過濾掉的行添加進來,這樣生成虛擬表 vt3.第四步:多表

      如果 from 子句中的表數(shù)目多余兩個表,那么就將vt3和第三個表連接從而計算笛卡爾乘積,生成虛擬表,該過程就是一個重復1-3的步驟,最終得到一個新的虛擬表 vt3.第五步:where 應用where篩選器,對上一步生產(chǎn)的虛擬表引用where篩選器,生成虛擬表vt4,在這有個比較重要的細節(jié)不得不說一下,對于包含outer join子句的查詢,就有一個讓人感到困惑的問題,到底在on篩選器還是用where篩選器指定邏輯表達式呢?on和where的最大區(qū)別在于,如果在on應用邏輯表達式那么在第三步outer join中還可以把移除的行再次添加回來,而where的移除的最終的。第六步:group by 分組,生成虛擬表 vt4 第七步:having 對vt4應用having篩選器,生成虛擬表 vt5 第八步:select 處理select 列表,生成虛擬表vt6 第九步:distinct 將vt6 中重復的行去掉,生成虛擬表vt7 第十步:order by 將vt7中的行按order by 子句中的列列表排序,生成一個游標vc8 第十一步: top 從vc8的開始處選擇指定數(shù)量或比例的行,生成虛擬表vt9,并返回給調(diào)用者 三.SQL語句擴展

      1.select 1.1 選擇性插入語句

      1.1.1 Insert into table1(field1)Select field2 from table2 要求table1必須存在。

      1.1.2 select field1 into table1 from table2 要求table1不存在,在運行時會自動創(chuàng)建表名為table1,字段名為field1的一個表。1.2打開其它數(shù)據(jù)源

      /* OracleSvr為鏈接服務(wù)器名,本示例假定已經(jīng)創(chuàng)建了一個名為 ORCLDB 的 Oracle 數(shù)據(jù)庫別名。*/ EXEC sp_addlinkedserver 'OracleSvr',--鏈接服務(wù)器名OracleSvr,sysname類型

      'MSDAORA',--provider_name數(shù)據(jù)源提供程序,此處為oracle 'ORCLDB'--數(shù)據(jù)源名稱 GO Select * from OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles')如果有多個sql server實例:

      SELECT *FROM [servernameinstancename.]pubs.dbo.authors.注意:一個對象的完整名稱包括四個標識符:服務(wù)器名稱、數(shù)據(jù)庫名稱、所有者名稱和對象名稱。其格式如下: [ [ [ server.] [ database ].] [ owner_name ].] object_name 中間的名稱可以省略,但是.不可以省略。如:server…object_name 2.update 2.1多表更新

      Update table1 set table1.field 1=table2.field2 from table1,table2 /*猜測下連接方式全聯(lián)接 FULL [OUTER] JOIN */ where table1.field3= table2.filed3 知識:SQL Server的update語句中from后可跟多個表,Oracle則不支持該用法 Oracle 中:Update table1 set table1.field1=(select table2.field2 from table2 where.field3= table2.filed3)3.insert 3.1 插入語句的規(guī)范問題

      在sql server 2000,sql server 2005中

      標準語句:insert into table(field)values(value)提示:在access中不正確,原因sql語句不規(guī)范,因此在書寫sql語句的過程中一定要按正規(guī)的語法來寫。

      4.delete 4.1標準刪除

      標準語句:delete from table where condition 提示:同insert 4.2其它刪除 4.2.1 truncate 語法:truncate table table_name 刪除表中所有行,不記錄單個行刪除操作,不記錄日志,,所有速度比Delete快。4.2.2 drop

      語句: Drop table table_name 刪除表及相關(guān),有fk約束的不能刪,先去年fk;系統(tǒng)表不能使用。

      5.order by 功能:排序

      技巧:order by newid()隨機排序

      四.動態(tài)SQL語句

      4.1基本原則

      4.1.1預編譯問題

      在EXECUTE執(zhí)行之前,數(shù)據(jù)庫不會編譯 EXECUTE 語句內(nèi)的語句,動態(tài)SQL語句就是放到存儲過程中,它也不會預先編譯。

      4.1.2什么時候使用動態(tài)SQL語句

      字段名,表名,數(shù)據(jù)庫名作為變量時,必須用動態(tài)SQl語句

      4.2.exec[ute] 4.2.1語法

      exec(?select * from table_name where name=???+@name+????)--括號不能少 4.2.2傳遞參數(shù)

      --假設(shè)存儲過程test_sp中需要一個參數(shù):類型nvarchar(50)名稱 @parm Declare @parms nvarchar(50)Set @parms=?測試變量?

      Exec test_sp [@parm=]@parms –方括號內(nèi)的可以省略 如果是批處理中的第一句,則可以省略Exec 4.2.3輸出參數(shù)

      declare @num int, @field int, @sqls nvarchar(4000)Set @field=1 set @sqls='select @a=count(*)from table_name where field=@field' exec sp_executesql @sqls,N'@a int output,@field int',@num output ,@field select @num 4.3.sp_executesql 語法:exec[ute] sp_executesql N?select * from table_name where field=@field?,N?@field int?,@field=1 使用sp_exexutesql比使用exec更有效率.

      第三篇:sql語句學習

      一、選擇題

      1、SQL語言是()語言?!⊿QL特點)(易)

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

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

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

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

      答案:C

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

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

      答案:B C A

      6-7-8-9-

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

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

      A)SELECTB)DROPC)UPDATED)ALTERE)DELETE

      答案:A D C B E

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

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

      S(DWH,DWM)

      T(BH,XM,XB,DWH)

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

      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è)有如下三個關(guān)系:——(易-易)

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

      B(B#,BNAME,PRICE):B#:商品號;BNAME:商品名稱;

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

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

      1)找出店員人數(shù)不超過100人或者在長沙市的所有商店的代號和商店名;

      2)找出供應書包的商店名;

      解:

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

      SELECT A#,ANAME FROM A WHERE WQTY<=100 OR CITY=’長沙’;

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

      SELECT ANAME FROM A,B,AB

      WHERE BNAME=’書包’ 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為職稱,DEPART為系別

      course(CNO, CNAME, TNO)

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

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

      (1)查詢至少有2名男生的班號;——(難)

      (2)查詢不姓“王”的同學記錄;——(易)

      (3)查詢每個學生的姓名和年齡;——(難)

      (4)查詢學生中最大和最小的birthday日期值;——(中)

      (5)查詢學生表的全部記錄并按班號和年齡從大到小的順序;——(中)

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

      (7)查詢最高分同學的學號,課程號和成績;——(中)

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

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

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

      (11)查詢“計算機系”教師所教課程的成績表;——(難)

      (12)查詢選修“3-105”課程的成績高于“109”號同學成績的所有同學的記錄;——(難)

      (13)查詢最低分大于70,最高分小于90的學生的學號;——(中)

      (14)查詢成績在60到80之間的所有記錄;——(中)

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

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

      (17)查詢“計算機系”和“無線電系”不同職稱的教師的姓名和職稱;——(中)

      解:(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=‘數(shù)據(jù)庫系統(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=’計算機系’ 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=’計算機系’ OR depart=’無線電系’

      order by prof;

      4、設(shè)有圖書登記表TS,具有屬性:BNO(圖書編號),BC(圖書類別),BNA(書名),AU(著者),PUB(出版社)。按下列要求用SQL語言進行設(shè)計?!ㄒ祝?/p>

      1)按圖書館編號BNO建立TS表的索引ITS;

      2)查詢按出版社統(tǒng)計其出版圖書總數(shù)。

      3)刪除索引。

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

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

      3)DROP INDEXITS;

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

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

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

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

      2)對視圖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è)有學生表S(SNO, SN)(SNO為學生號,SN為姓名)和學生選修課程表SC(SNO,CNO,CN,G)

      (CNO為課程號,CN為課程名,G為成績),試用SQL語言完成以下各題:——(易)

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

      b)從視圖V-SSC上查詢平均成績在90分以上的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表示供應商,SN為供應商號,SNAME為供應商名字,CITY

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

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

      程所在城市;

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

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

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

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

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

      (4)取出為工程J1提供零件的供應商代號;——(易)

      (5)取出為工程J1提供零件P1的供應商代號;——(易)

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

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

      (8)取出為工程J1或J2提供零件的供應商代號;——(中)

      (9)取出為工程J1提供紅色零件的供應商代號;——(易)

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

      (11)取出為所在城市為上?;虮本┑墓こ烫峁┘t色零件的供應商代號;——(中)

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

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

      (14)取出至少有一個和工程不在同一城市的供應商提供零件的工程代號;——(難)

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

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

      ——(難)

      (17)取出由供應商S1提供零件的工程的代號;——(易)

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

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

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

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

      (20)重復(19)題,但不檢索兩個CITY值相同的三元組?!y)

      解:

      (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=‘上?!疉ND 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)系模式:——(中)

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

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

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

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

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

      (1)查詢“工業(yè)出版社”出版的圖書名

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

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

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

      (5)刪去“工業(yè)出版社”出版的所有圖書及相關(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必看

      sql學習心得:SQL SERVER 2005

      sql學習心得:SQL SERVER 2005學習心得

      一、數(shù)據(jù)庫設(shè)計方面

      1、字段類型。

      varchar(max)nvarchar(max)類型的引入大大的提高了編程的效率,可以使用字符串函數(shù)對CLOB類型進行操

      作,這是一個亮點。但是這就引發(fā)了對varchar和char效率討論的老問題。到底如何分配varchar的數(shù)據(jù),是否

      會出現(xiàn)大規(guī)模的碎片?是否碎片會引發(fā)效率問題?這都是需要進一步探討的東西。varbinary(max)代替image也讓SQL Server的字段類型更加簡潔統(tǒng)一。

      XML字段類型更好的解決了XML數(shù)據(jù)的操作。XQuery確實不錯,但是個人對其沒好感。(CSDN的開發(fā)者應

      該是相當?shù)氖炝耍。?/p>

      2、外鍵的級聯(lián)更能擴展

      可能大部分的同行在設(shè)計OLTP系統(tǒng)的時候都不愿意建立外鍵,都是通過程序來控制父子數(shù)據(jù)的完整性。但是

      再開發(fā)調(diào)試階段和OLAP環(huán)境中,外鍵是可以建立的。新版本中加入了SET NULL 和 SET DEFAULT 屬性,能夠

      提供能好的級聯(lián)設(shè)置。

      3、索引附加字段

      這是一個不錯的新特性。雖然索引的附加字段沒有索引鍵值效率高,但是相對映射到數(shù)據(jù)表中效率還是提高了

      很多。我做過試驗,在我的實驗環(huán)境中會比映射到表中提高30%左右的效率。

      4、計算字段的持久化

      原來的計算字段其實和虛擬字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了計算

      字段的持久化,這就提高了查詢的性能,但是會加重insert和update的負擔。OLTP慎用。OLAP可以大規(guī)模使

      用。

      5、分區(qū)表

      分區(qū)表是個亮點!從分區(qū)表也能看出微軟要做大作強SQL Server的信心。資料很多,這里不詳細說。但是重點

      了解的是:現(xiàn)在的SQL Server2005的表,都是默認為分區(qū)表的。因為它要支持滑動窗口的這個特性。這種特性

      對歷史數(shù)據(jù)和實時數(shù)據(jù)的處理是很有幫助的。

      但是需要注意的一點,也是我使用過程中發(fā)現(xiàn)的一個問題。在建立

      function->schema->table后,如果在現(xiàn)有的分區(qū)表上建立沒有顯式聲明的聚集索引時,分區(qū)表會自動變?yōu)榉欠謪^(qū)表。這一點很讓我納悶。如果你覺得我的非分區(qū)索引無法對起子分區(qū),你可以提醒我一下呀!沒有任何的提醒,直接就變成了非分區(qū)表。不知道這算不算一個bug。

      大家也可以試試。

      分區(qū)表效率問題肯定是大家關(guān)心的問題。在我的試驗中,如果按照分區(qū)字段進行的查詢(過濾)效率會高于未

      分區(qū)表的相同語句。但是如果按照非分區(qū)字段進行查詢,效率會低于未分區(qū)表的相同語句。但是隨著數(shù)據(jù)量的增大,這種成本差距會逐漸減小,趨于相等。(500萬數(shù)量級只相差10%左右)

      6、CLR類型

      微軟對CLR作了大篇幅的宣傳,這是因為數(shù)據(jù)庫產(chǎn)品終于融入.net體系中。最開始我們也是狂喜,感覺對象數(shù)

      據(jù)庫的一些概念可以實現(xiàn)了。但是作了些試驗,發(fā)現(xiàn)使用CLR的存儲過程或函數(shù)在達到一定的閥值的時候,系

      統(tǒng)性能會呈指數(shù)級下滑!這是非常危險的!只使用幾個可能沒有問題,當一旦大規(guī)模使用會造成嚴重的系統(tǒng)性

      能問題!

      其實可以做一下類比,Oracle等數(shù)據(jù)庫產(chǎn)品老早就支持了java編程,而且提供了java池參數(shù)作為用戶配置接口

      。但是現(xiàn)在有哪些系統(tǒng)大批使用了java存儲過程?!連Oracle自己的應用都不用為什么?!還不是性能有問題

      !否則面向?qū)ο蟮臄?shù)據(jù)庫早就實現(xiàn)了!

      建議使用CLR的地方一般是和應用的復雜程度或操作系統(tǒng)環(huán)境有很高的耦合度的場景。如你想構(gòu)建復雜的算法,并且用到了大量的指針和高級數(shù)據(jù)模型?;蛘呤且筒僮飨到y(tǒng)進行Socket通訊的場景。否則建議慎重!

      7、索引視圖

      索引視圖2k就有。但是2005對其效率作了一些改進但是schema.viewname的作用域真是太限制了它的應用面

      。還有一大堆的環(huán)境參數(shù)和種種限制都讓人對它有點卻步。

      8、語句和事務(wù)快照

      語句級快照和事務(wù)級快照終于為SQL Server的并發(fā)性能帶來了突破。個人感覺語句級快照大家應該應用。事務(wù)

      級快照,如果是高并發(fā)系統(tǒng)還要慎用。如果一個用戶總是被提示修改不成功要求重試時,會殺人的!

      9、數(shù)據(jù)庫快照

      原理很簡單,對要求長時間計算某一時間點的報表生成和防用戶操作錯誤很有幫助。但是比起Oracle10g的閃

      回技術(shù)還是細粒度不夠??上?!

      10、Mirror

      Mirror可以算是SQL Server的Data guard了。但是能不能被大伙用起來就不知道了。

      二、開發(fā)方面

      1、Ranking函數(shù)集

      其中最有名的應該是row_number了。這個終于解決了用臨時表生成序列號的歷史,而且SQL Server2005的row_number比Oracle的更先進。因為它把Order by集成到了一起,不用像Oracle那樣還要用子查詢進行封裝

      。但是大家注意一點。如下面的例子:

      select ROW_NUMBER()OVER(order by aa)

      from tbl

      order by bb

      會先執(zhí)行aa的排序,然后再進行bb的排序。

      可能有的朋友會抱怨集成的order by,其實如果使用ranking函數(shù),Order by是少不了的。如果擔心Order

      by會影響效率,可以為order by的字段建立聚集索引,查詢計劃會忽略order by 操作(因為本來就是排序的嘛)。

      2、top

      可以動態(tài)傳入?yún)?shù),省卻了動態(tài)SQL的拼寫。

      3、Apply

      對遞歸類的樹遍歷很有幫助。

      4、CTE

      個人感覺這個真是太棒了!閱讀清晰,非常有時代感。

      5、try/catch

      代替了原來VB式的錯誤判斷。比Oracle高級不少。

      6、pivot/unpivot

      個人感覺沒有case直觀。而且默認的第三字段(還可能更多)作為group by字段很容易造成新手的錯誤。

      三、DBA管理方面

      1、數(shù)據(jù)庫級觸發(fā)器

      記得在最開始使用2k的時候就要用到這個功能,可惜2k沒有,現(xiàn)在有了作解決方案的朋友會很高興吧。

      2、多加的系統(tǒng)視圖和實時系統(tǒng)信息

      這些東西對DBA挑優(yōu)非常有幫助,但是感覺粒度還是不太細。

      3、優(yōu)化器的改進

      一直以來個人感覺SQL Server的優(yōu)化器要比Oracle的聰明。SQL2005的更是比2k聰明了不少。(有次作試驗

      發(fā)現(xiàn)有的語句在200萬級時還比50萬級的相同語句要快show_text的一些提示沒有找到解釋。一直在奇怪。)

      4、profiler的新事件觀察

      這一點很好的加強了profiler的功能。但是提到profiler提醒大家注意一點。windows2003要安裝sp1補丁才能

      啟動profiler。否則點擊沒有反應。

      5、sqlcmd

      習慣敲命令行的朋友可能會爽一些。但是功能有限。適合機器跑不動SQL Server Management Studio的朋友

      使用。

      四、遺憾

      1、登陸的控制

      始終遺憾SQL Server的登陸無法分配CPU/內(nèi)存占用等指標數(shù)。如果你的SQL Server給別人分配了一個只可以

      讀幾個表的權(quán)限,而這個家伙瘋狂的死循環(huán)進行連接查詢,會給你的系統(tǒng)帶來很大的負擔。而SQL Server如果

      能像Oracle一樣可以為登陸分配如:5%的cpu,10%的內(nèi)存。就可以解決這個漏洞。

      2、數(shù)據(jù)庫物理框架沒有變動

      undo和redo都放在數(shù)據(jù)庫得transaction中,個人感覺是個敗筆。如果說我們在設(shè)計數(shù)據(jù)庫的時候考慮分多個

      數(shù)據(jù)庫,可能能在一定程度上避免I/O效率問題。但是同樣會為索引視圖等應用帶來麻煩。看看行級和事務(wù)級的快照數(shù)據(jù)放在tempdb中,就能感覺到目前架構(gòu)的尷尬。

      3、還是沒有邏輯備份

      備份方面可能還是一個老大難的問題。不能單獨備份幾個表總是感覺不爽。靈活備份的問題不知道什么時候才

      能解決。

      4、SSIS(DTS)太復雜了

      SQL Server的異構(gòu)移植功能個人感覺最好了。(如果對比過SQL Server的鏈接服務(wù)器和Oracle的透明網(wǎng)關(guān)的朋友會發(fā)現(xiàn)SQL Server的sp_addlinkedserver(openquery)異構(gòu)數(shù)據(jù)庫系列比Oracle真是強太多了。)

      以前的DTS輕盈簡單。但是現(xiàn)在的SSIS雖然功能強大了很多,但是總是讓人感覺太麻煩。

      第五篇:sql語句學習_經(jīng)典_推薦

      sql語句學習

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

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

      eg.create database test;

      2)刪除數(shù)據(jù)庫: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ù)操縱語言(DML)

      1)查詢語句(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)插入語句(insert)

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

      3)刪除語句(delete)

      delete from table1 where 范圍;

      4)更新語句(update)

      update table1 set field1=value1 where 范圍;

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

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

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

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

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

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

      what:權(quán)限運用的級別。權(quán)限可以是全局的(適用于所有數(shù)據(jù)庫和所有表)、特定數(shù)據(jù)庫(適用于一個數(shù)據(jù)庫中的所有表)或特定表的??梢酝ㄟ^指定一個columns字句是權(quán)限是列特定的。

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

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

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

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

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

      函數(shù)。

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

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

      eg1.創(chuàng)建一個超級用戶test1

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

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

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

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

      revoke privileges(columns)ON what FROM user

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

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

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

      用一條DELETE語句明確從user表中刪除用戶記錄:

      #mysql-u root mysql

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

      FLUSH PRIVILEGES;

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

      eg.刪除用戶test1

      revoke all on *.* from;

      use mysql;

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

      3)提交語句(commit)

      4)回滾語句(rollback)

      下載SQL學習基礎(chǔ)篇word格式文檔
      下載SQL學習基礎(chǔ)篇.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


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

      相關(guān)范文推薦

        sql語言學習

        SQL語言學習 --語 句功 能 --數(shù)據(jù)操作 SELECT--從數(shù)據(jù)庫表中檢索數(shù)據(jù)行和列 INSERT--向數(shù)據(jù)庫表添加新數(shù)據(jù)行 DELETE--從數(shù)據(jù)庫表中刪除數(shù)據(jù)行 UPDATE--更新數(shù)據(jù)庫表中的數(shù)......

        sql學習步驟

        學習總結(jié) 第一講 1. 什么是數(shù)據(jù)庫,數(shù)據(jù)庫的作用! 2. 現(xiàn)流行的數(shù)據(jù)庫的種類,特點 3. sql2005的版本、特點,硬件要求 4. 數(shù)據(jù)庫的安裝(在安裝過程中介紹數(shù)據(jù)庫的插件,登錄方式,實例) 5......

        SQL學習總結(jié)

        上個星期,自主學習了SQL Server ,基本了解了SQL Server的語法知識和結(jié)構(gòu),對SQL 有了一定的認識,現(xiàn)在我就對我這一星期對SQl的 學習做一個總結(jié): 為了永久性的集中存放數(shù)據(jù),并且還......

        SQL基礎(chǔ)數(shù)據(jù)庫語法(5篇材料)

        一、 表空間操作 1. 創(chuàng)建表空間 Create tablespace xxx(表名) Datafile ’x:xxxxxx.dbf(文件地址)’ Size 10m(文件大小) autoexdend on; 2. 刪除表空間 Droptablespacexxx(表空......

        VB數(shù)據(jù)庫SQL語句學習(精選多篇)

        1.Select * from student查詢所有原始記錄 2. Select StudentID, StudentName from student 只查詢學號和姓名 3. Select StudentID as 學號, StudentName as 姓名, Sex as......

        Oracle 10g學習筆記(三)——SQL語言基礎(chǔ)1

        content: SQL語言概述、分類 各種語言常見語句寫法 常用查詢語句的使用 常用系統(tǒng)函數(shù)及其應用 分組語句 模糊查詢 表的連接 子查詢 結(jié)構(gòu)化查詢語言是學好任何一個關(guān)系型數(shù)據(jù)......

        SQL語言學習工作總結(jié)

        以下是作者在學習SQL過程中,以工作總結(jié)方式寫下點滴的感悟,敬請關(guān)注!暑假過的真快總感覺昨天才剛放假,還想著這個暑假怎么過時,暑假就已經(jīng)去了。這個暑假一開始我們看了浙大的sql......

        常見sql語句(精選多篇)

        結(jié)構(gòu)化查詢語句 1.簡單查詢 1.1Select語句基本應用 1.1.1查詢所有記錄 Select * from tab_name 1.1.2查詢指定字段的記錄 Select field1,field2,….from tab_name 1.1.3帶表......