文档库 最新最全的文档下载
当前位置:文档库 › 数据库SQL语句练习题含答案

数据库SQL语句练习题含答案

SQL语句练习

练习5. 1. 2: 基于不断滚动的电影数据库的实例:

Movie( 电影名title,拍摄年代year ,长度length, inColor ,制片厂名studioName, 制片人证书号producerC# )

StarsIn(电影名movieTitle,拍摄年份movieYear ,影星名starName) MovieStar (姓名name,地址address,性别gender ,生日birthdate) MovieExec( 姓名name,地址address ,证书号cert # ,净资产netWorth ) Studio(姓名name, 地址address,总裁证书号presC# )

请写出下列SQL 查询语句:

* ( a) 找出米高梅制片公司(MGM studios)的地址。

SELECT address AS Studio_Address

FROM Studio WHERE name = 'MGM';

( b) 找出桑德拉·布洛克( Sandra Bullock ) 的出生日期( birthdate) 。SELECT birthdate AS Star_Birthdate

FROM MovieStar WHERE name = 'Sandra Bullock';

* ( c) 找出在1980 年拍摄过电影的所有影星, 或者拍摄过电影名中含有“Love”的电影的所有影星。

SELECT starName FROM StarsIn

WHERE movieYear = 1980 OR movieTitle LIKE '%Love%';

( d) 找出净资产至少1 000 万美元的所有行政长官。

SELECT name AS Exec_Name

FROM MovieExec WHERE netWorth >= 10000000;

( e) 找出所有的男影星或者是住址中含有Malibu 的影星。

SELECT name AS Star_Name FROM movieStar

WHERE gender = 'M' OR address LIKE '% Malibu %';

练习5. 1. 3: 用SQL 写出下列的查询。查询将引用练习4. 1. 1 中所描述的数据库模式:

Product (maker , model, t ype)

maker( 制造商) model( 型号) t ype( 类型)

PC(model, speed, ram, hd, cd, pr ice)

model( 型号) speed( 速度) ram( 内存) hd( 硬盘) cd( 光驱) pr ice( 价格)

Laptop(model, speed, ram, h d, screen, price)

model( 型号) speed( 速度) ram( 内存) hd( 硬盘) s creen( 屏幕) pr ice( 价格) Printer (model, color , t ype, pr ice)

model( 型号) color ( 彩色) type( 类型) price( 价格)

使用练习4. 1. 1 的数据, 请写出查询的结果。

* ( a ) 找出价格低于1 600 美元的所有个人计算机( PC) 的型号

( model)、速度( speed) 以及硬盘容量( hd) 。

SELECT model, speed, hd FROM PC WHERE price < 1600 ;

* ( b) 同( a)的要求, 另外将“速度”( speed)改为“兆赫”(megaher t z) , 将“硬盘”( hd) 改为“吉字节”( gigabytes) 。

SELECT model , speed AS gigahertz, hd AS gigabytes FROM PC WHERE price < 1600 ;

( c) 找出打印机( Printer ) 的制造商(maker ) 。

SELECT maker FROM Product WHERE type = 'printer' ;

( d) 找出费用高于2 000 美元的便携式电脑( laptop )的型号、内存容量( ram)以及屏幕尺寸( screen) 。

SELECT model, ram , screen FROM Laptop WHERE price > 2000 ;

( e) 从Printer 关系中找出所有彩色打印机的元组。记住color 是布尔值的属性。

SELECT * FROM Printer WHERE color =true;

( f ) 找出具有6 倍速或8 倍速光驱( 6x or 8x cd)而价格低于2 000 美元的所有个人计算机的型号、速度以及硬盘容量。你可以把属性cd 看作是字符串类型的。

SELECT model, speed, hd FROM PC

WHERE cd=’6x’ or cd=’8x’ and price <= 2000 ;

练习5. 1. 4: 基于练习4. 1. 3 的数据库模式:

Classes ( class , type, country, numGuns, bore, displacement)

class( 等级名) 、type( 类型: bb 代表战列舰, 或bc 代表巡洋舰) 、country

( 制造舰艇的国家) 、numGuns ( 主要火炮的数量) 、bore( 主要火炮的口径: 炮管的直径, 以英寸计算) 和displacement ( 排水量: 重量, 以吨计算)

Ships (name, class , launched)

name( 舰艇名) 、class( 舰艇等级名) 和launched( 舰艇下水的年份)

Battles(name, date)

name(名字) 和date(日期)

Outcomes( ship, battle, result )

给出每艘舰艇在每次战役中的result ( 结果: 沉没、损坏或完好)

写出下列查询, 并根据练习4. 1. 3 中的数据给出查询的结果:

( a) 列出至少拥有十门火炮( numGuns )的所有舰艇等级( class )的名称( name )和所属国家( country) 。

SELECT class, country FROM Classes WHERE numGuns >= 10 ;

( b) 找出所有在1918 年以前下水的舰艇的name, 而结果的名称用shipName 来表示。

SELECT name AS shipName FROM Ships WHERE launched < 1918; ( c) 找出所有在作战中沉没的舰艇的name, 同时给出使它们沉没的bat tle( 战役名) 。

SELECT ship AS shipName, battle FROM Outcomes

WHERE result = 'sunk';

( d) 找出所有name 和class 同名的舰艇。

SELECT name AS shipName FROM Ships WHERE name = class;

( e) 找出name 以字母R 开头的所有舰艇的名称。

SELECT name AS shipName FROM Ships WHERE name LIKE 'R%';

! ( f ) 找出舰名中包含三个或三个以上单词( 如King George V) 的所有舰艇的名称。

SELECT name AS shipName FROM Ships

WHERE name LIKE '_% _% _%' ;

练习5. 2. 1: 使用我们不断滚动的电影实例的数据库模式

Movie( title, year , length, inColor , studioName, producerC# )

StarsIn(movieTitle, movieYear , starName)

MovieStar ( name, address, gender , birthdate)

MovieExec( name, address , cert # , netWorth )

Studio( name, address, presC# )

用SQL 写出下列查询:

* ( a) 电影“Terms of Endearment”中的男影星都有谁?

SELECT https://www.wendangku.net/doc/a019196110.html, AS starName FROM MovieStar M, StarsIn S

WHERE https://www.wendangku.net/doc/a019196110.html, = S.starName AND S.movieTitle = 'Terms of Endearment' AND M.gender = 'M';

( b) 哪些影星出现在米高梅公司(MGM) 于1995 年制作的电影中? SELECT S.starName FROM Movies M , StarsIn S, Studios T

WHERE https://www.wendangku.net/doc/a019196110.html, ='MGM' AND M.year = 1995

AND M.title = S.movieTitle AND M.studioName = https://www.wendangku.net/doc/a019196110.html,;

( c) 谁是米高梅制片公司的总裁?

SELECT https://www.wendangku.net/doc/a019196110.html, AS presidentName FROM MovieExec X, Studio T WHERE X.cert# = T.presC# AND https://www.wendangku.net/doc/a019196110.html, = 'MGM';

* ! ( d) 哪些电影比《乱世佳人》(Gong With the Wind) 更长?

SELECT M1.title FROM Movies M1, Movies M2

WHERE M1.length > M2.length AND M2.title ='Gone With the Wind' ;

! ( e) 哪些行政长官比Merv Griffin 更富有?

SELECT https://www.wendangku.net/doc/a019196110.html, AS execName FROM MovieExec X1, MovieExec X2 WHERE https://www.wendangku.net/doc/a019196110.html,Worth > https://www.wendangku.net/doc/a019196110.html,Worth AND https://www.wendangku.net/doc/a019196110.html, = 'Merv Griffin' ;

练习5. 2. 2: 基于练习4. 1. 1 中的数据库模式

Product (maker , model, type)

PC ( model, speed, ram, hd, cd, pr ice)

Laptop (model, speed, ram, hd, screen, price)

Printer (model, color , type, price)

写出下列查询:

* ( a) 给出配置了容量至少为1G 字节的硬盘( h d)的便携式电脑( laptop)的生产厂商(maker ) 及其速度( speed) 。

L.speed AS gigahertz FROM Product R, Laptop L

WHERE L.hd >= ‘1G’ AND R.model = L.model ;

* ( b) 找出由生产厂商 B 生产的所有产品的型号(model)和价格( pr ice)。SELECT R.model, P.price FROM Product R, PC P WHERE R.maker = 'B' AND R.model = P.model UNION

SELECT R.model, L.price FROM Product R, Laptop L WHERE R.maker = 'B' AND R.model = L.model UNION

SELECT R.model, T.price FROM Product R, Printer T

WHERE R.maker = 'B' AND R.model = T.model ;

( c) 找出所有出售便携式电脑( 而不出售PC 机) 的生产厂商。SELECT R.maker FROM Product R, Laptop L

WHERE R.model = L.model EXCEPT

SELECT R.maker FROM Product R, PC P WHERE R.model = P.model ;

! ( d) 找出在两种或两种以上PC 机上出现的硬盘的容量。

SELECT DISTINCT P1.hd FROM PC P1, PC P2 WHERE P1.hd =P2.hd AND P1.model > P2.model ;

! ( e) 找出拥有相同速度和内存的PC 机的成对的型号(model)。每对只列出一次; 例如, 列出了( i, j ) 就不要列出( j , i) 。

SELECT P1.model, P2.model FROM PC P1, PC P2

WHERE P1.speed = P2.speed AND P1.ram = P2.ram

AND P1.model < P2.model ;

! ! ( f) 找出所有这样的生产厂商, 其产品中至少有两种不同类型的计算机( PC 机或便携式电脑) 速度最低为133MHz。

SELECT M.maker FROM

(SELECT maker, R.model FROM PC P, Product R WHERE SPEED >= 133 AND P.model=R.model UNION SELECT maker, R.model FROM Laptop L, Product R WHERE speed >= 133 AND L.model=R.model ) M

GROUP BY M.maker HAVING COUNT(M.model) >= 2 ;

练习5. 2. 3: 基于练习4. 1. 3 中的数据库模式

Classes ( class , type, country, numGuns, bore, displacement )

Ships ( name, class , launched)

Battles ( name, date)

Outcome ( ship, battle, result )

写出下列查询, 并用练习4. 1. 3 中的数据对你写出的查询求值:

( a) 找出排水量( displacement ) 大于35 000 吨的舰艇。

SELECT https://www.wendangku.net/doc/a019196110.html, FROM Ships S, Classes C

WHERE S.class = C.class AND C.displacement > 35000;

( b) 列出参加瓜达尔卡纳尔岛(Guadalcanal, 简称瓜岛)战役的舰艇的名称、排水量以及火炮的数量。

SELECT https://www.wendangku.net/doc/a019196110.html, , C.displacement, C.numGuns

FROM Ships S , Outcomes O, Classes C

WHERE https://www.wendangku.net/doc/a019196110.html, = O.ship AND S.class = C.class

AND O.battle = 'Guadalcanal' ;

( c) 列出数据库中所有提到的舰艇。(记住: 所有提到的舰艇不一定都出现在关系Ships 中) 。

SELECT name shipName FROM Ships UNION

SELECT ship shipName FROM Outcomes ;

! ( d) 找出所有既拥有战列舰又拥有巡洋舰的国家。

SELECT C1.country FROM Classes C1, Classes C2

WHERE C1.country = C2.country AND C1.type = 'bb'

AND C2.type = 'bc' ;

! ( e) 找出在一次战役中受损, 而后又在另一次战役中投入战斗的那些舰艇。

SELECT O1.ship FROM Outcomes O1, Battles B1

WHERE O1.battle = https://www.wendangku.net/doc/a019196110.html, AND O1.result = 'damaged'

AND EXISTS

(SELECT B2.date FROM Outcomes O2, Battles B2

WHERE O2.battle=https://www.wendangku.net/doc/a019196110.html, AND O1.ship = O2.ship(相关子查询)AND B1.date < B2.date ) ;

! ( f ) 找出参战的舰艇中至少有三艘属于同一国家的所有战役。SELECT O.battle FROM Ships S , Classes C, Outcomes O

WHERE C.Class = S.class AND O.ship = https://www.wendangku.net/doc/a019196110.html,

GROUP BY C.country, O.battle

HAVING COUNT(O.ship) >= 3;

练习5. 3. 1: 基于练习4. 1. 1 中的数据库模式

Product (maker , model, type)

PC ( model, speed, ram, hd, cd, price)

Laptop (model, speed, ram, hd, screen, price)

Printer (model, color , type, price)

写出下列查询。每个解答应该至少用一个子查询, 每个查询都用两种明显不同的方法( 如,

用运算符EXISTS, IN, ALL 和ANY 的不同的集合) 。

* ( a) 找出速度至少为160MHz 的PC 机的制造商(maker )。SELECT DISTINCT maker FROM Product WHERE model IN (SELECT model FROM PC WHERE speed >= 160 );

SELECT DISTINCT R.maker FROM Product R WHERE EXISTS (SELECT P.model FROM PC P WHERE P.speed >= 160

AND P.model =R.model );

( b) 找出价格最高的打印机。

SELECT P1.model FROM Printer P1 WHERE P1.price >= ALL (SELECT P2.price FROM Printer P2 ) ;

SELECT P1.model FROM Printer P1 WHERE P1.price IN

(SELECT MAX(P2.price) FROM Printer P2 ) ;

! ( c) 找出速度低于任何PC 机的便携式电脑( laptop) 。

SELECT L.model FROM Laptop L WHERE L.speed < ANY

(SELECT P.speed FROM PC P ) ;

SELECT L.model FROM Laptop L WHERE EXISTS

(SELECT P.speed FROM PC P WHERE P.speed >= L.speed ) ;

! ( d) 找出具有最高价格的机器( PC 机、便携式电脑或打印机) 的型号(model) 。

SELECT model FROM (SELECT model, price FROM PC UNION SELECT model, price FROM Laptop UNION

SELECT model, price FROM Printer )M1

WHERE M1.price >= ALL (SELECT price FROM PC UNION SELECT price FROM Laptop UNION

SELECT price FROM Printer ) ;

SELECT model FROM (SELECT model, price FROM PC UNION SELECT model, price FROM Laptop UNION

SELECT model, price FROM Printer ) M1

WHERE M1.price IN (SELECT MAX(price) FROM

(SELECT price FROM PC UNION

SELECT price FROM Laptop UNION

SELECT price FROM Printer ) M2 ) ;

! ( e) 找出具有最低价格的彩色打印机的制造商。

SELECT R.maker FROM Product R, Printer T

WHERE R.model =T.model AND T.color = true

AND T.price <= ALL (SELECT MIN(price) FROM Printer );

SELECT R.maker FROM Product R, Printer T1

WHERE R.model =T1.model AND T1.color=true

AND T1.price IN (SELECT MIN(T2.price) FROM Printer T2 );

! ! ( f) 找出在具有最小内存( ram) 容量的所有PC 机中具有最快处理器的PC 机制造商。

SELECT R1.maker FROM Product R1, PC P1

WHERE R1.model=P1.model AND P1.ram IN

(SELECT MIN(ram) FROM PC ) AND P1.speed >= ALL

(SELECT P1.speed FROM Product R1, PC P1

WHERE R1.model=P1.model AND P1.ram IN

(SELECT MIN(ram) FROM PC ) );

SELECT R1.maker FROM Product R1, PC P1

WHERE R1.model=P1.model AND P1.ram =

(SELECT MIN(ram) FROM PC ) AND P1.speed IN

(SELECT MAX(P1.speed) FROM Product R1, PC P1

WHERE R1.model=P1.model AND P1.ram IN

(SELECT MIN(ram) FROM PC ) );

练习5. 3. 2: 基于练习4. 1. 3 中的数据库模式

Classes ( class , type, country, numGuns, bore, displacement )

Ships ( name, class , launched)

Battles ( name, date)

Outcome ( ship, battle, result )

写出下列查询。每个解答应该至少用一个子查询, 每个查询都用两种明显不同的方法( 如,用运算符EXISTS, IN, ALL 和ANY 的不同的合) 。( a) 找出其舰艇拥有最大数量火炮的国家。

SELECT C.country FROM Classes C WHERE numGuns IN

(SELECT MAX(numGuns) FROM Classes );

SELECT C.country FROM Classes C WHERE numGuns >= ALL (SELECT numGuns FROM Classes );

* ! ( b ) 找出其中至少有一艘舰艇在战役中沉没的舰艇等级。SELECT DISTINCT C.class FROM Classes C, Ships S

WHERE C.class = S.class AND EXISTS

(SELECT ship FROM Outcomes O WHERE O.result='sunk'

AND O.ship = https://www.wendangku.net/doc/a019196110.html, ) ;

SELECT DISTINCT C.class FROM Classes C, Ships S

WHERE C.class = S.class AND https://www.wendangku.net/doc/a019196110.html, IN

(SELECT ship FROM Outcomes O WHERE O.result='sunk' ) ;

( c) 找出具有16 英寸口径( bore) 火炮的舰艇名称。

SELECT https://www.wendangku.net/doc/a019196110.html, FROM Ships S WHERE S.class IN

(SELECT class FROM Classes C WHERE bore=16 ) ;

SELECT https://www.wendangku.net/doc/a019196110.html, FROM Ships S WHERE EXISTS

(SELECT class FROM Classes C WHERE bore =16 AND C.class =

S.class );

( d) 找出Kongo 级舰艇参战的战役。

SELECT O.battle FROM Outcomes O WHERE O.ship IN

(SELECT name FROM Ships S WHERE S.Class ='Kongo' );

SELECT O.battle FROM Outcomes O WHERE EXISTS

(SELECT name FROM Ships S WHERE S.Class ='Kongo'

AND https://www.wendangku.net/doc/a019196110.html, = O.ship );

! ! ( e) 在具有相同口径火炮的舰艇中找出火炮数量最多的舰艇的名称。SELECT https://www.wendangku.net/doc/a019196110.html, FROM Ships S, Classes C

WHERE S.Class = C.Class AND numGuns >= ALL

(SELECT numGuns FROM Ships S2, Classes C2 WHERE S2.Class =

C2.Class AND C2.bore = C.bore ) ;

SELECT https://www.wendangku.net/doc/a019196110.html, FROM Ships S, Classes C WHERE S.Class = C.Class AND numGuns IN

(SELECT MAX(numGuns) FROM Ships S2, Classes C2

WHERE S2.Class = C2.Class AND C2.bore = C.bore ) ;

Better answer; 相关子查询

SELECT https://www.wendangku.net/doc/a019196110.html, FROM Ships S, Classes C

WHERE S.Class = C.Class AND numGuns >= ALL

(SELECT numGuns FROM Classes C2 WHERE C2.bore = C.bore ) ; SELECT https://www.wendangku.net/doc/a019196110.html, FROM Ships S, Classes C

WHERE S.Class = C.Class AND numGuns IN

(SELECT MAX(numGuns) FROM Classes C2 WHERE C2.bore =

C.bore ) ;

练习5. 5. 1: 在练习4. 1. 1 的数据库模式的基础上, 写出下列查询, 并用练习4. 1. 1 中的

数据计算你的查询结果。数据库模式为:

Product (make, model, type)

PC ( model, speed, ram, hd, cd, price)

Laptop (model, speed, ram, hd, screen, price)

Printer (model, color , type, price)

查询:

* ( a) 找出PC 机的平均速度。

SELECT AVG(speed) AS Avg_Speed FROM PC ;

( b) 找出价格超过2 500 美元的便携式电脑( laptop) 的平均速度。SELECT AVG(speed) AS Avg_Speed FROM Laptop WHERE price > 2500 ;

( c) 找出厂商“A”生产的PC 机的平均价格。

SELECT AVG(P.price) AS Avg_Price FROM Product R, PC P

WHERE R.model=P.model AND R.maker='A' ;

! ( d) 找出厂商“D”生产的PC 机和便携式电脑的平均价格。SELECT AVG(M.price) AS Avg_Price FROM

(SELECT P.price FROM Product R, PC P WHERE R.model = P.model AND R.maker = 'D' UNION ALL

SELECT L.price FROM Product R, Laptop L WHERE R.model = L.model AND R.maker = 'D' ) M ;

( e) 找出各种不同速度的PC 机的平均价格。

SELECT SPEED, AVG(price) AS AVG_PRICE FROM PC

GROUP BY speed ;

* ! ( f ) 找出各厂商生产的便携式电脑的显示器平均尺寸。

SELECT R.maker, AVG(L.screen) AS Avg_Screen_Size FROM Product R, Laptop L WHERE R.model = L.model GROUP BY R.maker ;

! ( g) 找出至少生产三种不同型号的PC 机的厂商。

SELECT R.maker FROM Product R, PC P WHERE R.model = P.model GROUP BY R.maker HAVING COUNT(R.model) >=3 ;

better:

SELECT maker FROM Product WHERE type='pc' GROUP BY maker HAVING COUNT(model) >=3 ;

! ( h ) 找出各厂商生产的PC 机的最高价格。

SELECT R.maker, MAX(P.price) AS Max_Price FROM Product R,

PC P WHERE R.model = P.model GROUP BY R.maker ;

* ! ( i) 找出速度超过150MHz 的各种速度的PC 机的平均价格。SELECT speed, AVG(price) AS Avg_Price FROM PC

WHERE speed > 150 GROUP BY speed ;

! ! ( j) 找出所有生产打印机的厂商生产的PC机的硬盘平均容量。SELECT AVG(P.hd) AS Avg_HD_Size FROM Product R, PC P WHERE R.model = P.model AND R.maker IN

(SELECT maker FROM Product WHERE type = 'printer' ) ;

练习5. 5. 2: 在练习4. 1. 3 中的数据库模式的基础上, 写出下列查询, 并用练习4. 1. 3 的数据计算你的查询结果。数据库模式为:

Classes ( class , type, country, numGuns, bore, displacement )

Ships ( name, class , launched)

Battles ( name, date)

Outcomes ( ship, battle, result )

查询:

( a) 找出战列舰( battleship ) 的等级数。

SELECT COUNT(C.class) AS NO_Classes FROM Classes WHERE type ='bb' ;

( b) 找出各等级战列舰火炮的平均数。

SELECT AVG(C.numGuns) AS Avg_Guns FROM Classes WHERE type ='bb' ;

! ( c) 找出战列舰火炮的平均数。请注意( b)和( c)之间的差别; 我们是否根据某一等级舰艇的数量而对该等级加权?

SELECT AVG(C.numGuns) AS Avg_Guns FROM Classes C

INNER JOIN Ships S ON (C.class = S.class) WHERE C.type ='bb';

! ( d) 找出各等级舰艇中的第一艘下水的年份。

SELECT C.class, MIN(https://www.wendangku.net/doc/a019196110.html,unched) AS First_Launched

FROM Classes C, Ships S WHERE C.class = S.class

GROUP BY C.class ;

! ( e) 对于每个等级都找出在战役中沉没的舰艇数。

SELECT C.class, COUNT(O.ship) AS No_Sunk FROM Classes C , Outcomes O, Ships S

WHERE C.class = S.class AND https://www.wendangku.net/doc/a019196110.html, = O.ship AND O.result = 'sunk' GROUP BY C.Class ;

! ! ( f) 对于至少有三艘舰艇的各个等级找出在战役中沉没的舰艇数。SELECT M.class, COUNT(O.ship) AS No_Sunk FROM Outcomes O, Ships S ,

(SELECT C.class FROM Classes C, Ships S WHERE C.class = S.class GROUP BY C.class HAVING COUNT(https://www.wendangku.net/doc/a019196110.html,) >= 3 ) M

WHERE O.result = 'sunk' AND O.ship = https://www.wendangku.net/doc/a019196110.html, AND S.class = M.class GROUP BY M.class ;

! ! ( g) 舰炮发射的炮弹的重量(以磅为单位)约等于口径(以英寸为单位)的立方的1/ 2。找出每个国家舰艇上所用的炮弹的平均重量。SELECT C.country, AVG(C.bore*C.bore*C.bore*0.5) Avg_Shell_Wt FROM Classes C, Ships S WHERE C.class = S.class

GROUP BY C.country ;

练习5. 6. 1: 基于练习4. 1. 1 中的数据库模式

Product (make, model, type)

PC ( model, speed, ram, hd, cd, price)

Laptop (model, speed, ram, hd, screen, price)

Printer (model, color , type, price)

写出下列数据库更新操作, 描述对练习4. 1. 1 中的数据进行更新的效果。

( a) 用两个INSERT 语句将下述事实存入数据库:生产厂商C 制造的

型号为1100 的PC 机, 速度240M, 内存32M, 硬盘2. 5G, 12 倍速光驱, 售价2 499 美元。

INSERT INTO Product VALUES ( 'C' , '1100', 'pc' ) ;

INSERT INTO PC VALUES ( '1100', 240,32 , 2.5,12,2499 ) ;

! ( b ) 插入这些事实: 对于每一种PC 机, 都有一种具有相同速度、内存和硬盘的便携式电脑, 而屏幕为11 英寸, 型号大于1100, 价格超过500 美元。

INSERT INTO Product

SELECT make , model+1100, 'laptop' FROM Product WHERE type = 'pc' ; INSERT INTO Laptop

SELECT model+1100, speed , ram , hd , 11 , price+500 FROM PC ;

( c) 删掉所有硬盘容量不到2G 字节的PC 机。

DELETE FROM PC WHERE hd < 2 ;

( d) 删掉由不制造打印机的厂商所制造的所有便携式电脑。DELETE FROM Laptop L WHERE L.model IN

(SELECT R2.model FROM Product R2 WHERE R2.maker IN (SELECT DISTINCT R.maker FROM Product R

WHERE R.maker NOT IN

(SELECT R2.maker FROM Product R2 WHERE R2.type = 'printer'

) ) ) ;

DELETE FROM PRODUCT R3

WHERE R3.model IN

(SELECT R2.model FROM Product R2 WHERE R2.maker IN (SELECT DISTINCT R.maker FROM Product R

WHERE R.maker NOT IN

(SELECT R2.maker FROM Product R2 WHERE R2.type = 'printer' ) ) ) AND R3.type = 'laptop';

( e) 厂商A 收购了厂商B, 将所有由B 制造的产品改为由A 制造。UPDATE Product SET maker = 'A' WHERE maker = 'B' ;

( f) 对每种PC 机, 将内存的容量加倍, 硬盘的容量增加1G 字节。(记住:一些属性可以通过UPDATE 语句进行更改。)

UPDATE PC SET ram = ram*2, hd =hd +1 ;

SQL语句练习及答案

sql语句练习题1 数据库有如下四个表格: student(sno,sname,sage,ssex,sdpt) 学生表 系表(dptno,dname) course(cno,cname, gradet, tno) 课程表 sc(sno,cno,score) 成绩表 teacher(tno,tname) 教师表 要求:完成以下操作 1.查询姓"欧阳"且全名为三个汉字的学生的姓名。 select sname from student where sname like “欧阳__?; 2.查询名字中第2个字为"阳"字的学生的姓名和学号。 select sname,sno from student where sname like '_阳%';3.查询所有不姓刘的学生姓名。 select sname,sno,ssex from student where sname not like “刘%”; 4.查询db_design课程的课程号和学分。 select cno,ccredit from course where cname like 'db_design' 5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。 select * from course where cname like 'db%i_ _'; 6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查 询缺少成绩的学生的学号和相应的课程号。

select sno,cno from sc where grade is null; 7.查所有有成绩的学生学号和课程号。 select sno,cno from sc where grade is not null; 8.查询计算机系年龄在20岁以下的学生姓名。 select sname from student where sdept= 'cs' and sage<20; 9.查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。 select sno, grade from sc where cno= ' 3 ' order by grade desc;10.查询学生总人数。 select count(*) from student; 11.查询选修了课程的学生人数。 select count(distinct sno) from sc; 12.计算1号课程的学生平均成绩。 select avg(grade) from sc where cno= ' 1 '; 13.查询选修1号课程的学生最高分数。 select max(grade) from sc where cno= ' 1 '; 14.查询学生200215012选修课程的总学分数。 select sum(grade) from sc,course where sno= ' 200215012 ' and https://www.wendangku.net/doc/a019196110.html,o=https://www.wendangku.net/doc/a019196110.html,o;

数据库SQL语句练习题含答案

SQL语句练习 练习5. 1. 2: 基于不断滚动的电影数据库的实例: Movie( 电影名title,拍摄年代year ,长度length, inColor ,制片厂名studioName, 制片人证书号producerC# ) StarsIn(电影名movieTitle,拍摄年份movieYear ,影星名starName) MovieStar (姓名name,地址address,性别gender ,生日birthdate) MovieExec( 姓名name,地址address ,证书号cert # ,净资产netWorth ) Studio(姓名name, 地址address,总裁证书号presC# ) 请写出下列SQL 查询语句: * ( a) 找出米高梅制片公司(MGM studios)的地址。 SELECT address AS Studio_Address FROM Studio WHERE name = 'MGM'; ( b) 找出桑德拉·布洛克( Sandra Bullock ) 的出生日期( birthdate) 。SELECT birthdate AS Star_Birthdate FROM MovieStar WHERE name = 'Sandra Bullock'; * ( c) 找出在1980 年拍摄过电影的所有影星, 或者拍摄过电影名中含有“Love”的电影的所有影星。 SELECT starName FROM StarsIn WHERE movieYear = 1980 OR movieTitle LIKE '%Love%'; ( d) 找出净资产至少1 000 万美元的所有行政长官。

SQL数据库题库及答案

一、单项选择题,请将正确答案填在括号里。 1、()是位于用户与操作系统之间的一层数据管理软件. A、数据库管理系统 B、数据库系统 C、数据库 D、数据库应用系统 2、要想使SQL Server2000数据库管理系统开始工作,必须首先启动()。 A、数据导入和导出程序 B、查询分析器 C、网络实用工具 D、SQL Server服务器 3、SQL Server 的登录账户信息保存在()数据库中。 A、master B、model C、 msdb D、tempdb 4、以下哪个数据库角色中拥有可以执行所有数据库角色的活动的权限? ( ) A、public B、db_owner C、db_security admin D、db_access admin 5、下列关于数据库的数据文件叙述错误的是()。 A 、创建数据库时必须指定数据文件 B 、创建数据库时, PRIMARY 文件组中的第一个文件为主数据文件 C 、一个数据库可以有多个数据文件

D 、一个数据库只能有一个主数据文件 6、创建约束的命令是()。 A、CREATE TABLE B、ALTER CONSTRAINT C、ALTER TABLE D、ALTER COLUMN 7、下列有关批的叙述中正确的是()。 A、批是一起提交处理的一组语句 B、通常用GO来表示一个批的结束 C、不能在一个批中引用其它批定义的变量 D、批可长可短,在批中可以执行任何T-SQL语句 8、下面关于聚集索引和非聚集索引说法正确的是()。 A、每个表只能建立一个非聚集索引 B、非聚集索引需要较多的硬盘空间和内存 C、一张表上不能同时建立聚集和非聚集索引 D、一个复合索引只能是聚集索引 9、下列命令不能执行的是()。 A、 SELECT * FROM [select] B、 SELECT * FROM @MyTable C、 SELECT * FROM [MyTable] D、 SELECT * FROM MyTable 10、并发操作会带来的数据不一致性有()。 A、丢失修改、不可重复读、读脏数据、死锁

3-SQL语句练习题参考答案

标准SQL语言 一、选择题 1、下面关于SQL标准的叙述中,不正确的是(B )。 A.SQL语言是集数据定义、数据操纵、数据控制功能为一体的语言。 B.SQL语言是一种高度过程化的语言。 C.SQL标准规定数据库是按三级模式结构构建。 D.SQL语言是关系型数据库的标准语言。 E.SQL语言是面向集合的语言。 2、SQL语言中,修改基本表结构的语句是( B )。 A.UPDATE B.ALTER C.DROP D.CREATE 3、SQL语言中,删除基本表结构的语句是( C )。 A.DELETE B.ALTER C.DROP D.CREATE 4、下面关于“视图”的叙述中,不正确的是( C )。 A.视图是一种“虚表”,它的数据被存放在基本表中。 B.视图提供了逻辑数据独立性。 C.不能通过视图来更新数据库中的数据。 D.视图能提供对数据的安全保护。 5、下面关于SELECT语句的叙述中,不正确的是(C)。 A.SELECT产生的结果是一个集合。 B.HA VING子句必须与GROUP BY子句一起使用。 C.可以省略FROM子句。 D.可以省略WHERE子句。 二、填空题 1、在使用INSERT语句向一个表中插入元组时,“值列表”中值的个数、(顺序)、类型必须与“列名表”保持一致。 2、在向一个表中插入元组时,对于未指定默认值且(不能取空值)的字段必须赋值。 3、向表中插入元组时,主键的值不能取(NULL )值。 4、在使用DELETE语句时,如果不指定(where 条件)就会将整个表的数据删除。 5、视图是从一个或几个基本表或(视图)导出的表,它与基本表不同,是一个虚表。 三、判断题 1、SQL语言是面向集合操作的语言。√ 2、可以通过视图来查询数据,但不能通过视图来更新数据库中的数据。× 3、在SQL Server数据库系统中,向表中插入元组时,系统自动为具有标识属性的列赋值。√ 4、在SQL Server数据库系统中,向表中插入元组时,对取值类型为timestamp(时间戳)的列不能赋值,系统自动赋值。√

07第七章关系数据库标准语言SQL(答案)

第七章关系数据库标准语言SQL 一、单项选择题 1、SELECT语句中的条件年龄 BETWEEN 20 AND 25,表示年龄在20至25之间, 且( A )。 A、包括20岁和25岁 B、不包括20岁和25岁 C、包括20岁但不包括25岁 D、包括25岁但不包括20岁 2、下列函数中,正确的是( C )。 A、SUM(*) B、MAX(*) C、COUNT(*) D、AVG(*) 3、SELECT查询时,只显示查询结果的前N行,使用的子句是:( B )。 A、ALL B、TOP N C、TOP N PERCENT D、DISTINCT 4、SELECT查询时,输出无重复的记录,使用的子句是:( D )。 A、ALL B、TOP N C、TOP N PERCENT D、DISTINCT 5、在SELECT查询时,下列哪一个符号可以代替查询的所有列名:( A )。 A、* B、? C、_ D、% 6、下列错误的子句是( D )。 A、SELECT 姓名,学生姓名 B、SELECT 姓名 AS 学生姓名 C、FROM 学生 AS student D、ORDER BY 姓名 AS NAME 7、用UNION合并两个SELECT查询的结果时,下列叙述中错误的是( A )。 A、被组合的每个查询都可以使用ORDER BY子句 B、两个SELECT语句必须输出同样的列数 C、两个表各相应列的数据类型必须相同 D、将来自不同查询的数据组合起来 8、子查询中不能使用的子句是( B )。 A、GROUP BY B、ORDER BY C、WHERE D、INNER JOIN 9、查询1985年10月27日出生的学生信息,正确的命令是( D )。 A、SELECT * FROM 学生 WHERE 出生日期={1985-10-27} B、SELECT * FROM 学生 WHERE 出生日期=1985-10-27 C、SELECT * FROM 学生 WHERE 出生日期="1985-10-27" D、SELECT * FROM 学生 WHERE 出生日期=#1985-10-27# 10、查询所有目前年龄在24岁以上(不含24岁)的学生信息(学号、姓名、出 生日期),正确的命令是( C )。 A、SELECT 学号,姓名,YEAR(DATE())-YEAR(出生日期) AS 年龄 FROM 学生WHERE 年龄>24 B、SELECT 学号,姓名,YEAR(DATE())-YEAR(出生日期) AS 年龄 FROM 学生WHERE YEAR(出生日期)>24 C、SELECT 学号,姓名,YEAR(DATE())-YEAR(出生日期) AS 年龄 FROM 学生WHERE YEAR(DATE())-YEAR(出生日期)>24 D、SELECT 学号,姓名,年龄=YEAR(DATE())-YEAR(出生日期) FROM 学生 WHERE YEAR(DATE())-YEAR(出生日期)>24 11、查询选修了课程代码为1054和1391的同学的学号、课程代码、成绩, 正确的是( B )。 A、SELECT 学号,课程代码,成绩 FROM 成绩 WHERE 课程代码=(1054,1391)

SQL复习题(附部分答案)

一、单选题 1.根据关系数据基于的数据模型——关系模型的特征判断下列正确的一项: ( ___) A.只存在一对多的实体关系,以图形方式来表示。 B.以二维表格结构来保存数据,在关系表中不允许有重复行存在。 C.能体现一对多、多对多的关系,但不能体现一对一的关系。 D.关系模型数据库是数据库发展的最初阶段。 答案[ B] 2、在“连接”组中有两种连接认证方式,其中在( ___)方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。 A 、 Windows身份验证B、SQL Server身份验证 C 、以超级用户身份登录时 D 、其他方式登录时 答案[ B] 3、关系数据库中,主键是(___),当运用 Transact-SQL 语句创建主键时,可以是( __)。 ⑴ A 、为标识表中唯一的实体B、创建唯一的索引,允许空值 C 、只允许以表中第一字段建立D、允许有多个主键的 ⑵ A 、 create table table1 (column1 char(13) not null primary key, column2 int not on primary key; B 、alter table table1 with nocheck add constraint [PK_table1] primary key nonclustered ( column1) on primary; C、alter table table1 column1 primary key ; 答案[AC] 4、视图是一种常用的数据对象,可以简化数据库操作,当使用多个数据表来 建立视图时,不允许在该语句中包括( ___)等关键字。 A 、 ORDER BY,COMPUTE B 、ORDER BY,COMPUTE,COMPUTR BY C 、 ORDER BY,COMPUTE BY,GROUP BY D 、 GROUP BY,COMPUT E BY 答案[B ] 5、在 Transact-SQL 语法中, SELECT语句的完整语法较复杂,但至少包括的部分(_1_),使用关键字( _2_)可以把重复行屏蔽,将多个查询结果返回一个结果集合的运算符是( _3__),如果在 SELECT语句中使用聚合函数时,可以在后面使用( _4_)。 ⑴A 、SELECT,INTO B 、SELECT,FROM C 、SELECT,GROUP D、仅 SELECT ⑵ A 、DISTINCT B、UNION C 、ALL D 、TOP ⑶A 、JOIN B、UNION C、INTO D 、 LIKE ⑷A 、 GROUP BY 、BCOMPUTE BY 、CHAVING D、COMPUTE 答案[BABA] 6、SQL Server 2008 是一个()的数据库系统。 (A) 网状型( B)层次型(C)关系型(D)以上都不是

SQL练习题及答案

选择题 (1)如果要查询所藏图书中,各个出版社图书的最高单价、平均单价和册数,所用的SQL 语句是 A)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*); FROM 图书; GROUP BY 出版单位 B)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*); FROM 图书; HAVING 出版单位 C)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*); FROM 图书 GROUP BY 出版单位 D)SELECT 出版单位,MIN(单价), AVG(单价),COUNT(*); FROM 图书; HAVING 出版单位 (2)为"运动员"表增加一个字段"得分"的SQL语句是 A)CHANGE TABLE运动员ADD得分I B)ALTER DATA运动员ADD得分I C)ALTER TABLE运动员ADD得分I D)CHANGE TABLE运动员IN得分I (3)利用SQL数据更新功能,自动计算更新每个"设备总金额"字段的字段值,该字段值等于"单价*设备数量"的值,正确命令为 A)UPDATE 设备表SET 设备总金额=单价*设备数量 B)UPDATE 设备表FOR 设备总金额=单价*设备数量 C)UPDATE 设备表WITH 设备总金额=单价*设备数量 D)UPDATE 设备表WHERE 设备总金额=单价*设备数量 (4)查找教师表中教师最高的工资值,下列SQL语句正确的是 A)SELECT MAX(工资) FROM 教师表 B)SELECT MIN(工资) FROM 教师表 C)SELECT AVG(工资) FROM 教师表 D)SELECT SUM(工资) FROM 教师表 (5)在当前目录下有数据表文件student.dbf,执行如下SQL语句后 SELECT * FORM student INTO DBF student ORDER BY 学号/D A)生成一个按"学号"升序的表文件,将原来的student.dbf文件覆盖 B)生成一个按"学号"降序的表文件,将原来的student.dbf文件覆盖 C)不会生成新的排序文件,保持原数据表内容不变 D)系统提示出错信息 (6)语句"DELETE FROM 成绩表WHERE 计算机<60"的功能是 A)物理删除成绩表中计算机成绩在60分以下的学生记录 B)物理删除成绩表中计算机成绩在60分以上的学生记录 C)逻辑删除成绩表中计算机成绩在60分以下的学生记录

数据库sql课后练习题及答案解析

数据库sql课后练习题及答案解析 第一篇:数据库sql课后练习题及答案解析 先创建下面三个表: (book表) (borrow表) (reader表) 1)找出姓李的读者姓名(NAME)和所在单位(COMPANY)。 2)列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。3)查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。 4)查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。 5)查找书名以”计算机”开头的所有图书和作者(WRITER)。 6)检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。 ##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。 9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。 ##10)* 找出借阅了一书的借书证号。 11)找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。12)查询2006年7月以后没有借书的读者借书证号、姓名及单位。#13)求”科学出版社”图书的最高单价、最低单价、平均单价。##14)* 求”信息系”当前借阅图书的读者人次数。 #15)求出各个出版社图书的最高价格、最低价格和总册数。#16)分别找出各单位当前借阅图书的读者人数及所在单位。 17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。18)分别找出借书人次数多于1人次的单位及人次数。

sql练习题及答案

sql练习题及答案 SQL(Structured Query Language)是一种用于管理和操作关系型数据库的编程语言。在这篇文章中,我们将提供一些SQL练习题及其答案,旨在帮助读者加深对SQL的理解,并提供实践操作的机会。 练习题一:学生表 考虑一个名为"Students"的学生表,包含以下字段: - 学生编号(StudentID) - 学生姓名(StudentName) - 学生年级(Grade) - 学生所在学校(School) 请使用SQL语句创建并插入示例数据到"Students"表中。 答案: ```sql CREATE TABLE Students ( StudentID INT, StudentName VARCHAR(50), Grade INT, School VARCHAR(50)

); INSERT INTO Students (StudentID, StudentName, Grade, School) VALUES (1, '张三', 11, '中学A'), (2, '李四', 10, '中学B'), (3, '王五', 10, '中学A'), (4, '赵六', 12, '中学C'); ``` 练习题二:查询学生表信息 请编写SQL查询语句,查询出所有学生的姓名和所在学校。 答案: ```sql SELECT StudentName, School FROM Students; ``` 练习题三:更新学生信息 假设有一位新生加入学校,学生姓名为"李华",年级为11,学校为"中学B"。请编写SQL语句将该学生信息插入到学生表中。 答案: ```sql

数据库中SQL查询语句习题含答案

查询问题:设教学数据库Education有三个关系: 学生关系S(SNO,SNAME,AGE,SEX,SDEPT);学习关系SC(SNO,CNO,GRADE);课程关系C(CNO,CNAME,CDEPT,TNAME) (1)检索计算机系的全体学生的学号,姓名和性别;(2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS”的学生学号与姓名;(4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号;(6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; (8)查询所学课程包含学生S3所学课程的学生学号。(1)检索计算机系的全体学生的学号,姓名和性别;SELECT Sno,Sname,Sex FROM S WHERE Sdept =’CS’; (2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS”的学生学号与姓名 本查询涉及到学号、姓名和课程名三个属性,分别存放在S和C表中,但S和C表没有直接联系,必须通过SC表建立它们二者的联系。 C → SC → S 基本思路: (1)首先在C表中找出“DS”课程的课程号Cno;(2)然后在SC表中找出Cno等于第一步给出的Cno 集合中的某个元素Cno; (3)最后在S关系中选出Sno等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname送入结果表列。SELECT Sno,Sname FROM S WHERE Sno IN (SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM C WHERE Cname=‘DS’)); (4)检索选修课程号为C2或C4的学生学号;SELECT Sno FROM SC WHERE Cno=‘C2’ OR Cno=‘C4’;(5)检索至少选修课程号为C2和C4的学生学号;SELECT Sno FROM SC X,SC Y WHERE X.Sno=Y.Sno AND https://www.wendangku.net/doc/a019196110.html,o=‘C2’ AND https://www.wendangku.net/doc/a019196110.html,o=‘C4’; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; 在表S中找学生,要求这个学生学了全部课程。换言之,在S表中找学生,在C中不存在一门课程,这个学生没有学。 SELECT Sname FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE SC.Sno=S.Sno AND https://www.wendangku.net/doc/a019196110.html,o=https://www.wendangku.net/doc/a019196110.html,o)); (8)查询所学课程包含学生S3所学课程的学生学号。分析:不存在这样的课程Y,学生S3选了Y,而其他学生没有选。 SELECT DISTINCT Sno FROM SC AS X WHERE NOT EXISTS (SELECT * FROM SC AS Y WHERE Y.Sno=‘S3’ AND NOT EXISTS (SELECT * FROM SC AS Z WHERE Z.Sno=X.Sno AND https://www.wendangku.net/doc/a019196110.html,o=https://www.wendangku.net/doc/a019196110.html,o));

SQL语言习题参考答案

第3章 SQL语言习题参考答案 1.试述SQL语言的特点。(85页) 答:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式、语言简捷,易学易用。2.试述SQL的定义功能。(87页) 答:SQL的数据定义功能包括定义表、定义视图和定义索引3.用SQL语句建立第二章习题5中的四个表。 S(SNO,SNAME,STATUS,CITY); P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY); 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成:CREATE TABLE S(Sno C(2) UNIQUE,Sname C(6) ,Status N(2),City C(4)) 零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成: CREATE TABLE P(Pno C(2) UNIQUE,Pname C(6),COLOR C(2), WEIGHT I(2)) 工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、

所在城市(CITY)组成: CREATE TABLE J(Jno C(2) UNlQUE,JNAME C(8), CITY C(4)). 供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成: CREATE TABLE SPJ(Sno C(2),Pno C(2),JNO C(2), QTY N(2)) 4.针对上题中建立的四个表试用SQL语言完成第二章习 题5中的查询: (1)求供应工程J1零件的供应商号码SNO: SELECT DIST SNO FROM SPJ WHERE JNO='J1' (2)求供应工程J1零件P1的供应商号码SNO: SELECT DIST SNO FROM SPJ WHERE JNO='J1' AND PNO='P1' (3)求供应工程J1零件为红色的供应商号码SNO: SELECT SNO FROM SPJ,P WHERE JNO='J1' AND = AND COLOR='红' (4)求没有使用天津供应商生产的红色零件的工程号JNO: SELECT DIST JNO FROM SPJ WHERE JNO NOT IN (SELE JNO FROM SPJ,P,S WHERE ='天津' AND COLOR='红' AND = AND =。(5)求至少用了供应商S1所供应的全部零件的工程号JNO。

SQL语句练习题答案

SQL语句练习题答案 一在数据库 school 中建立student , sc, course 表。 学生表、课程表、选课表属于数据库 school ,其各自的数据结构如下: 学生 student (sno,sname,ssex,sage,sdept) 课程表 course(cno,cname,cpno,ccredit) 学生选课 sc(sno,cno,grade) 二设定主码 1 student表的主码:sno 2 course表的主码:cno 3 sc表的主码:sno,cno 1写出使用 create table 语句创建表 student , sc, course 的sql 语句 2 3 删除student表中的元组 4在数据库school中删除关系student 5在student表添加属性sbirthdate 类型 datetime delete 1 删除所有 jsj 系的男生delete from student where sdept=’jsj’ and ssex=’男’; 2 删除“数据库原理”的课的选课纪录 delete from sc where cno in (select cno fromcourse where cname=’数据库原理’); update 1 修改 0001 学生的系科为: jsj 2 把陈小明的年龄加1岁,性别改为女。 2 修改李文庆的1001课程的成绩为 9 3 分 3 把“数据库原理”课的成绩减去1分 select 查询语句 一单表

1查询年龄在19至21岁之间的女生的学号,姓名,年龄,按年龄从大到小排列。2查询姓名中第2个字为“明”字的学生学号、性别。3查询 1001课程没有成绩的学生学号、课程号 4查询jsj 、sx、wl 系的年龄大于25岁的学生学号,姓名,结果按系排列 5按10分制查询学生的sno,cno,10分制成绩 (1-10分为1 ,11-20分为2 ,30-39分为3,。。。90-100为10)6查询student 表中的学生共分布在那几个系中。(distinct)7查询0001号学生1001,1002课程的成绩。 二统计 1查询姓名中有“明”字的学生人数。 2计算‘jsj’系的平均年龄及最大年龄。 3查询学生中姓名为张明、赵英的人数 4计算每一门课的总分、平均分,最高分、最低分,按平均分由高到低排列 5 计算1001,1002 课程的平均分。 6 查询平均分大于80分的学生学号及平均分 7 统计选修课程超过 2 门的学生学号 8 统计有10位成绩大于85分以上的课程号。 9 统计平均分不及格的学生学号 10 统计有大于两门课不及格的学生学号 三连接 1查询 jsj 系的学生选修的课程号 2查询选修1002 课程的学生的学生姓名(不用嵌套及嵌套2种方法) 3查询数据库原理不及格的学生学号及成绩 4查询选修“数据库原理”课且成绩 80 以上的学生姓名(不用嵌套及嵌套2种方法)5查询平均分不及格的学生的学号,姓名,平均分。6查询女学生平均分高于75分的学生姓名。 7查询男学生学号、姓名、课程号、成绩。(一门课程也没有选修的男学生也要列出,不能 四嵌套、相关及其他 1 查询平均分不及格的学生人数 2 查询没有选修1002 课程的学生的学生姓名

关系数据库语言SQL习题与答案

关系数据库语言SQL习题与答案 一,选择题 1,下面关于SQL语言的叙述中,哪一条是错误的( ). A.SQL既可作为联机交互环境中的查询语言又可嵌入到主语言中 B.SQL没有数据控制功能 C.使用SQL用户只能定义索引而不能引用索引 D.使用SQL用户可以定义和检索视图 2,SQL语言是( ) A.高级语言 B.编程语言 C.结构化查询语言 D.宿主语言 3,在学生数据库中,用SQL语句列出的所有女生的姓名,应该对学生关系进行( )操作. A.选择 B.连接 C.投影 D.选择和投影 4,NULL是指( )

A.0 B.空格 C.无任何值 D.空字符串 5,下列哪条语句不属于SQL数据操纵功能范围( ) A.SELECT B. CREAT TABLE C.DELETE D.INSERT 6,用( )命令可建立唯一索引 A.CREATE TABLE B.CREATE CLUSTER C.CREATE INDEX D.CREATE UNIQUE INDEX 二,填空题 1,SQL语言的使用方式有两种,一种是 ,另一种是 2,在SQL查询中,WHERE子句的功能是 . 3,视图是一个虚表,它是从的表. 4,SQL语言的数据操纵功能包括 , , ,和 , 5,在SQL支持的关系数据库三级模式结构中,外模式对应于 ,模式对应于 ,内模式对应于 . 6,在SELECT语句中,HAVING子句必须跟在子句后面.

三,问题及操作题 1,名词解释 SQL模式 SQL数据库基本表视图相关子查询联接查询 嵌入式SQL 游标 2,对于教学数据库的三个基本表 学生 S(S#,SNAME,AGE,SEX) 学习 SC(S#,C#,GRADE) 课程 C(C#,CNAME,TEACHER) 试用SQL的查询语句表达下列查询: (1)检索LIU老师所授课程的课程号和课程名. (2)检索年龄大于23岁的男学生的学号和姓名. (3)检索至少选修LIU老师所授课程中一门课程的女学生姓名. ( 4) 检索WANG同学不学的课程的课程号. (5)检索至少选修两门课程的学生学号.

SQL语句练习及答案

sql语句(yǔjù)练习题1 数据库有如下(rúxià)四个表格: student(sno,sname,sage,ssex,sdpt) 学生(xué sheng)表 系表(dptno,dname) course(cno,cname, gradet, tno) 课程表 sc(sno,cno,score) 成绩表 teacher(tno,tname) 教师(jiàoshī)表 要求:完成以下(yǐxià)操作 1.查询姓"欧阳"且全名为三个汉字的学生的姓名。 select sname from student where sname like “欧阳__‟; 2.查询名字中第2个字为"阳"字的学生的姓名和学号。 select sname,sno from student where sname like '_阳%'; 3.查询所有不姓刘的学生姓名。 select sname,sno,ssex from student where sname not like “刘%”;

4.查询db_design课程的课程号和学分。 select cno,ccredit from course where cname like 'db_design' 5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。 select * from course where cname like 'db%i_ _'; 6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。 查询缺少成绩的学生的学号和相应的课程号。 select sno,cno from sc where grade is null; 7.查所有有成绩的学生(xué sheng)学号和课程号。 select sno,cno from sc where grade is not null; 8.查询计算机系年龄在20岁以下(yǐxià)的学生姓名。 select sname from student where sdept= 'cs' and sage<20; 9.查询选修了3号课程的学生的学号及其成绩(chéngjì),查询结果按分数降 序排列。

数据库SQL试题(后附答案)

一、概念选择题(每题1分,共45分) 1.()是位于用户和操作系统之间的一层数据管理软件。数据库在建立、使用和维护时由其统一管理、统一控制。 A.DBMS B.DB C.DBS D.DBA 2.在数据库系统的三级模式结构中,用来描述数据的全局逻辑结构的是()。 A.子模式B.用户模式C.模式D.存储模式 3.下列选项中,不属于数据库特点的是()。 A.数据共享B.数据完整性C.数据冗余很高D.数据独立性高 4.要保证数据库逻辑数据独立性,需要修改的是()。 A.模式B.模式与内模式的映射 C.模式与外模式的映射D.内模式 5.在关系数据库中,视图是三级模式结构中的()。 A.内模式B.模式C.存储模式D.外模式 6.在数据库中可以创建和删除表、视图、索引,可以修改表,这是因为DBMS提供了()。 A.数据定义功能B.数据查询功能C.数据操作功能D.数据控制功能 7.数据库DB、数据库系统DBS、数据库管理系统DBMS三者之间的关系是()。 A.DBS包括DB和DBMS B.DBMS包括DB和DBS C.DB包括DBS和DBMS D.DBS包括DB,也就是DBMS 8.数据库系统的数据独立性体现在()。 A.不会因为数据的变化而影响到应用程序 B.不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序 C.不会因为存储策略的变化而影响存储结构 D.不会因为某些存储结构的变化而影响其他存储结构 9.E-R图用于描述数据库的()。 A.概念模型B.数据模型C.存储模式D.外模式 10.对于现实世界中事物的特征,在实体—联系模型中使用() A.属性描述B.关键字描述C.二维表格描述D.实体描述 11.参照完整性规则:表的()必须是另一个表主键的有效值,或者是空值。 A.候选键B.外键C.主键D.主属性 12.在关系模式中,实现“关系中不允许出现相同的元组”的约束是()约束。 A.候选键B.主键C.外键D.超键 13.约束“年龄限制在18~30岁之间”属于DBMS的()功能。 A.安全性B.完整性C.并发控制D.恢复 14.反映现实世界中实体及实体间联系的信息模式是()。 A.关系模型B.层次模型C.网状模型D.E-R模型 1 /

SQL数据库习题及答案

SQL数据库习题及答案 1.模型中,同一个关系中的不同属性,其属性名__B__。A. 可以相同 B. 不能相同C. 可以相同,但数据类型不同 D. 必须相同 2.数据库系统由数据库、A组成。A.DBMS、应用程序、支持数据库运行的软硬件环境和DBA 3.计算机数据管理技术的发展可以划分为三个阶段,在某个阶段数据是以文件形式长期存储在辅助存储器中,程序和数据之间具有相对的独立性,数据不再属于某个特定的应用程序,数据可以重复使用,该阶段是B。B.文件管理阶段C.数据库管理阶段D.信息管理系统阶段 4.在数据库的三级体系结构中,数据库的模式对应于数据库的D B.内部视图C.存储视图D.概念视图 5.在数据库的三级体系结构中,数据的逻辑独立性是通过D来实现的。D.外模式-模式映射 6.三层C/S结构包括客户机、应用服务器和数据库服务器三部分。 7.DDL是指数据描述语言,DML是指数据操纵-查询语言,DBMS是指数据库管理系统,DD是指数据字典。 8.在SPARC结构中,定义的数据库三层结构分别是外模式、模式和内模式。9.数据的独立性包括物理独立性和逻辑独立性两个方面。 10.实体集之间的联系有三种,分别是一对一的联系,一对多的联系,多对多的联系11.试说明数据管理的数据库阶段的主要特点。答:数据库管理的数据库阶段主要特点是:1、数据共享性;2、具有较高的数据与程序的独立性;3、便于对数据实行集中统一的控制。12.试说明DBMS的组成。答:DBMS是由一系列软件构成的复杂系统,一般来说DBMS由下列三类软件组成:语言系统;控制数据库运行的程序;数据库维护程序;13.数据模型的三要素是什么?答:数据模型的三要素是数据结构、数据操作、数据的约束条件。14.关系模型有什么特点?答:关系模型有什么特点:1、关系模型与非关系模型不同,它是建立在严格的数学概念基础上的;2、关系模型的概念单一,无论实体或实体之间的联系都用关系表示3、存取路径对用户透明。4、关系必须是规范化的关系。 第二章关系数据库基本理论 1.下列不属于关系代数运算的是 A 。A.查询B.投影C.选择D.联

sql语句练习题及答案

sql语句练习题及答案

一在数据库 school 中建立student , sc, course 表。 学生表、课程表、选课表属于数据库School ,其各自的数据结构如下: 学生Student (Sno,Sname,Ssex,Sage,Sdept) 序号列名含义数据类型长 度 1 Sno 学号字符型 (char) 6 2 Sname 姓名字符型 (varchar) 8 3 Ssex 性别字符型 (char) 2 4 Sage 年龄整数 (smallint) 5 sdept 系科字符型 (varchar) 15 课程表course(Cno,Cname,Cpno,Ccredit) 序列名含义数据类型长

号度 1 Cno 课程 号字符型(char) 4 2 cname 课程 名字符型(varchar) 20 3 Cpno 先修 课字符型(char) 4 4 Ccredi t 学分短整数 (tinyint) 学生选课SC(Sno,Cno,Grade) 序号列名含义数据类型长 度 1 Sno 学号字符型 (char) 6 2 Cno 课程 号字符型(char) 4 3 Grade 成绩小数 (decimal) 12, 2 二设定主码 1 Student表的主码:sno

2 Course表的主码:cno 3 Sc表的主码:sno,cno 1写出使用 Create Table 语句创建表 student , sc, course 的SQL语句 2在student表中插入信息 学号姓名性别年龄系科 4001 赵茵男20 SX 4002 杨华女21 JSJ 3 删除student表中的元组 4在数据库school中删除关系student 5在student表添加属性sbirthdate 类型datetime 练习 Delete 1 删除所有JSJ 系的男生delete from Student where Sdept=’JSJ’ and Ssex=’男’;

相关文档