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

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

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

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

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

      SQL語言習(xí)題及答案范文大全

      時間:2019-05-15 02:27:15下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《SQL語言習(xí)題及答案》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《SQL語言習(xí)題及答案》。

      第一篇:SQL語言習(xí)題及答案

      數(shù)據(jù)庫原理之關(guān)系數(shù)據(jù)庫SQL語言課后習(xí)題及答案

      http://004km.cnAME,TEACHER)

      試用SQL的查詢語句表達(dá)下列查詢:

      (1)檢索LIU老師所授課程的課程號和課程名。

      SELECT C#,CNAME

      FROM C

      WHERE TEACHER=?LIU?

      (2)檢索年齡大于23歲的男學(xué)生的學(xué)號和姓名。

      SELECT S#,SNAME

      FROM S

      WHERE(AGE>23)AND(SEX=?M?)

      (3)檢索至少選修LIU老師所授課程中一門課程的女學(xué)生姓名。

      SELECT SNAME

      FROM S

      WHERE SEX=?F? AND S# IN

      (SELECT S#

      FROM SC

      WHERE C# IN

      (SELECT C#

      FROM C

      WHERE TEACHER=?LIU?)

      NOTICE:有多種寫法,比如聯(lián)接查詢寫法:

      SELECT SNAME

      FROM S,SC,C

      WHERE SEX=?F? AND SC.S#=S.S#

      AND SC.C#=C.C#

      AND TEACHER='LIU' 但上一種寫法更好一些。

      (4)檢索WANG同學(xué)不學(xué)的課程的課程號。

      SELECT C#

      FROM C

      WHERE C# NOT IN

      (SELECT C#

      FROM SC

      WHERE S# IN

      (SELECT S#

      FROM S

      WHERE SNAME='WANG'))

      (5)檢索至少選修兩門課程的學(xué)生學(xué)號。

      SELECT DISTINCT X.SNO

      FROM SC X,SC Y

      WHERE X.SNO=Y.SNO AND X.CNO<>Y.CNO Notice:對表SC進(jìn)行自連接,X,Y是SC的兩個別名。

      (6)檢索全部學(xué)生都選修的課程的課程號與課程名。

      SELECT C#,CNAME

      FROM C

      WHERE NOT EXISTS

      (SELECT *

      FROM S

      WHERE S# NOT IN

      (SELECT *

      FROM SC

      WHERE SC.C#=C.C#))

      要從語義上分解:(1)選擇課程的課程號與課程名,不存在不選這門課的同學(xué)。

      其中,“不選這門課的同學(xué)”可以表示為:

      或者

      SELECT *

      FROM S

      WHERE NOT EXISTS

      (SELECT *

      FROM SC

      WHERE S.S#=C.S#

      AND SC.C#=C.C#)

      SELECT *

      FROM S

      WHERE S# NOT IN

      (SELECT *

      FROM SC

      WHERE SC.C#=C.C#)

      (7)檢索選修課程包含LIU老師所授課的學(xué)生學(xué)號。

      SELECT DISTINCT S#

      FROM SC

      WHERE C# IN

      (SELECT C#

      FROM C

      WHERE TEACHER='LIU'))

      3.3 設(shè)有兩個基本表R(A,B,C)和S(D,E,F(xiàn)),試用SQL查詢語句表達(dá)下列關(guān)系代數(shù)表達(dá)式:

      (1)πA(R)

      (2)σB='17'(R)

      (3)R×S

      (4))πA,F(σC=D(R×S))

      (1)SELECT A FROM R

      (2)SELECT * FROM R WHERE B='17'(3)SELECT A,B,C,D,E,F FROM R,S

      (4)SELECT A,F FROM R,S WHERE R.C=S.D

      3.4 3.4 設(shè)有兩個基本表R(A,B,C)和S(A,B,C)試用SQL查詢語句表達(dá)下列關(guān)系代數(shù)表達(dá)式:

      (1)R∪S

      (2)R∩S

      (3)R-S

      (4)πA,B(R)πB,C(S)

      (1)SELECT A,B,C

      FROM R

      UNION

      SELECT A,B,C

      FROM S

      (2)SELECT A,B,C

      FROM R

      INTERSECT

      SELECT A,B,C

      FROM S

      (3)SELECT A,B,C

      FROM R

      WHERE NOT EXISTS

      (SELECT A,B,C

      FROM S

      WHERE R.A=S.A AND R.B=S.B AND R.C=S.C)

      (4)SELECT R.A,R.B,S.C

      FROM R,S

      WHERE R.B=S.B

      3.5 試敘述SQL語言的關(guān)系代數(shù)特點和元組演算特點。

      (P61-62)

      3.6 試用SQL查詢語句表達(dá)下列對教學(xué)數(shù)據(jù)庫中三個基本表S、SC、C的查詢:

      (1)統(tǒng)計有學(xué)生選修的課程門數(shù)。

      SELECT COUNT(DISTINCT C#)FROM SC

      (2)求選修C4課程的學(xué)生的平均年齡。

      SELECT AVG(AGE)

      FROM S

      WHERE S# IN

      (SELECT S#

      FROM SC

      WHERE C#='C4')或者,SELECT AVG(AGE)

      FROM S,SC

      WHERE S.S#=SC.S# AND C#='004'

      (3)求LIU老師所授課程的每門課程的學(xué)生平均成績。

      SELECT CNAME,AVG(GRADE)

      FROM SC ,C

      WHERE SC.C#=C.C# AND TEACHER='LIU'

      GROUP BY C#

      (4)統(tǒng)計每門課程的學(xué)生選修人數(shù)(超過10人的課程才統(tǒng)計)。要求輸出課程號和選修人數(shù),查詢結(jié)果按人數(shù)降序排列,若人數(shù)相同,按課程號升序排列。

      SELECT DISTINCT C#,COUNT(S#)

      FROM SC

      GROUP BY C#

      HAVING COUNT(S#)>10

      ORDER BY 2 DESC, C# ASC

      (5)檢索學(xué)號比WANG同學(xué)大,而年齡比他小的學(xué)生姓名。

      SELECT X.SNAME

      FROM S AS X, S AS Y

      WHERE Y.SNAME='WANG' AND X.S#>Y.S# AND X.AGE

      (6)檢索姓名以WANG打頭的所有學(xué)生的姓名和年齡。

      SELECT SNAME,AGE

      FROM S

      WHERE SNAME LIKE 'WANG%'

      (7)在SC中檢索成績?yōu)榭罩档膶W(xué)生學(xué)號和課程號。

      SELECT S#,C#

      FROM SC

      WHERE GRADE IS NULL

      (8)求年齡大于女同學(xué)平均年齡的男學(xué)生姓名和年齡。

      SELECT SNAME,AGE

      FROM S AS X

      WHERE X.SEX='男' AND X.AGE>(SELECT AVG(AGE)FROM S AS Y WHERE Y.SEX='女')

      (9)求年齡大于所有女同學(xué)年齡的男學(xué)生姓名和年齡。

      SELECT SNAME,AGE

      FROM S AS X

      WHERE X.SEX='男' AND X.AGE>ALL(SELECT AGE FROM S AS Y WHERE Y.SEX='女')

      3.7 試用SQL更新語句表達(dá)對教學(xué)數(shù)據(jù)庫中三個基本表S、SC、C的各個更新操作:

      (1)往基本表S中插入一個學(xué)生元組(?S9?,?WU?,18)。

      INSERT INTO S(S#,SNAME,AGE)VALUES('59','WU',18)

      (2)在基本表S中檢索每一門課程成績都大于等于80分的學(xué)生學(xué)號、姓名和性別,并把檢索到的值送往另一個已存在的基本表STUDENT(S#,SANME,SEX)。

      INSERT INTO STUDENT(S#,SNAME,SEX)

      SELECT S#,SNAME,SEX

      FROM S WHERE NOT EXISTS

      (SELECT * FROM SC WHERE

      GRADE<80 AND S.S#=SC.S#)

      (3)在基本表SC中刪除尚無成績的選課元組。

      DELETE FROM SC

      WHERE GRADE IS NULL

      (4)把WANG同學(xué)的學(xué)習(xí)選課和成績?nèi)縿h去。

      DELETE FROM SC

      WHERE S# IN

      (SELECT S#

      FROM S

      WHERE SNAME='WANG')

      (5)把選修MATHS課不及格的成績?nèi)臑榭罩怠?/p>

      UPDATE SC

      SET GRADE=NULL

      WHERE GRADE<60 AND C# IN

      (SELECT C#

      FROM C

      WHERE CNAME='MATHS')(6)把低于總平均成績的女同學(xué)成績提高5%。

      UPDATE SC

      SET GRADE=GRADE*1.05

      WHERE GRADE<(SELECT AVG(GRADE)FROM SC)AND S# IN(SELECT S# FROM S WHERE SEX='F')

      (7)在基本表SC中修改C4課程的成績,若成績小于等于75分時提高5%,若成績大于75分時提高4%(用兩個UPDATE語句實現(xiàn))。

      UPDATE SC

      SET GRADE=GRADE*1.05

      WHERE C#='C4' AND GRADE<=75

      UPDATE SC

      SET GRADE=GRADE*1.04

      WHERE C#='C4' AND GRADE>75

      3.8 在第1章例1.4中提到“倉庫管理”關(guān)系模型有五個關(guān)系模式:

      零件 PART(P#,PNAME,COLOR,WEIGHT)

      項目 PROJECT(J#,JNAME,DATE)

      供應(yīng)商 SUPPLIER(S#,SNAME,SADDR)

      供應(yīng) P_P(J#,P#,TOTOAL)

      采購 P_S(P#,S#,QUANTITY)

      (1)試用SQL DDL語句定義上述五個基本表,并說明主鍵和外鍵。

      CREATE TABLE PART

      (P# CHAR(4)NOT NULL,PNAME CHAR(12)NOT NULL,COLOR CHAR(10),WEIGHT REAL,PRIMARY KEY(P#))

      CREATE TABLE PROJECT

      (J# CHAR(4)NOT NULL,JNAME CHAR(12)NOT NULL,DATE DATE,PRIMARY KEY(J#))

      CREATE TABLE SUPLIER

      (S# CHAR(4)NOT NULL,SNAME CHAR(12),SADDR VARCHAR(20),PRIMARY KEY(S#))

      CREATE TABLE P_P

      (J# CHAR(4),P# CHAR(4),TOTAL INTEGER,PRIMARY KEY(J#,P#),F(xiàn)OREIGN KEY(J#)REFERENCE PROJECT(J#),F(xiàn)OREIGN KEY(P#)REFERENCE PART(P#))

      CREATE TABLE P_S

      (P# CHAR(4),S# CHAR(4),QUANTITY INTEGER,PRIMARY KEY(P#,S#),F(xiàn)OREIGN KEY(P#)REFERENCE PART(P#),F(xiàn)OREIGN KEY(S#)REFERENCE SUPLIER(S#))

      (2)試將PROGECT、P_P、PART三個基本表的自然聯(lián)接定義為一個視圖VIEW1,PART、P_S、SUPPLIER 三個基本表的自然聯(lián)接定義為一個視圖VIEW2。

      CREATE VIEW VIEW1(J#,JNAME,DATE,P#,PNAME,COLOR,WEIGHT,TOTAL)

      AS SELECT PROJECT.J#,JNAME,DATE,PART.P#,PNAME,COLOR,WEIGHT,TOTAL

      FROM PROJECT,PART,P_P

      WHERE PART.P#=P_P.P# AND P_P.J#=PROJECT.J

      #

      CREATE VIEW VIEW2(P#,PNAME,COLOR,WEIGHT,S#,SNAME,SADDR,QUANTITY)

      AS SELECT PART.P#,PNAME,COLOR,WEIGHT,SUPPLIER.S#,SNAME,SADDR,QUANTITY

      FROM PART,P_S,SUPPLIER

      WHERE PART.P#=P_S.P# AND P_S.S#=SUPPLIER.S#

      (3)試在上述兩個視圖的基礎(chǔ)上進(jìn)行數(shù)據(jù)查詢:

      1)檢索上海的供應(yīng)商所供應(yīng)的零件的編號和名字。

      SELECT P#,PNAME FROM VIEW2 WHERE SADDR='SHANGHAI'

      2)檢索項目J4所用零件的供應(yīng)商編號和名字。

      SELECT S#,SNAME FROM VIEW2 WHERE P# IN(SELECT P# FROM VIEW1 WHERE J#='J4')

      3.9 對于教學(xué)數(shù)據(jù)庫中基本表SC,已建立下列視圖:

      CREATE VIEW S_GRADE(S#,C_NUM,AVG_GRADE)

      AS SELECT S#,COUNT(C#),AVG(GRADE)

      FROM SC

      GROUP BY S#

      試判斷下列查詢和更新是否允許執(zhí)行。若允許,寫出轉(zhuǎn)換到基本表SC上的相應(yīng)操作。

      (1)SELECT *

      FROM S_GRADE

      允許

      SELECT S#,COUNT(C#),AVG(GRADE)FROM SC GROUP BY S#

      (2)SELECT S#,C_NUM

      FROM S_GRADE

      WHERE AVG_GRADE>80

      允許

      SELECT S#,COUNT(C#)FROM SC WHERE AVG(GRADE)>80

      (3)SELECT S#,AVG_GRADE

      FROM S_GRADE

      WHERE C_NUM>(SELECT C_NUM

      FROM S_GRADE

      WHERE S#=?S4?)

      允許

      SELECT S#,AVG(GRADE)

      FROM SC AS X

      WHERE COUNT(X.C#)>(SELECT COUNT(Y.C#)FROM SC AS Y WHERE Y.S#='S4')

      GROUP BY S#

      (4)UPDATE S_GRADE

      SET C_NUM=C_NUM+1

      WHERE S#=?S4?

      不允許

      (5)DELETE FROM S_GRADE

      WHERE C_NUM>

      4不允許

      3.10 預(yù)處理方式對于嵌入式SQL的實現(xiàn)有什么重要意義? 預(yù)處理方式是先用預(yù)處理程序?qū)υ闯绦蜻M(jìn)行掃描,識別出SQL語句,并處理成宿主語言的函數(shù)調(diào)用形式; 然后再用宿主語言的編譯程序把源程序編譯成目標(biāo)程序。這樣,不用擴(kuò)充宿主語言的編譯程序,就能處理SQL語句。

      3.11 在宿主語言的程序中使用SQL語句有哪些規(guī)定?

      在宿主語言的程序中使用SLQ語句有以下規(guī)定:

      (1)在程序中要區(qū)分SQL語句與宿主語言語句

      (2)允許嵌入的SQL語句引用宿主語言的程序變量(稱為共享變量),但有兩條規(guī)定:

      1)引用時,這些變量前必須加“:”作為前綴標(biāo)識,以示與數(shù)據(jù)庫中變量有區(qū)別。

      2)這些變量由宿主語言的程序定義,并用SQL的DECLARE語句說明。

      (3)SQL的集合處理方式與宿主語言單記錄處理方式之間要協(xié)調(diào)。需要采用游標(biāo)機(jī)制,把集合操作轉(zhuǎn)換成單記錄處理方式。

      3.12 SQL的集合處理方式與宿主語言單記錄處理方式之間如何協(xié)調(diào)?

      由于SQL語句處理的是記錄集合,而宿主語言語句一次只能處理一個記錄,因此需要用游標(biāo)(cousor)機(jī)制,把集合操作轉(zhuǎn)換成單記錄處理方式。

      2.13 嵌入式SQL語句何時不必涉及到游標(biāo)?何時必須涉及到游標(biāo)?

      (1)INSERT、DELETE、UPDATE語句,查詢結(jié)果肯定是單元組時的SELECT語句,都可直接嵌入在主程序中使用,不必涉及到游標(biāo)。

      (2)當(dāng)SELECT語句查詢結(jié)果是多個元組時,此時宿主語言程序無法使用,一定要用游標(biāo)機(jī)制把多個元組一次一個地傳送給宿主語言處理。

      第二篇:數(shù)據(jù)庫 sql習(xí)題及答案

      /*

      Question 1:Find the titles of all movies directed by Steven Spielberg.select title from movie where director='Steven Spielberg'

      Question 2:Find all years that have a movie that received a rating of 4 or 5, and sort them in increasing order.select distinct year from movie,rating where movie.mid=rating.mid and stars in(4,5)order by year

      Question 3:Find the titles of all movies that have no ratings

      select title from movie where mID in

      (select mid from Movie except

      select mid from rating)

      select title from movie except

      select title from movie,rating where movie.mid=rating.mid

      Question 4:Some reviewers didn't provide a date with their rating.Find the names of all reviewers who have ratings with a NULL value for the date.select name from reviewer,rating where reviewer.rid=rating.rid and ratingdate is null

      Question 5:Write a query to return the ratings data in a more readable format: reviewer name, movie title, stars, and ratingDate.Also, sort the data, first by reviewer name, then by movie title, and lastly by number of stars.select name,title,stars,ratingdate from movie,rating,reviewer where movie.mid=rating.mid and reviewer.rid=rating.rid order by name,title,stars

      Question 6:For all cases where the same reviewer rated the same movie twice and gave it a higher rating the second time, return the reviewer's name and the title of the movie.select name,title

      from rating as F,Rating as S,Movie,Reviewer where F.rID=S.rID and F.mID=S.mID and F.stars

      and F.ratingDate

      select name,title from movie,reviewer,(select r1.rid,r1.mid from rating as r1,rating as r2 where r1.rid=r2.rid and r1.mid=r2.mid and r1.ratingdate>r2.ratingdate and r1.stars>r2.stars)as r

      where movie.mid=r.mid and reviewer.rid=r.rid

      Question 7:For each movie, find the highest number of stars that movie received as a rating.Return the movie title and number of stars.Sort by movie title.select title,MAX(stars)as max_star from rating,Movie

      where Rating.mID=Movie.mID group by title order by title

      select title,maxrating from movie,(select mid,max(stars)as maxrating from rating group by mid)as r where movie.mid=r.mid order by title

      Question 8:For each movie, return the title and the ‘rating spread(范圍)', that is, the difference between highest and lowest ratings given to that movie.Sort by rating spread from highest to lowest, then by movie title.select title,MAX(stars)-MIN(stars)as rating_spread from rating,Movie

      where Rating.mID=Movie.mID group by title

      order by rating_spread desc,title

      select title,spread as “rating spread”

      from movie,(select mid,max(stars)-min(stars)as spread from rating group by mid)as r where movie.mid=r.mid order by spread desc,title

      Question 9:Find the difference between the average rating of movies released before 1980 and the average rating of movies released after 1980.(Make sure to calculate the average rating for each movie, then the average of those averages for movies before 1980 and movies after.Don't just calculate the overall average rating before and after 1980.)

      select F.avg_star-S.avg_star from,(select AVG(avg_star)as avg_star from(select Rating.mID,AVG(stars)as avg_star

      from Rating left join Movie on Rating.mID=Movie.mID where year>=1980 group by Rating.mID)as S(select AVG(avg_star)as avg_star from(select Rating.mID,AVG(stars)as avg_star

      from Rating left join Movie on Rating.mID=Movie.mID where year<1980 group by Rating.mID)as F)as F)as S

      select r1979.avgm-r1980.avgm from

      ,Question 10:Add the reviewer Roger Ebert to your database, with an rID of 209.insert into Reviewer values(209,'Roger Ebert')

      Question 11:

      Insert 5-star ratings by James Cameron for all movies in the database.Leave the review date as NULL.insert into Rating(rID,mID,stars)select rid,mID,5 as stras from movie,(select rid from Reviewer where name='James Cameron')as T

      insert into rating(rid,mid,stars)select rid,mid,5 from reviewer,movie where name='James Cameron'

      Question 12:For all movies that have an average rating of 4 stars or higher, add 25 to the release year.(Update the existing tuples;don't insert new tuples.)

      update Movie set year=year+25(select sum(avgrating)/count(*)as avgM from

      (select avg(stars)as avgrating from rating,movie where movie.mid=rating.mid and year>=1980 group by movie.mid)(select sum(avgrating)/count(*)as avgM from

      (select avg(stars)as avgrating from rating,movie where movie.mid=rating.mid and year<1980 group by movie.mid)

      as r)

      as r1979

      as r)

      as r1980 where mID in

      (select mID from Rating group by mID having AVG(stars)>=4)

      */

      第三篇:sql語言

      11.2.2 數(shù)據(jù)定義命令

      1.CreateTable命令

      Create Table <表名>(<列名1><數(shù)據(jù)類型1>[<列級完整性約束1>][,<列名2>] <數(shù)據(jù)類型2>[<列級完整性約束2>][,……][,<列名n>] <數(shù)據(jù)類型n>[<列級完整性約束n>][<表級完整性約束n>]); 語句功能:創(chuàng)建一個以<表名>為名的、以指定的列屬性定義的表結(jié)構(gòu)。

      2.Alter Table命令

      Alter Table<表名>

      [ ADD <新列名> <數(shù)據(jù)類型> [ 完整性約束 ] ]

      [ DROP <完整性約束名> ]

      [ MODIFY <列名> <數(shù)據(jù)類型> ];

      語句功能:修改以<表名>為名的表結(jié)構(gòu)。

      3.Drop命令

      Drop Table <表名>

      語句功能:刪除以<表名>為名的表。

      11.2.3 數(shù)據(jù)查詢命令 SELECT

      語法形式為:

      SELECT [ALL|DISTINCT] 目標(biāo)列FROM 表(或查詢)

      [WHERE 條件表達(dá)式]

      [GROUP BY 列名1 HAVING 過濾表達(dá)式]

      [ORDER BY 列名2[ASC|DESC]]

      功能

      根據(jù)WHERE子句中的表達(dá)式,從指定的表或視圖中找出滿足條件的記錄,按目標(biāo)列顯示數(shù)據(jù)GROUP BY子句按列名1的值進(jìn)行分組,每一組產(chǎn)生一條記錄,HAVING短語對組進(jìn)行輸出過濾

      ORDER BY子句按列名2 對查詢結(jié)果的值進(jìn)行排序

      1.SELECT語句示例

      例11.1查詢所有學(xué)生的基本情況

      SELECT學(xué)號,姓名,性別,出生日期,專業(yè)

      FROM Student;

      例11.2查詢所有男生的信息記錄。

      SELECT *

      FROM student

      WHERE 性別=“男”;

      例11.1查詢所有的專業(yè),查詢結(jié)果中不出現(xiàn)重復(fù)的記錄。

      SELECT DISTINCT 專業(yè) FROM Student ;

      例11.4 查詢學(xué)生的人數(shù)和平均年齡

      SELECT Count(*)AS 人數(shù),Avg(Year(Date())-Year(出生年月))AS平均年齡 FROM Student ; 例85 查詢計算機(jī)專業(yè)學(xué)生的學(xué)號、姓名和專業(yè)

      SELECT 學(xué)號,姓名,專業(yè) FROM Student WHERE 專業(yè)=“計算機(jī)” ;

      例11.6顯示所有非計算機(jī)專業(yè)學(xué)生的學(xué)號、姓名和年齡

      SELECT 學(xué)號, 姓名, Year(Date())-Year(出生年月)AS 年齡

      FROM StudentWHERE 專業(yè)<>“計算機(jī)” ;

      例11.7 查詢1981年(包括1981年)以前出生的女生姓名和出生年月。

      SELECT 姓名,出生年月 FROM Student

      WHERE 出生年月 < #1/1/1982# AND 性別=“女” ;

      例11.8 查詢選修了1號課程的學(xué)生的學(xué)號及其成績,查詢結(jié)果按分?jǐn)?shù)降序排列。

      Select 學(xué)號,成績Fromsc

      Where課程號= “1”

      Order By 成績 DESC;

      例11.9查詢選修了2門(包括2門)以上課程的學(xué)生的學(xué)號和課程數(shù)

      SELECT 學(xué)號, Count(*)AS 課程數(shù) FROM Sc

      GROUP BY 學(xué)號HAVING Count(*)>=2 ;

      例11.10查詢所有課程的成績在70分以上的學(xué)生的學(xué)號

      SELECT 學(xué)號 FROM ScGROUP BY 學(xué)號

      HAVING Min(成績)>=70 ;

      例11.11 查詢所有學(xué)生的學(xué)號、姓名、課程和成績

      SELECT Student.學(xué)號,Student.姓名,Sc.課程, Sc.成績

      使用內(nèi)連接格式

      SELECT Student.學(xué)號,Student.姓名,Sc.課程,Sc.成績

      2.ORDER BY、GROUP BY、HAVING子句示例

      例11.12 對學(xué)生成績表,統(tǒng)計每人的平均分和課程數(shù),按學(xué)號遞減排序

      SELECT學(xué)號, COUNT(課程號)AS 課程數(shù), AVG(成績)AS平均成績

      FROM sc

      學(xué)號

      ORDER BY學(xué)號DESC;

      例11.13查詢選修了2門(包括2門)以上課程、最低成績在60分以上的學(xué)生的學(xué)號、課程數(shù)和最低分 SELECT 學(xué)號, Min(成績)AS 成績之Min, Count(課程)AS 課程之Count FROM ScGROUP BY Sc.學(xué)號

      HAVING(((Min(成績))>=60)AND((Count(課程))>2));

      3、多表連接查詢SELECT語句

      WHERE 條件,在兩表中有相同的屬性值

      例11.14 查詢所有學(xué)生的學(xué)號、姓名、課程和成績

      SELECT Student.學(xué)號,Student.姓名,Sc.課程, Sc.成績

      FROM Student,Sc WHERE Student.學(xué)號 = Sc.學(xué)號;

      4.嵌套查詢

      在SQL中,將一個SELECT語句查詢塊嵌套在另一個SELECT語句的WHERE子句或HAVING子句中稱為嵌套查詢

      例11.15 查詢沒有學(xué)過大學(xué)計算機(jī)基礎(chǔ)的學(xué)生的學(xué)號、姓名和專業(yè)

      SELECT Student.學(xué)號, Student.姓名, Student.專業(yè)

      FROM Student

      (SELECT Sc.學(xué)號

      FROM Sc

      WHERE Sc.課程=“大學(xué)計算機(jī)基礎(chǔ)”);

      嵌套查詢示例

      例11.16 查詢與“鄧倩梅”在同一個專業(yè)的學(xué)生的學(xué)號和姓名

      SELECT Student.學(xué)號, Student.姓名

      FROM Student

      WHERE

      FROM Student

      11.2.4SQL中的數(shù)據(jù)更新命令

      結(jié)構(gòu)化查詢語言SQL是操作關(guān)系數(shù)據(jù)庫的工業(yè)標(biāo)準(zhǔn)語言

      在SQL中,常用的語句有兩類:

      數(shù)據(jù)查詢語句 SELECT

      數(shù)據(jù)更新命令 INSERT、UPDATE、DELETE

      INSERT語句用于數(shù)據(jù)插入 其語法格式為:

      ? 插入一條記錄

      INSERT INTO 表名 [(字段1,…,字段n)] VALUES(值1,…,值n)

      ? 插入查詢的結(jié)果

      INSERT INTO 表名(字段1,…,字段n)VALUES 子查詢

      數(shù)據(jù)更新-INSERT語句實例

      例11.17向表Students中插入一條記錄

      Insert Into student(學(xué)號, 姓名, 出生日期,性別, 專業(yè))VALUES(“20031011”, “陳偉”,男“, ”化學(xué)“)

      注意:

      字符型常量用 單引號 或 雙引號 括起來

      邏輯型字段的值是 True/False、Yes/No 或 On/Off

      日期的表示形式為 MM/DD/YY 或 MM/DD/YYYY

      數(shù)據(jù)更新-DELETE語句

      DELETE語句用于數(shù)據(jù)刪除其語法格式為:

      DELETE FROM 表 [WHERE 條件]

      注意: WHERE子句缺省,則刪除表中所有的記錄(表還在)

      例11.18 刪除表Students中所有學(xué)號為990301的記錄

      DELETE FROM Students WHERE 學(xué)號=“990301”

      例11.19 刪除表Sc中成績低于70分的記錄

      DELETE FROM Sc WHERE 成績<70

      數(shù)據(jù)更新-UPDATE語句

      UPDATE語句用于數(shù)據(jù)修改其語法格式為:

      UPDATE 表 SET 字段1=表達(dá)式1, …,字段n=表達(dá)式n [WHERE 條件]

      注意: WHERE子句缺省,則修改表中所有的記錄

      例11.20 將表Student中學(xué)生王濤的姓名改為王寶 #12/28/80#,”

      UPDATE Students SET 姓名=“王寶” WHERE 姓名=“王濤”

      UPDATE語句一次只能對一個表進(jìn)行修改

      SQL是英文Structured Query Language的縮寫,意思為結(jié)構(gòu)化查詢語言。SQL語言的主要功能就是同各種數(shù)據(jù)庫建立聯(lián)系,進(jìn)行溝通。按照ANSI(美國國家標(biāo)準(zhǔn)協(xié)會)的規(guī)定,SQL被作為關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言。SQL語句可以用來執(zhí)行各種各樣的操作,例如更新數(shù)據(jù)庫中的數(shù)據(jù),從數(shù)據(jù)庫中提取數(shù)據(jù)等。目前,絕大多數(shù)流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL語言標(biāo)準(zhǔn)。包括數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)查詢和數(shù)據(jù)控制四個方面,共9個命令。

      SQL語言使用使用數(shù)據(jù)定義語言(Data Definition Language,簡稱DDL)實現(xiàn)數(shù)據(jù)定義功能。1、創(chuàng)建數(shù)據(jù)表

      【命令格式】

      CREATETABLE<表名> [free]

      (<字段名1><數(shù)據(jù)類型>[(<寬度>[,<小數(shù)位數(shù)>]),<字段名2>…])

      【功能】定義(也稱創(chuàng)建)一個表結(jié)構(gòu)。

      【命令格式】

      CREATETABLE<表名> [free]

      (<字段名1><數(shù)據(jù)類型>[(<寬度>[,<小數(shù)位數(shù)>]),[NULL|NOTNULL]<字段名2>…])

      【功能】定義(也稱創(chuàng)建)一個表結(jié)構(gòu)。

      【命令格式】

      CREATETABLE<表名> [free]

      (<字段名1><數(shù)據(jù)類型>[(<寬度>[,<小數(shù)位數(shù)>]),[NULL|NOTNULL]

      [CHECK<表達(dá)式>[error<提示信息]

      <字段名2>…])

      【功能】定義(也稱創(chuàng)建)一個表結(jié)構(gòu)。

      【命令格式】

      CREATETABLE<表名> [free]

      (<字段名1><數(shù)據(jù)類型>[(<寬度>[,<小數(shù)位數(shù)>]),[NULL|NOTNULL]

      [CHECK<表達(dá)式>[error<提示信息]

      [DEFAULT<表達(dá)式>]

      <字段名2>…])

      【功能】定義(也稱創(chuàng)建)一個表結(jié)構(gòu)。

      【命令格式】

      CREATETABLE<表名> [free]

      (<字段名1><數(shù)據(jù)類型>[(<寬度>[,<小數(shù)位數(shù)>]),[NULL|NOTNULL]

      [CHECK<表達(dá)式>[error<提示信息]

      [DEFAULT<表達(dá)式>]

      [PRIMARY KEY/UNIQUE]

      <字段名2>…])

      【功能】定義(也稱創(chuàng)建)一個表結(jié)構(gòu)。

      【例11-1】創(chuàng)建一個表STUD(學(xué)生信息表),它由以下字段組成:學(xué)號(C,8);姓名(C,8);性別(C,2);出生年月(D);入??偡?N,3);三好生(L);特長(M);照片(G)。

      CREATE TABLESTUD

      (學(xué)號C(8),姓名C(8),性別 C(2),出生年月 D, 入校總分 N(3),;三好生 L,特長 M,照片 G)

      【例11-2】創(chuàng)建一個表STUD(學(xué)生信息表),它由以下字段組成:學(xué)號(C,8);姓名(C,8);性別(C,2);出生年月(D);入??偡?N,3)。

      并要求:學(xué)號為主鍵并不能為空值;姓名也不允許為空值,性別字段必須是“男”或者“女”;出生年月取值范圍在1970到1990年之間。

      CREATE TABLESTUD

      (學(xué)號C(8)PRIMARY KEYNOT NULL,;

      姓名C(8),;性別C(2),;出生年月 D,;入??偡?N(3))

      【例11-2】創(chuàng)建一個表STUD(學(xué)生信息表),它由以下字段組成:學(xué)號(C,8);姓名(C,8);性別(C,2);出生年月(D);入校總分(N,3)。

      并要求:學(xué)號為主鍵并不能為空值;姓名也不允許為空值,性別字段必須是“男”或者“女”;出生年月取值范圍在1970到1990年之間。

      CREATE TABLESTUD

      (學(xué)號C(8)PRIMARY KEYNOT NULL,;

      姓名C(8), NOT NULL;性別C(2),;出生年月 D,;入校總分 N(3))

      【例11-2】創(chuàng)建一個表STUD(學(xué)生信息表),它由以下字段組成:學(xué)號(C,8);姓名(C,8);性別(C,2);出生年月(D);入??偡?N,3)。

      并要求:學(xué)號為主鍵并不能為空值;姓名也不允許為空值,性別字段必須是“男”或者“女”;出生年月取值范圍在1970到1990年之間。

      CREATE TABLESTUD

      (學(xué)號C(8)PRIMARY KEYNOT NULL,;

      姓名C(8), NOT NULL;

      性別C(2), DEFAULT=“男”CHECK 性別=“男”O(jiān)R 性別 =“女” ERROR“性別必須是男或女”;出生年月 D,;入??偡?N(3))

      【例11-2】創(chuàng)建一個表STUD(學(xué)生信息表),它由以下字段組成:學(xué)號(C,8);姓名(C,8);性別(C,2);出生年月(D);入??偡?N,3)。

      并要求:學(xué)號為主鍵并不能為空值;姓名也不允許為空值,性別字段必須是“男”或者“女”;出生年月取值范圍在1970到1990年之間。

      CREATE TABLESTUD

      (學(xué)號C(8)PRIMARY KEYNOT NULL,;

      姓名C(8), NOT NULL;

      性別C(2), DEFAULT=“男”CHECK 性別=“男”O(jiān)R 性別;

      =“女” ERROR“性別必須是男或女”;

      出生年月 D, CHECK(出生年月)<={^1990-01-01} and 出生;

      年月>={^1970-01-01},;

      入??偡?N(3))

      2、修改數(shù)據(jù)表

      【命令格式1】

      ALTER TABLE <表名>[ADD/ ALTER

      [COLUMN] <新字段名><數(shù)據(jù)類型>[<寬度>[,<小數(shù)位數(shù)>]]

      [NULL |NOTNULL]]

      [CHECK<表達(dá)式>[error<提示信息>]]

      [DEFAULT <表達(dá)式>]

      [PRIMARY KEY/UNIQUE]]

      【功能】修改表結(jié)構(gòu)。、插入記錄

      【格式1】INSERTINTO<表名>[<字段名表>]VALUES(<表達(dá)式表>)

      【格式2】INSERTINTO<表名>FROMARRAY<數(shù)組名>|FROMMEMVAR

      【功能】在指定的表文件末尾追加一條記錄。格式1用表達(dá)式表中的各表達(dá)式值賦值給<字段名表>中的相應(yīng)的各字段。格式2用數(shù)組或內(nèi)存變量的值賦值給表文件中各字段。

      【說明】如果某些字段名在INTO子句中沒有出現(xiàn),則新記錄在這些字段名上將取空值(或默認(rèn)值)。但必須注意的是,在表定義說明了NOTNULL的字段名不能取空值。

      <字段名表>:指定表文件中的字段,缺省時,按表文件字段的順序依次賦值。

      <表達(dá)式表>:指定要追加的記錄各個字段的值。

      【例11-6】在表文件STUD的末尾追加三條記錄。

      ***用表達(dá)式方式追加第一條記錄***

      INSERTINTOSTUD

      (學(xué)號,姓名,性別,班級名,系別代號);

      VALUES

      (“011110”,“李建國”,“男”,“計0121”,“01”)

      DIMENSIONDATA[5]

      DATA(1)=“011103”

      DATA(2)=“李寧”

      DATA(3)=“女”

      DATA(4)=“電0134”

      DATA(5)=“02”

      INSERTINTOSTUDFROMARRAYDATA

      第四篇:SQL語言

      1.輸出任意兩個字符串變量的值(參考代碼)

      declare @v1 varchar(12),@V2 varchar(12)

      set @v1='中國'

      set @v2='你好!'

      select @v1+@v2

      2.為以下程序糾錯

      declare @v1 varchar(12),@V2 varchar(10)

      set @v1='中國'

      set @v2='你好!'

      set @s='嗎!'

      select @v1+@v2+@s

      3.運(yùn)行以下代碼,觀察以下全局變量的功能

      select 34@@connections 返回當(dāng)前服務(wù)器的連接數(shù)目

      select 1@@rowcount 返回上一條T-SQL語句影響的數(shù)據(jù)行數(shù) select @@error返回上一條T-SQL語句執(zhí)行后的錯誤號 select @@procid返回當(dāng)前存儲過程的ID號

      select @@remserver 返回登錄記錄中遠(yuǎn)程服務(wù)器的名字 select @@spid返回當(dāng)前服務(wù)器進(jìn)程的ID標(biāo)識

      select @@version 返回當(dāng)前SQL Server服務(wù)器的版本和處理器類型 select @@language 返回當(dāng)前SQL Server服務(wù)器的語言

      select @@connections

      4.輸入以下代碼并理解其含意

      bggin

      if 3>5

      select 'true'

      else print 'false'

      end

      go

      begin

      if 'a'<'A'

      select 'true'

      else print 'false'

      end

      go

      begin

      if '張'>'李'

      select 'true'

      else print 'false'

      end

      go

      begin

      if getdate()>2008-10-10

      print'true'

      else print'false'

      end

      5.附加數(shù)據(jù)庫student,并進(jìn)行以下操作

      use student

      select * from xsda

      以XSDa表為例,如果平均成績高于75分,則顯示“不錯!”,否則,顯示“加油呀!”。

      declare @av1 char(12), @av2 char(12)

      set @av1='不錯!'

      set @av2='加油!'

      if(select avg(總學(xué)分)from xsda)>75

      begin

      select @av1

      end

      else

      select @av2

      編寫一個程序,顯示每一同學(xué)的成績等級

      select xh,zf,dj=

      case

      when zf>70 then '優(yōu)秀'

      when zf>65 then '良好'

      when zf>=60 then '合格'

      else '不合格'

      end

      from xsdn

      6.求1-100偶數(shù)和(參考代碼)

      declare @i int,@s int/*定義變量*/

      set @i=0/*變量賦初值*/

      set @s=0

      while @i<=100/*條件*/

      begin

      set @s=@s+@i/*累加求和*/

      set @i=@i+2/*偶數(shù)*/

      end

      print @s

      7.求10!

      8.為以下程序糾錯(求1-100的積)

      declare @i int,@s int

      set @i=0

      set @s=0

      while @i<=100 begin

      set @s=@s*@iset @i=@i+2 end

      print @s

      第五篇:SQL 語言

      SQL語言

      create database student

      on primary

      (name=student_data1,filename='c:student_data1.mdf',size=10M,maxsize=100M,filegrowth=10%)

      filegroupstudent_group分組

      (name=student_data2,filename='c:student_data2.ndf',size=10M,maxsize=100M,filegrowth=10%)

      log on

      (name=student_log1,filename='c:student_data1.ldf',size=10M,maxsize=100M,filegrowth=10%)

      create table xi

      (系編號 char(2)primary key,系名varchar(20))主碼

      insert into xi values('01','物理系')

      insert into xi values('02','化學(xué)系')

      select *from xi查詢

      create table student

      (學(xué)號 char(11)primary key,姓名varchar(10),民族 char(2)default'漢',出生日期datetime ,獎學(xué)金 money check(獎學(xué)金<=8000), 系編號 char(2)foreign key references xi(系編號))

      默認(rèn)值,約束,外碼

      insert into student values('20090214201','馬帥', '漢','1990-1-8',1500, '01')

      insert into student values('20100214202','周伊','回' ,'1989-2-4',500,'02')

      update student set 出生日期='1911-3-1'where 學(xué)號 ='20100214201'

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

      select* from student/ 3

      alter table student add 性別 char(2)check(性別='男'or 性別='女')

      增加列

      update student set 性別 ='男' where 學(xué)號 ='20090214201' update student set 性別 ='女' where 學(xué)號 ='20100214202' select student* from student where left(學(xué)號,4)=’2009’ 查詢大三學(xué)生的詳細(xì)信息

      create table kc

      (課程編號 char(2),課程名varchar(20))

      alter table kc alter column 課程編號 char(2)not null 修改字段

      alter table kc addconstraint pk_kcprimary key(課程編號)加主碼(加主碼的字段不能為空)

      insert into kc values('01','語文')

      insert into kc values('02','數(shù)學(xué)')

      insert into kc values('03','英語')

      update kc set課程名 ='歷史學(xué)' where 課程編號= '05' execute sp_rename '課程編號','課程名','column'

      改名

      create table cj

      (學(xué)號 char(11)foreign key references student(學(xué)號))alter table cj add 課程編號 char(2)

      增加列

      alter table cj add foreign key(課程編號)references kc(課程編號)

      增加外碼

      alter table cj add 成績varchar(3)

      insert into cj values('20100214201','01','69')

      insert into cj values('20100214201','02','90')

      insert into cj values('20100214201','03','56')

      insert into cj values('20100214202','01','26')

      insert into cj values('20100214202','02','54')

      insert into cj values('20100214202','03','89')

      1.select student.*,課程名,成績 ,系名 from student ,kc,cj ,xi where student.系編號 = xi.系編號and cj.學(xué)號=student.學(xué)號 and kc.課程編號=cj.課程編號 and student.學(xué)號='20100214202'

      查詢學(xué)號為20100214202的學(xué)生student表的全部內(nèi)容和每門課的成績及所在系

      2.select 姓名,課程名,成績,系名 from student,kc,cj,xi where student.學(xué)號 = cj.學(xué)號 and student.系編號=xi.系編號 and cj.課程編號= kc.課程編號 and month(getdate())=month(student.出生日期)and day(getdate())= day(student.出生日期)

      查詢今天過生日的學(xué)生的姓名每門課的成績及系名

      3.select student.學(xué)號,課程名,成績,系名 from student,kc,cj,xi where student.學(xué)號=cj.學(xué)號 and kc.課程編號=cj.課程編號 and student.系編號=xi.系編號 and cj.學(xué)號 =student.學(xué)號 查看所有學(xué)生的學(xué)號的每門課的成績及系名

      4.Select count()as 學(xué)生數(shù) from student ,xi where student.系編號=xi.系編號and xi.系名=’物理系’

      查看物理系的學(xué)生數(shù)

      5.Select student.姓名,avg(cj.成績)as平均成績 from student, cj where student.學(xué)號=cj.學(xué)號

      查看所有學(xué)生的平均成績

      下載SQL語言習(xí)題及答案范文大全word格式文檔
      下載SQL語言習(xí)題及答案范文大全.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為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)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        大自然的語言習(xí)題及答案

        閱讀下面的語段,完成后面的練習(xí),大自然的語言習(xí)題精選。立春過后,大地漸漸地沉睡中_______(A.清醒B.蘇醒;C.醒悟;D.復(fù)蘇)過來。冰雪融化,草木萌發(fā),各種花_________(A.次第;B.連續(xù);C.陸續(xù);D.全部)......

        SQL習(xí)題1

        Customers(cid,cname,city,discnt)存儲客戶信息。 cid 主鍵,客戶的惟一標(biāo)識符 cname 客戶名稱 city 客戶所在城市 discnt客戶在價格上所獲得的折扣 saleagents(aid,aname,ci......

        SQL語言簡介

        SQL語言簡介 ㈠、什么是SQL語言 SQL(Structure Query Languge,結(jié)構(gòu)化查詢語言)是一種數(shù)據(jù)庫專用的計算機(jī)語言,不管是Oracle、MS SQL 、Access、MySQL或其他公司的數(shù)據(jù)庫,也不管數(shù)......

        SQL語言總結(jié)

        select 姓名,sum(成績) as 總分from 學(xué)生 inner join 成績 on 學(xué)生.學(xué)號=成績.學(xué)號 group by 姓名 答:從通過學(xué)號建立的學(xué)生與成績關(guān)系表中選擇選擇學(xué)生成績的姓名集合Update 學(xué)......

        sql語言學(xué)習(xí)

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

        SQL語言簡介

        SQL—結(jié)構(gòu)化查詢語言數(shù)據(jù)定義語言 CREATE DROP ALTER數(shù)據(jù)操縱語言 SELECT INSERT UPDATE DELETE數(shù)據(jù)控制語言 GRANT REVOKE數(shù)據(jù)定義語言CREATE TABLE 學(xué)生 (學(xué)生ID SMALLINT......

        SQL語言(模版)

        SQL語言 1. 數(shù)據(jù)定義: a) Create 創(chuàng)建 b) Drop 刪除對象 數(shù)據(jù)表 ? 表的創(chuàng)建:create table 表名(字段名1 類型 primary key注:主鍵,字段名2 類 型,……, check 表級約束) 例:S(Sno......

        SQL語言匯總

        1. UPDATE MARK SET 總分=語文+數(shù)學(xué)+英語SELECT 準(zhǔn)考證號,姓名,總分 FROM MARK WHERE 語文>=75 AND數(shù)學(xué)>=75 AND 英語>=75 AND 語文+數(shù)學(xué)+英語>=240 ORDER BY 總分 DESC2 UP......