第六章 数据库基础01
数据库系统基础教程第六章答案

Solutions Chapter 6Attributes must be separated by commas. Thus here B is an alias of A.6.1.2a)SELECT address AS Studio_AddressFROM StudioWHERE NAME = 'MGM';b)SELECT birthdate AS Star_BirthdateFROM MovieStarWHERE name = 'Sandra Bullock';c)SELECT starNameFROM StarsInWHERE movieYear = 1980OR movieTitle LIKE '%Love%';However, above query will also return words that have the substring Love e.g. Lover. Below query will only return movies that have title containing the word Love.SELECT starNameFROM StarsInWHERE movieYear = 1980OR movieTitle LIKE 'Love %'OR movieTitle LIKE '% Love %'OR movieTitle LIKE '% Love'OR movieTitle = 'Love';d)SELECT name AS Exec_NameFROM MovieExecWHERE netWorth >= 10000000;e)SELECT name AS Star_NameFROM movieStarWHERE gender = 'M'OR address LIKE '% Malibu %';a)SELECT model,speed,hdFROM PCWHERE price < 1000 ;MODEL SPEED HD----- ---------- ------1002 2.10 2501003 1.42 801004 2.80 2501005 3.20 2501007 2.20 2001008 2.20 2501009 2.00 2501010 2.80 3001011 1.86 1601012 2.80 1601013 3.06 8011 record(s) selected.b)SELECT model ,speed AS gigahertz,hd AS gigabytesFROM PCWHERE price < 1000 ;MODEL GIGAHERTZ GIGABYTES ----- ---------- ---------1002 2.10 2501003 1.42 801004 2.80 2501005 3.20 2501007 2.20 2001008 2.20 2501009 2.00 2501010 2.80 3001011 1.86 1601012 2.80 1601013 3.06 8011 record(s) selected.c)SELECT makerFROM ProductWHERE TYPE = 'printer' ; MAKER-----DDEEEHH7 record(s) selected.d)SELECT model,ram ,screenFROM LaptopWHERE price > 1500 ; MODEL RAM SCREEN ----- ------ -------2001 2048 20.12005 1024 17.02006 2048 15.42010 2048 15.44 record(s) selected.e)SELECT *FROM PrinterWHERE color ;MODEL CASE TYPE PRICE----- ----- -------- ------3001 TRUE ink-jet 993003 TRUE laser 9993004 TRUE ink-jet 1203006 TRUE ink-jet 1003007 TRUE laser 2005 record(s) selected.Note: Implementation of Boolean type is optional in SQL standard (feature IDT031). PostgreSQL has implementation similar to above example. Other DBMS provide equivalent support. E.g. In DB2 the column type can be declare as SMALLINT with CONSTRAINT that the value can be 0 or 1. The result can be returned as Boolean type CHAR using CASE.CREATE TABLE Printer(model CHAR(4) UNIQUE NOT NULL,color SMALLINT ,type VARCHAR(8) ,price SMALLINT ,CONSTRAINT Printer_ISCOLOR CHECK(color IN(0,1)));SELECT model,CASE colorWHEN 1THEN 'TRUE'WHEN 0THEN 'FALSE'ELSE 'ERROR'END CASE ,type,priceFROM PrinterWHERE color = 1;f)SELECT model,hdFROM PCWHERE speed = 3.2AND price < 2000;MODEL HD----- ------1005 2501006 3202 record(s) selected.6.1.4a)SELECT class,countryFROM ClassesWHERE numGuns >= 10 ; CLASS COUNTRY------------------ ------------ Tennessee USA1 record(s) selected.b)SELECT name AS shipName FROM ShipsWHERE launched < 1918 ; SHIPNAME------------------HarunaHieiKirishimaKongoRamilliesRenownRepulseResolutionRevengeRoyal OakRoyal Sovereign11 record(s) selected.c)SELECT ship AS shipName, battleFROM OutcomesWHERE result = 'sunk' ; SHIPNAME BATTLE------------------ ------------------ Arizona Pearl Harbor Bismark Denmark Strait Fuso Surigao Strait Hood Denmark Strait Kirishima Guadalcanal Scharnhorst North Cape Yamashiro Surigao Strait 7 record(s) selected.d)SELECT name AS shipNameFROM ShipsWHERE name = class ;SHIPNAME------------------IowaKongoNorth CarolinaRenownRevengeYamato6 record(s) selected.e)SELECT name AS shipNameFROM ShipsWHERE name LIKE 'R%';SHIPNAME------------------RamilliesRenownRepulseResolutionRevengeRoyal OakRoyal Sovereign7 record(s) selected.Note: As mentioned in exercise 2.4.3, there are some dangling pointers and to retrieve all ships a UNION of Ships and Outcomes is required.Below query returns 8 rows including ship named Rodney.SELECT name AS shipNameFROM ShipsWHERE name LIKE 'R%'UNIONSELECT ship AS shipNameFROM OutcomesWHERE ship LIKE 'R%';f) Only using a filter like '% % %' will incorrectly match name such as ' a b ' since % can match any sequence of 0 or more characters.SELECT name AS shipNameFROM ShipsWHERE name LIKE '_% _% _%' ;SHIPNAME------------------0 record(s) selected.Note: As in (e), UNION with results from Outcomes.SELECT name AS shipNameFROM ShipsWHERE name LIKE '_% _% _%'UNIONSELECT ship AS shipNameFROM OutcomesWHERE ship LIKE '_% _% _%' ;SHIPNAME------------------Duke of YorkKing George VPrince of Wales3 record(s) selected.6.1.5a)The resulting expression is false when neither of (a=10) or (b=20) is TRUE.a = 10b = 20 a = 10 OR b = 20NULL TRUE TRUETRUE NULL TRUEFALSE TRUE TRUETRUE FALSE TRUETRUE TRUE TRUEb)The resulting expression is only TRUE when both (a=10) and (b=20) are TRUE.a = 10b = 20 a = 10 AND b = 20TRUE TRUE TRUEThe expression is always TRUE unless a is NULL.a < 10 a >= 10 a = 10 ANDb = 20TRUE FALSE TRUEFALSE TRUE TRUEd)The expression is TRUE when a=b except when the values are NULL.a b a = bNOT NULL NOT NULL TRUE when a=b; else FALSEe)Like in (d), the expression is TRUE when a<=b except when the values are NULL.a b a <= bNOT NULL NOT NULL TRUE when a<=b; else FALSE6.1.6SELECT *FROM MoviesWHERE LENGTH IS NOT NULL;6.2.1a)SELECT AS starNameFROM MovieStar M,StarsIn SWHERE = S.starNameAND S.movieTitle = 'Titanic'AND M.gender = 'M';b)SELECT S.starNameFROM Movies M ,StarsIn S,Studios TWHERE ='MGM'AND M.year = 1995AND M.title = S.movieTitleAND M.studioName = ;SELECT AS presidentName FROM MovieExec X,Studio TWHERE X.cert# = T.presC#AND = 'MGM';d)SELECT M1.titleFROM Movies M1,Movies M2WHERE M1.length > M2.lengthAND M2.title ='Gone With the Wind' ;e)SELECT AS execNameFROM MovieExec X1,MovieExec X2WHERE Worth > WorthAND = 'Merv Griffin' ;6.2.2a)SELECT R.maker AS manufacturer,L.speed AS gigahertzFROM Product R,Laptop LWHERE L.hd >= 30AND R.model = L.model ; MANUFACTURER GIGAHERTZ------------ ----------A 2.00A 2.16A 2.00B 1.83E 2.00E 1.73E 1.80F 1.60F 1.60G 2.0010 record(s) selected.SELECT R.model,P.priceFROM Product R,PC PWHERE R.maker = 'B'AND R.model = P.model UNIONSELECT R.model,L.priceFROM Product R,Laptop LWHERE R.maker = 'B'AND R.model = L.model UNIONSELECT R.model,T.priceFROM Product R,Printer TWHERE R.maker = 'B'AND R.model = T.model ; MODEL PRICE----- ------1004 6491005 6301006 10492007 14294 record(s) selected.c)SELECT R.makerFROM Product R,Laptop LWHERE R.model = L.model EXCEPTSELECT R.makerFROM Product R,PC PWHERE R.model = P.model ; MAKER-----FG2 record(s) selected.SELECT DISTINCT P1.hd FROM PC P1,PC P2WHERE P1.hd =P2.hdAND P1.model > P2.model ; Alternate Answer:SELECT DISTINCT P.hdFROM PC PGROUP BY P.hdHAVING COUNT(P.model) >= 2 ;e)SELECT P1.model,P2.modelFROM PC P1,PC P2WHERE P1.speed = P2.speed AND P1.ram = P2.ramAND P1.model < P2.model ; MODEL MODEL----- -----1004 10121 record(s) selected.f)SELECT M.makerFROM(SELECT maker,R.modelFROM PC P,Product RWHERE SPEED >= 3.0AND P.model=R.modelUNIONSELECT maker,R.modelFROM Laptop L,Product RWHERE speed >= 3.0AND L.model=R.model) MGROUP BY M.makerHAVING COUNT(M.model) >= 2 ; MAKER-----B1 record(s) selected.6.2.3a)SELECT FROM Ships S,Classes CWHERE S.class = C.classAND C.displacement > 35000;NAME------------------IowaMissouriMusashiNew JerseyNorth CarolinaWashingtonWisconsinYamato8 record(s) selected.b)SELECT ,C.displacement,C.numGunsFROM Ships S ,Outcomes O,Classes CWHERE = O.shipAND S.class = C.classAND O.battle = 'Guadalcanal' ;NAME DISPLACEMENT NUMGUNS------------------ ------------ -------Kirishima 32000 8Washington 37000 92 record(s) selected.Note:South Dakota was also engaged in battle of Guadalcanal but not chosen since it is not in Ships table(Hence, no information regarding it's Class isavailable).SELECT name shipName FROM ShipsUNIONSELECT ship shipName FROM Outcomes ; SHIPNAME------------------ArizonaBismarkCaliforniaDuke of YorkFusoHarunaHieiHoodIowaKing George VKirishimaKongoMissouriMusashiNew JerseyNorth CarolinaPrince of Wales RamilliesRenownRepulseResolutionRevengeRodneyRoyal OakRoyal Sovereign ScharnhorstSouth DakotaTenneseeTennesseeWashingtonWest VirginiaWisconsinYamashiroYamato34 record(s) selected.SELECT C1.countryFROM Classes C1,Classes C2WHERE C1.country = C2.country AND C1.type = 'bb'AND C2.type = 'bc' ; COUNTRY------------Gt. BritainJapan2 record(s) selected.e)SELECT O1.shipFROM Outcomes O1,Battles B1WHERE O1.battle = AND O1.result = 'damaged'AND EXISTS(SELECT B2.dateFROM Outcomes O2,Battles B2WHERE O2.battle= AND O1.ship = O2.shipAND B1.date < B2.date) ;SHIP------------------0 record(s) selected.f)SELECT O.battleFROM Outcomes O,Ships S ,Classes CWHERE O.ship = AND S.class = C.class GROUP BY C.country,O.battleHAVING COUNT(O.ship) > 3; SELECT O.battleFROM Ships S ,Classes C,Outcomes OWHERE C.Class = S.classAND O.ship = GROUP BY C.country,O.battleHAVING COUNT(O.ship) >= 3;6.2.4Since tuple variables are not guaranteed to be unique, every relation Ri should be renamed using an alias. Every tuple variable should be qualified with the alias. Tuple variables for repeating relations will also be distinctlyidentified this way.Thus the query will be likeSELECT A1.COLL1,A1.COLL2,A2.COLL1,…FROM R1 A1,R2 A2,…,Rn AnWH ERE A1.COLL1=A2.COLC2,…6.2.5Again, create a tuple variable for every Ri, i=1,2,...,nThat is, the FROM clause isFROM R1 A1, R2 A2,...,Rn An.Now, build the WHERE clause from C by replacing every reference to some attribute COL1 of Ri by Ai.COL1. In addition apply Natural Join i.e. add condition to check equality of common attribute names between Ri and Ri+1 for all i from 0 to n-1. Also, build the SELECT clause from list of attributes L by replacing every attribute COLj of Ri by Ai.COLj.6.3.1a)SELECT DISTINCT makerFROM ProductWHERE model IN(SELECT modelFROM PCWHERE speed >= 3.0);SELECT DISTINCT R.makerFROM Product RWHERE EXISTS(SELECT P.modelFROM PC PWHERE P.speed >= 3.0AND P.model =R.model);SELECT P1.modelFROM Printer P1WHERE P1.price >= ALL(SELECT P2.priceFROM Printer P2) ;SELECT P1.modelFROM Printer P1WHERE P1.price IN(SELECT MAX(P2.price)FROM Printer P2) ;c)SELECT L.modelFROM Laptop LWHERE L.speed < ANY(SELECT P.speedFROM PC P) ;SELECT L.modelFROM Laptop LWHERE EXISTS(SELECT P.speedFROM PC PWHERE P.speed >= L.speed ) ;SELECT modelFROM(SELECT model,priceFROM PCUNIONSELECT model,priceFROM LaptopUNIONSELECT model,priceFROM Printer) M1WHERE M1.price >= ALL (SELECT priceFROM PCUNIONSELECT priceFROM LaptopUNIONSELECT priceFROM Printer) ;(d) – contd --SELECT modelFROM(SELECT model,priceFROM PCUNIONSELECT model,priceFROM LaptopUNIONSELECT model,priceFROM Printer) M1WHERE M1.price IN(SELECT MAX(price)FROM(SELECT priceFROM PCUNIONSELECT priceFROM LaptopUNIONSELECT priceFROM Printer) M2) ;e)SELECT R.makerFROM Product R,Printer TWHERE R.model =T.model AND T.price <= ALL(SELECT MIN(price)FROM Printer);SELECT R.makerFROM Product R,Printer T1WHERE R.model =T1.model AND T1.price IN(SELECT MIN(T2.price) FROM Printer T2);f)SELECT R1.makerFROM Product R1,PC P1WHERE R1.model=P1.modelAND P1.ram IN(SELECT MIN(ram)FROM PC)AND P1.speed >= ALL(SELECT P1.speedFROM Product R1,PC P1WHERE R1.model=P1.model AND P1.ram IN(SELECT MIN(ram)FROM PC));SELECT R1.makerFROM Product R1,PC P1WHERE R1.model=P1.modelAND P1.ram =(SELECT MIN(ram)FROM PC)AND P1.speed IN(SELECT MAX(P1.speed)FROM Product R1,PC P1WHERE R1.model=P1.model AND P1.ram IN(SELECT MIN(ram)FROM PC));6.3.2a)SELECT C.countryFROM Classes CWHERE numGuns IN(SELECT MAX(numGuns)FROM Classes);SELECT C.countryFROM Classes CWHERE numGuns >= ALL(SELECT numGunsFROM Classes);b)SELECT DISTINCT C.class FROM Classes C,Ships SWHERE C.class = S.classAND EXISTS(SELECT shipFROM Outcomes OWHERE O.result='sunk' AND O.ship = ) ;SELECT DISTINCT C.class FROM Classes C,Ships SWHERE C.class = S.classAND IN(SELECT shipFROM Outcomes OWHERE O.result='sunk' ) ;c)SELECT FROM Ships SWHERE S.class IN(SELECT classFROM Classes CWHERE bore=16) ;SELECT FROM Ships SWHERE EXISTS(SELECT classFROM Classes CWHERE bore =16AND C.class = S.class );SELECT O.battleFROM Outcomes OWHERE O.ship IN(SELECT nameFROM Ships SWHERE S.Class ='Kongo' );SELECT O.battleFROM Outcomes OWHERE EXISTS(SELECT nameFROM Ships SWHERE S.Class ='Kongo' AND = O.ship );SELECT FROM Ships S,Classes CWHERE S.Class = C.ClassAND numGuns >= ALL(SELECT numGunsFROM Ships S2,Classes C2WHERE S2.Class = C2.Class AND C2.bore = C.bore) ;SELECT FROM Ships S,Classes CWHERE S.Class = C.ClassAND numGuns IN(SELECT MAX(numGuns)FROM Ships S2,Classes C2WHERE S2.Class = C2.Class AND C2.bore = C.bore) ;Better answer;SELECT FROM Ships S,Classes CWHERE S.Class = C.ClassAND numGuns >= ALL(SELECT numGunsFROM Classes C2WHERE C2.bore = C.bore) ;SELECT FROM Ships S,Classes CWHERE S.Class = C.ClassAND numGuns IN(SELECT MAX(numGuns)FROM Classes C2WHERE C2.bore = C.bore) ;6.3.3SELECT titleFROM MoviesGROUP BY titleHAVING COUNT(title) > 1 ;6.3.4SELECT FROM Ships S,Classes CWHERE S.Class = C.Class ;Assumption: In R1 join R2, the rows of R2 are unique on the joining columns. SELECT COLL12,COLL13,COLL14FROM R1WHERE COLL12 IN(SELECT COL22FROM R2)AND COLL13 IN(SELECT COL33FROM R3)AND COLL14 IN(SELECT COL44FROM R4) ...6.3.5(a)SELECT ,S.addressFROM MovieStar S,MovieExec EWHERE S.gender ='F'AND Worth > 10000000AND = AND S.address = E.address ;Note: As mentioned previously in the book, the names of stars are unique. However no such restriction exists for executives. Thus, both name and address are required as join columns.Alternate solution:SELECT name,addressFROM MovieStarWHERE gender = 'F'AND (name, address) IN(SELECT name,addressFROM MovieExecWHERE netWorth > 10000000) ;(b)SELECT name,addressFROM MovieStarWHERE (name,address) NOT IN(SELECT name addressFROM MovieExec) ;6.3.6By replacing the column in subquery with a constant and using IN subquery forthe constant, statement equivalent to EXISTS can be found.i.e. replace "WHERE EXISTS (SELECT C1 FROM R1..)" by "WHERE 1 IN (SELECT 1 FROM R1...)"Example:SELECT DISTINCT R.makerFROM Product RWHERE EXISTS(SELECT P.modelFROM PC PWHERE P.speed >= 3.0AND P.model =R.model) ;Above statement can be transformed to below statement.SELECT DISTINCT R.makerFROM Product RWHERE 1 IN(SELECT 1FROM PC PWHERE P.speed >= 3.0AND P.model =R.model) ;6.3.7(a)n*m tuples are returned where there are n studios and m executives. Each studiowill appear m times; once for every exec.(b)There are no common attributes between StarsIn and MovieStar; hence no tuplesare returned.(c)There will be at least one tuple corresponding to each star in MovieStar. Theunemployed stars will appear once with null values for StarsIn. All employedstars will appear as many times as the number of movies they are working in. Inother words, for each tuple in StarsIn(starName), the correspoding tuple fromMovieStar(name)) is joined and returned. For tuples in MovieStar that do nothave a corresponding entry in StarsIn, the MovieStar tuple is returned with nullvalues for StarsIn columns.6.3.8Since model numbers are unique, a full natural outer join of PC, Laptop andPrinter will return one row for each model. We want all information about PCs,Laptops and Printers even if the model does not appear in Product but vice versais not true. Thus a left natural outer join between Product and result above isrequired. The type attribute from Product must be renamed since Printer has atype attribute as well and the two attributes are different.(SELECT maker,model,type AS productTypeFROM Product) RIGHT NATURAL OUTER JOIN ((PC FULL NATURAL OUTER JOIN Laptop) FULL NATURAL OUTER JOIN Printer);Alternately, the Product relation can be joined individually with each ofPC,Laptop and Printer and the three results can be Unioned together. Forattributes that do not exist in one relation, a constant such as 'NA' or 0.0 canbe used. Below is an example of this approach using PC and Laptop.SELECT R.MAKER ,R.MODEL ,R.TYPE ,P.SPEED ,P.RAM ,P.HD ,0.0 AS SCREEN,P.PRICEFROM PRODUCT R,PC PWHERE R.MODEL = P.MODELUNIONSELECT R.MAKER ,R.MODEL ,R.TYPE ,L.SPEED ,L.RAM ,L.HD ,L.SCREEN,L.PRICEFROM PRODUCT R,LAPTOP LWHERE R.MODEL = L.MODEL;6.3.9SELECT *FROM Classes RIGHT NATURALOUTER JOIN Ships ;6.3.10SELECT *FROM Classes RIGHT NATURALOUTER JOIN ShipsUNION(SELECT C2.class ,C2.type ,C2.country ,C2.numguns ,C2.bore ,C2.displacement,C2.class NAME ,FROM Classes C2,Ships S2WHERE C2.Class NOT IN(SELECT ClassFROM Ships)) ;6.3.11(a)SELECT *FROM R,S ;(b)Let Attr consist ofAttrR = attributes unique to RAttrS = attributes unique to SAttrU = attributes common to R and SThus in Attr, attributes common to R and S are not repeated. SELECT AttrFROM R,SWHERE R.AttrU1 = S.AttrU1AND R.AttrU2 = S.AttrU2 ...AND R.AttrUi = S.AttrUi ;(c)SELECT *FROM R,SWHERE C ;6.4.1(a)DISTINCT keyword is not required here since each model only occurs once in PC relation.SELECT modelFROM PCWHERE speed >= 3.0 ;(b)SELECT DISTINCT R.makerFROM Product R,Laptop LWHERE R.model = L.modelAND L.hd > 100 ;(c)SELECT R.model,P.priceFROM Product R,PC PWHERE R.model = P.modelAND R.maker = 'B'UNIONSELECT R.model,L.priceFROM Product R,Laptop LWHERE R.model = L.modelAND R.maker = 'B'UNIONSELECT R.model,T.priceFROM Product R,Printer TWHERE R.model = T.modelAND R.maker = 'B' ;SELECT modelFROM PrinterWHERE color=TRUEAND type ='laser' ;(e)SELECT DISTINCT R.makerFROM Product R,Laptop LWHERE R.model = L.modelAND R.maker NOT IN(SELECT R1.makerFROM Product R1,PC PWHERE R1.model = P.model) ;better:SELECT DISTINCT R.makerFROM Product RWHERE R.type = 'laptop'AND R.maker NOT IN(SELECT R.makerFROM Product RWHERE R.type = 'pc') ;(f)With GROUP BY hd, DISTINCT keyword is not required. SELECT hdFROM PCGROUP BY hdHAVING COUNT(hd) > 1 ;(g)SELECT P1.model,P2.modelFROM PC P1,PC P2WHERE P1.speed = P2.speedAND P1.ram = P2.ramAND P1.model < P2.model ;SELECT R.makerFROM Product RWHERE R.model IN(SELECT P.modelFROM PC PWHERE P.speed >= 2.8)OR R.model IN(SELECT L.modelFROM Laptop LWHERE L.speed >= 2.8)GROUP BY R.makerHAVING COUNT(R.model) > 1 ;(i)After finding the maximum speed, an IN subquery can provide the manufacturer name.SELECT MAX(M.speed)FROM(SELECT speedFROM PCUNIONSELECT speedFROM Laptop) M ;SELECT R.makerFROM Product R,PC PWHERE R.model = P.modelAND P.speed IN(SELECT MAX(M.speed)FROM(SELECT speedFROM PCUNIONSELECT speedFROM Laptop) M)UNIONSELECT R2.makerFROM Product R2,Laptop LWHERE R2.model = L.modelAND L.speed IN(SELECT MAX(N.speed)FROM(SELECT speedFROM PCUNIONSELECT speedFROM Laptop) N) ;Alternately,SELECT COALESCE(MAX(P2.speed),MAX(L2.speed),0) SPEED FROM PC P2FULL OUTER JOIN Laptop L2ON P2.speed = L2.speed ;SELECT R.makerFROM Product R,PC PWHERE R.model = P.modelAND P.speed IN(SELECT COALESCE(MAX(P2.speed),MAX(L2.speed),0) SPEED FROM PC P2FULL OUTER JOIN Laptop L2ON P2.speed = L2.speed)UNIONSELECT R2.makerFROM Product R2,Laptop LWHERE R2.model = L.modelAND L.speed IN(SELECT COALESCE(MAX(P2.speed),MAX(L2.speed),0) SPEED FROM PC P2FULL OUTER JOIN Laptop L2ON P2.speed = L2.speed)SELECT R.makerFROM Product R,PC PWHERE R.model = P.modelGROUP BY R.makerHAVING COUNT(DISTINCT speed) >= 3 ;(k)SELECT R.makerFROM Product R,PC PWHERE R.model = P.modelGROUP BY R.makerHAVING COUNT(R.model) = 3 ;better;SELECT R.makerFROM Product RWHERE R.type='pc'GROUP BY R.makerHAVING COUNT(R.model) = 3 ;6.4.2(a)We can assume that class is unique in Classes and DISTINCT keyword is not required.SELECT class,countryFROM ClassesWHERE bore >= 16 ;(b)Ship names are not unique (In absence of hull codes, year of launch can help distinguish ships).SELECT DISTINCT name AS Ship_NameFROM ShipsWHERE launched < 1921 ;(c)SELECT DISTINCT ship AS Ship_NameFROM OutcomesWHERE battle = 'Denmark Strait'AND result = 'sunk' ;(d)SELECT DISTINCT AS Ship_NameFROM Ships S,Classes CWHERE S.class = C.classAND C.displacement > 35000 ;SELECT DISTINCT O.ship AS Ship_Name,C.displacement ,C.numGunsFROM Classes C ,Outcomes O,Ships SWHERE C.class = S.classAND = O.shipAND O.battle = 'Guadalcanal' ;SHIP_NAME DISPLACEMENT NUMGUNS------------------ ------------ -------Kirishima 32000 8Washington 37000 92 record(s) selected.Note: South Dakota was also in Guadalcanal but its class information is not available. Below query will return name of all ships that were in Guadalcanal even if no other information is available (shown as NULL). The above query is modified from INNER joins to LEFT OUTER joins.SELECT DISTINCT O.ship AS Ship_Name,C.displacement ,C.numGunsFROM Outcomes OLEFT JOIN Ships SON = O.shipLEFT JOIN Classes CON C.class = S.classWHERE O.battle = 'Guadalcanal' ;SHIP_NAME DISPLACEMENT NUMGUNS------------------ ------------ -------Kirishima 32000 8South Dakota - -Washington 37000 93 record(s) selected.(f)The Set opearator UNION guarantees unique results.SELECT ship AS Ship_NameFROM OutcomesUNIONSELECT name AS Ship_NameFROM Ships ;(g)SELECT C.classFROM Classes C,Ships SWHERE C.class = S.classGROUP BY C.classHAVING COUNT() = 1 ;better:SELECT S.classFROM Ships SGROUP BY S.classHAVING COUNT() = 1 ;(h)The Set opearator INTERSECT guarantees unique results.SELECT C.countryFROM Classes CWHERE C.type='bb'INTERSECTSELECT C2.countryFROM Classes C2WHERE C2.type='bc' ;However, above query does not account for classes without any ships belonging to them.SELECT C.countryFROM Classes C,Ships SWHERE C.class = S.classAND C.type ='bb'INTERSECTSELECT C2.countryFROM Classes C2,Ships S2WHERE C2.class = S2.classAND C2.type ='bc' ;SELECT O2.ship AS Ship_Name FROM Outcomes O2,Battles B2WHERE O2.battle = AND B2.date > ANY(SELECT B.dateFROM Outcomes O,Battles BWHERE O.battle = AND O.result ='damaged' AND O.ship = O2.ship);6.4.3a)SELECT DISTINCT R.maker FROM Product R,PC PWHERE R.model = P.modelAND P.speed >= 3.0;b)Models are unique.SELECT P1.modelFROM Printer P1LEFT OUTER JOIN Printer P2 ON (P1.price < P2.price) WHERE P2.model IS NULL ;c)SELECT DISTINCT L.model FROM Laptop L,PC PWHERE L.speed < P.speed ;Due to set operator UNION, unique results are returned.It is difficult to completely avoid a subquery here. One option is to use Views. CREATE VIEW AllProduct ASSELECT model,priceFROM PCUNIONSELECT model,priceFROM LaptopUNIONSELECT model,priceFROM Printer ;SELECT A1.modelFROM AllProduct A1LEFT OUTER JOIN AllProduct A2ON (A1.price < A2.price)WHERE A2.model IS NULL ;But if we replace the View, the query contains a FROM subquery. SELECT A1.modelFROM(SELECT model,priceFROM PCUNIONSELECT model,priceFROM LaptopUNIONSELECT model,priceFROM Printer) A1LEFT OUTER JOIN(SELECT model,priceFROM PCUNIONSELECT model,priceFROM LaptopUNIONSELECT model,priceFROM Printer) A2ON (A1.price < A2.price) WHERE A2.model IS NULL ;e)SELECT DISTINCT R.makerFROM Product R,Printer TWHERE R.model =T.modelAND T.price <= ALL(SELECT MIN(price)FROM Printer);f)SELECT DISTINCT R1.makerFROM Product R1,PC P1WHERE R1.model=P1.modelAND P1.ram IN(SELECT MIN(ram)FROM PC)AND P1.speed >= ALL(SELECT P1.speedFROM Product R1,PC P1WHERE R1.model=P1.modelAND P1.ram IN(SELECT MIN(ram)FROM PC));6.4.4a)SELECT DISTINCT C1.countryFROM Classes C1LEFT OUTER JOIN Classes C2 ON (C1.numGuns < C2.numGuns) WHERE C2.country IS NULL ;。
数据库基础及其应用第六章课后作业

第六章Access数据库管理系统的简单应用二、单选题1.Access数据库是(C)。
A.层状数据库 B.网状数据库 C.关系型数据库 D.树状数据库2.Access数据库文件的扩展名是(D)。
A.dbf B.dbt C.mdf D.mdb3.数据库文件中包含有(D)对象。
A.表 B.查询 C.窗体 D.以上都包含4.如果某一字段数据型为文本型,字段大小为8,该字段中最多可输入(B)个汉字。
A.8 B.4 C.16 D.325.如果字段内容为声音文件,可将此字段定义为(C)类型。
A.文本 B.查询向导 C.OLE对象 D.备注6.一般情况下,以下哪个字段可以作为主关键字(D)。
A.基本工资 B.职称 C.姓名 D.身份证号码7.下面有关主键的叙述正确的是(B)。
A.不同的记录可以具有重复的主键值或空值 B.一个表中的主键可以是一个或多个字段C.在一个表中的主键只可以是一个字段D.表中的主键的数据类型必须定义为自动编号或文本8.创建表之间的关系时,正确的操作是(B)。
A.关闭当前打开的表 B.打开要建立关系的表 C.关闭所有打开的表 D.关闭与之无关的表9.Access用户操作界面由(B)部分组成。
A.4 B.5 C.3 D.610.Access中包含有(C)个数据库对象。
A.5 B.6 C.7 D.811.下列(B)图标是Access的标志。
A. B. C. D.12.下列(B)图标是Access中查询对象的标志。
A. B. C. D.13.下列(D)图标是Access中新建查询的标志。
A. B. C. D.14.在设计Access数据表时,“索引”属性有(C)个取值。
A.1 B.2 C.3 D.415.字段说明用于对字段作进一步的描述,该说明显示在(A)上。
A.状态栏 B.工具栏 C.菜单栏 D.标题栏16.在Access数据库中,数据保存在(D)对象中。
A.窗体B.查询C.报表D.表17.Access数据库中的“一对多”指的是(B)。
数据库基础理论课件

上一页
要点
下一页
(3) 数据库系统阶段(60年代后期开始):
主要特征:数据实行统一、集中、独立的管理。
数据库系统管理阶段即对所有的数据实行 统一规划管理,形成一个数据中心,构 成一个数据“仓库”。应用程序不再只 与一个孤立的数据文件相对应,可以取 整体数据集的某个子集作为逻辑文件与 其对应,通过数据库管理系统实现逻辑 文件与物理数据之间的映射。
著作 著作 著作 著作 论文
上一页
要点
下一页
3.多对一关系
与1:N关系类似,唯一的区别是在两个相关联的数据 表中,选择哪一个数据表中的关键字段为主关键字 段,该字段值是重复的,与它关联的另一个数据表 中的关键字段为外来关键字段,该字段值是唯一的
编号
专
业
成果类别
bj10001 VF高级编程技术 bj10001 专门人才信息管理系统 bj10001 VF编程技巧与常见问题解答 bj10001 面向对象编程与系统开发 bj10001 面向对象编程与系统程序优化
上一页
要点
下一页
1.4 关系数据库及其设计
1.4.1 关系数据库 关系数据库(Relational Data Base)是
若干个关系的集合。也可以说,关系数据库是 由若干张二维表组成的。
在关系数据库中,将一个关系视为是一张 二维表,又称其为数据表。
一个关系数据库由若干个数据表组成,数 据表又由若干个记录组成,而每一个记录是由 若干个以字段属性加以分类的数据项组成的。
关系的完整性主要包括域完整性、实体完 整性和参照完整性三种。
上一页
要点
下一页
1.4.3 关系运算
关系运算是以关系为运算对象的运算,在关系 运算中,变量是关系,运算结果仍然是关系。
《数据库基础知识》PPT课件

编写触发器与存储过程
根据业务需求编写触发器和存储过程 ,实现复杂业务逻辑。
监控与优化性能
监控数据库性能,定期进行优化和调 整,确保数据库高效运行。
维护数据安全
定期备份数据、修复损坏数据、防范 恶意攻击等,确保数据安全可靠。
05
索引与查询优化技术
索引基本概念及作用
索引定义
索引是数据库中用于快速查找和检索数据的数据结构。
如在线购物网站、拍卖网站等,需要处理 大量的用户信息和交易数据,数据库可以 提供安全、可靠的数据存储和检索功能。
金融系统
科研领域
如银行、证券、保险等金融机构的信息系 统,需要处理大量的金融数据,数据库可 以提供高效的数据处理和分析功能。
如生物信息学、天文学等科研领域,需要处 理大量的实验数据和观测数据,数据库可以 提供灵活的数据存储和管理功能。
关系完整性约束
完整性约束概念
完整性约束是用来保证数据库中数据的正确性和一致性的规则。在关系模型中,完整性约束包括实体 完整性、参照完整性和用户自定义完整性。
完整性约束类型
实体完整性约束要求关系中的主键属性不能取空值;参照完整性约束要求关系中的外键属性取值必须 对应于另一个关系中的主键取值;用户自定义完整性约束则是根据应用需求定义的其他规则。
03
SQL语言基础
SQL语言简介
01
SQL(Structured Query Language)是一种用于管理关系数 据库管理系统的语言。
02
它包括数据插入、查询、更新和删除,数据库模式创建和修改
,以及数据访问控制。
SQL语言简单易学,是开发和管理数据库系统的标准语言。
03
数据定义语言DDL
DDL(Data Defini对象,如表、 索引、触发器等。
第六章 数据库与数据仓库--PZZ

二级映射
为了能够在内部实现这三个抽象层次的联系和转换,数据库管理系统 在这三级模式之间提供了两层映射:外模式—模式映射,模式—内模式映 射。 ①外模式—模式映射 外模式—模式映射定义了该外模式与模式之间的对应关系。这些映射 定义通常包含在各自外模式的描述中。当模式改变时(例如增加新的属性、 改变属性的数据类型时),只要改变其映射,就可以使外模式保持不变,对 应的应用程序也可保持不变(因为应用程序是依据外模式编写的),从而保 证了数据与应用程序的逻辑独立性。 ②模式—内模式映射
彭志忠
一、数据管理技术及其发展
(三)数据库系统阶段
20世纪60年代以来,出现了统一管理数据的专门软件系统—数据库管理 系统(DBMS,DataBase Management System)。 数据库阶段的数据管理特点是: 1、数据结构化。数据结构化是数据库与文件系统的根本区别。
2、较高的数据独立性。用户能以简单的逻辑结构操作数据而无需考虑 数据的物理结构。
3、数据具有一定的独立 性。
《管理信息系统》
山东大学管理学院信息管理系
彭志忠
传统文件处理系统
用户 用户 用户 应用程序1 应用程序2 应用程序3 数据文件1 数据文件2 数据文件3
存在问题:
1、数据冗余与数据不一致性
2、数据联系弱 3、缺少数据字典,缺乏灵活性
《管理信息系统》
山东大学管理学院信息管理系
3、多媒体数据库
多媒体数据具有数据量大 、结构复杂 、数据传输的连续性 等特点。因 而,多媒体数据库需要有特殊的数据结构、存储技术、查询和处理方式。
4、数据仓库
数据仓库,就是一种长期数据存储,这些数据来自于多个异种数据源。 通过数据仓库提供的联机分析处理(OLAP)工具,实现各种粒度的多维数据 分析,以便向管理决策提供支持。
初学者必读的SQL数据库基础教程

初学者必读的SQL数据库基础教程SQL数据库是一种常用的数据库管理系统,广泛应用于各种软件开发和数据管理领域。
对于初学者来说,掌握SQL数据库的基础知识是非常重要的。
本文将从数据定义语言、数据操作语言、数据查询语言和数据控制语言等方面,为初学者提供一份必读的SQL数据库基础教程。
第一章数据定义语言(DDL)数据定义语言(DDL)是SQL数据库中用来定义数据库结构的语言。
它包括创建、修改和删除数据库、表、列以及其他对象的操作。
在SQL中,创建数据库使用CREATE DATABASE语句,创建表使用CREATE TABLE语句,修改表结构使用ALTER TABLE语句,删除表使用DROP TABLE语句等。
初学者在学习时应该了解这些常用的DDL语句,并能够正确地使用它们。
第二章数据操作语言(DML)数据操作语言(DML)是SQL数据库中用来对数据库中的数据进行操作的语言。
它包括插入、更新和删除数据的操作。
在SQL中,插入数据使用INSERT INTO语句,更新数据使用UPDATE语句,删除数据使用DELETE FROM语句等。
初学者需要熟悉这些基本的DML语句,并能够通过它们来操作数据库中的数据。
第三章数据查询语言(DQL)数据查询语言(DQL)是SQL数据库中用来查询数据库中的数据的语言。
它包括SELECT语句和一些用于过滤、排序和聚合数据的函数。
初学者需要掌握SELECT语句的基本用法,了解如何使用WHERE子句进行条件过滤,如何使用ORDER BY子句进行排序,以及如何使用GROUP BY子句进行数据聚合。
第四章数据控制语言(DCL)数据控制语言(DCL)是SQL数据库中用来控制数据库访问权限和事务处理的语言。
它包括GRANT和REVOKE语句用于授权和撤销权限,以及BEGIN TRANSACTION、COMMIT和ROLLBACK语句用于管理事务。
初学者需要了解如何使用DCL语句来管理数据库的安全性和事务一致性。
数据库基础教程(完整版)

数据库基础教程(完整版)第一部分:认识数据库数据库,顾名思义,就是一个用来存储、管理数据的仓库。
在这个信息爆炸的时代,数据已经成为了企业的核心资产,而数据库就是管理这些资产的重要工具。
无论是电商平台、社交媒体,还是企业内部的管理系统,都离不开数据库的支持。
一、数据库的分类1. 关系型数据库:以表的形式组织数据,每个表由行和列组成,行代表记录,列代表字段。
常见的有MySQL、Oracle、SQL Server等。
2. 非关系型数据库:与关系型数据库不同,非关系型数据库的数据结构更加灵活,常见的有MongoDB、Redis、Cassandra等。
3. NoSQL数据库:NoSQL是Not Only SQL的缩写,表示不仅仅是SQL,它包含了非关系型数据库以及一些新型的数据库技术,如NewSQL 等。
二、数据库的组成1. 数据库管理系统(DBMS):负责管理和维护数据库的软件系统,如MySQL、Oracle等。
2. 数据库:存储数据的仓库,由多个表组成。
3. 表:数据库中的基本单位,由行和列组成,行代表记录,列代表字段。
4. 记录:表中的一行数据,代表一个完整的信息。
5. 字段:表中的一列数据,代表记录中的一个属性。
三、数据库的作用1. 数据存储:将数据存储在数据库中,方便管理和查询。
2. 数据管理:通过数据库管理系统,可以对数据进行增删改查等操作。
3. 数据安全:数据库管理系统提供了数据备份、恢复、权限控制等功能,保障数据的安全。
4. 数据共享:多个用户可以同时访问数据库,实现数据共享。
5. 数据分析:通过数据库管理系统,可以对数据进行统计、分析等操作,为企业决策提供依据。
四、学习数据库的必要性1. 提高工作效率:掌握数据库技术,可以快速地处理大量数据,提高工作效率。
2. 适应市场需求:随着互联网的发展,数据库技术已经成为IT 行业的必备技能。
3. 拓展职业发展:学习数据库技术,可以为职业发展打下坚实的基础。
数据库原理与设计(第6章)

职称
职工
职称
工号 姓名 性别 年龄
职工 n
工资
任职
1
职称
住房 津贴
6.3 概念结构设计
例2:在医院中,一个病人只能住在一个病房,病房号可 以作为病人实体的一个属性。但如果病房还要与医生实 体发生联系,即一个医生负责几个病房的病人的医疗工 作,则病房应作为一个实体。
工号 医生 性别 病人 n
数据库的物理设计的内容和方法
对要运行的事务进行分析
–对于查询事务,需得到如下信息
所涉及的关系,查询、连接、投影所涉及的属
性
–对于更新事务,需得到如下信息
所涉及的关系及其属性,要更新的属性值
了解所用RDBMS提供的存取方法 关系模式存取方法选择
–三者以上的联系:相联系实体的码的并构成该关系的码;
相同主码的关系可以合并
E-R图向关系模型转换实例
部门 1 1 天数 领导 1 属于 n n 职工 1 负责 供应商 n
参加
m 产品
m
供应
p 零件
供应量 1
E-R图向关系模型转换实例
部门(部门号,部门名…)
该关系模式由实体“部门”转换
数据库和信息系统
数据库是信息系统的核心和基础 数据库设计是信息系统开发和建设的重要组成部分 数据库系统的设计和开发是涉及多学科的综合性技
术
6.1 数据库设计概述
数据库设计的内容
数据库的结构设计(静态)
–逻辑数据库设计
• 局部逻辑结构 • 全局逻辑结构
–物理数据库设计
• 存储结构
数据库设计步骤
系统需求分析
–需求收集和分析,结果得到数据字典描述的数据需求和数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应用程序1 应用程序2 数 据 库 管理系统 数 据 库
应用程序n
数据库系统阶段
6.1.2 数据库系统
1、数据库(Database)
指按一定的数据结构进行组织的、可共享的、长期保存的相关信息 的集合。即,数据的仓库。
2、数据库管理系统(DBMS)
是对数据进行管理的软件系统,它是数据库管理系统的核心软件。 如ORACLE、SQL SERVER、ACCESS等。
6.1.3 数据库系统的特点
1、数据结构化
3、数据可共享
2、数据冗余小
4、数据独立性强
5、统一管理控制数据
6.1.4 数据库系统体系结构发展
1、集中式数据库管理
早期的DBMS以分时操作系统作为运行环境,采用集中式的数据库 系统结构,把数据库建立在本单位的主计算机上,且不与其他计算机 系统进行数据交互。在这种系统中,不但数据是集中的,数据的管理 也是集中的。
⑵、数据模型的分类: A、层次模型:即,有向树结构。 B、网状模型:即,有向图结构。
C、关系模型:即,“二维表”结构。 层次模型
网状模型
关系模型
6、关系数据库
即,采用关系模型的数据库。以二维表结构来表示各类实体及 其之间的关系。一个关系数据库由许多二维表组成。
- “关系”就是二维表(由行和列组成)。 关系数据库
客户机 客户机 客户机
计算机网络
DB 数据库服务器
3、基于浏览器/服务器结构(B/S)
由浏览器、Web服务器、数据库服务器3个层次组成。客户端使用 一个通用的浏览器代替了各种应用软件。
客户机 客户机 客户机
计算机网络
Web服务器/ 应用服务器
ODBC/JDBC
DB
数据库服务器
4、分布式数据库
数据按其来源和用途,合理地分布在系统的多个地理位置不同的 计算机结点上,使大部分数据能就近存取。
大学计算机基础
主编:蔡绍稷、吉根林
主讲:靖定国
教材:大学计算机基础
• 主要内容:
第1章 计算机与信息技术
第2章
第3章
计算机硬件
计术基础
第6章
数据库基础
第六章 数据库基础
6.1 数据库技术概述 6.2 关系型数据库
6.3 数据库设计
6.4 Access数据库
⑵、计算机支持系统; ②、软件支持系统。 ⑶、数据库DBS; ⑷、数据库管理系统DBMS; ①、数据库管理员(DBA); ⑸、人员。 ②、系统分析和开发人员; ③、用户。
数据库管理系统 各种 应用 程序 数据库管理员 计算 机支 持系 统
数据库
5、数据模型
⑴、概念:
即,描述相互联系的数据结构形式,数据库中采用数据模型是对现实世 界进行抽象,所有的数据库系统均是基于某种数据模型的。
查询命令(SQL)
DBMS
查询结果
数据库
⑴、 SQL的数据查询
①、数据库查询是数据库的核心操作。
SQL语言提供了SELECT语句进行数据库查询。
②、SELECT查询语句简单的形式为:
SELECT FROM A1,A2,…,An(指出目标表的列名或列表达式序列) R1,R2,…,Rm(指出基本表或视图序列) (F为条件表达式)
4、数据处理的三个阶段
⑴、人工管理阶段(50年代中期以前) 这一阶段计算机主要用于科学计算。 硬件中的外存只有卡片、纸带、磁带,没有磁盘等直接存取设备。 软件只有汇编语言,没有操作系统和管理数据的软件。 数据不保存,数据不共享,数据冗余,难于管理
⑵、文件系统阶段(50年代后期至60年代中期) 这一阶段,计算机不仅用于科学计算,还大量用于信息管理。 程序与数据有一定的独立性。 硬件有了磁盘等存储设备;在软件出现了高级语言和操作系统。 有了专门管理数据的软件,一般称为文件系统。但是无法对大量的数 据存储、检索和维护。
数据在物理上分布,由系统统一管理。
6.2 关系型数据库
1、关系模型:
即,“二维表”结构。 ⑴、每一张二维表称为一个关系; ⑵、表中每一行称为一个元组;
⑶、每一列称为一个属性。
⑷、关系名:即,表的名称。 ⑸、主键:能够唯一标识实体的“属性或属性组” 。如:工号、学号。
2、联系:
现实世界中有联系,关系数据库表与表也是有联系的。
n 表B
(a)1:1 联系
(b)1:n 联系
(c)m:n 联系
3、关系型数据库术语
⑴、表
也称关系,由表名、列名和数据行组成。
⑵、列
也称为字段或属性。列都有列名及数据类型。
⑶、行
即,记录(元组)。
⑷、值
数据库的基本信息单位,一般有一定的取值范围。
⑸、SQL语言
数据库语言,SQL(Structured
⑷、物理设计
数据库在物理设备上的存储结构与存取方式。就是为给定的逻辑结 构模型选取一个最合适的应用环境。
6.4
ACCESS(数据库)
1、Microsoft Office Access是由微软发布的关联式数据库管 理系统。是 Microsoft Office的成员之一。
2、提供7种对象 :
– 表对象 – 查询对象 – 窗体对象 – 报表对象 – 数据访问页对象 – 宏对象:实际上是一种特殊的代码。 考点-P251 – 模块对象
3、Access的主要操作
⑴、新建空数据库 ⑵、打开数据库 ⑶、编辑表结构: ①、增加字段; ②、修改字段; ③、删除字段 主键:表中的一个或多个字段,它的值用于惟一地
标识表中的某一条记录。
⑷、编辑表内容 ①、增加记录;
②、修改记录;
4、SQL语句
SQL是关系数据库标准的访问语言,是一种非过程语言。 对用户而言只要说明“做什么”,指出需要何类数据,至于“如何 做”才能获得这些数据的过程,则不必要求用户说明,而由系统来实现。
6.1 数据库技术概述
6.1.1 数据库技术的发展
1、数据: 即,对客观存在事物的一种描述。它可以表现为数字、文字、图象、 声音等。它是数据库存储的基本对象。(有用的数据才称为信息。) 注:数据只有数字化后才能存储在计算机中。 2、数据库(Database) 指按一定的数据结构进行组织的、可共享的、长期保存的相关信息 的集合。即,数据的仓库。 3、数据管理技术: 就是指人们对数据进行收集、组织、存储、加工、传播和利用的一 系列活动的总和。目的是获取有价值的数据。 信息=数据+数据处理
应用程序1
数据文件1
应用程序2
数据文件2
应用程序3
数据文件3
应用程序n
数据文件m
文件管理阶段
⑶、数据库系统阶段(60年代末开始) 该阶段,计算机应用于管理的规模大、数据量多、变化快; 硬件方面出现了大容量磁盘,且能够实现联机存取大量数据; 硬件价格下降,而软件价格上升,使开发和维护系统软件的成本增加。 文件系统的数据管理方法已无法适应开发应用系统的的需要。 为解决多用户、多个应用程序共享数据的需求,出现了统一管理数据 的专门软件系统,即“数据库管理系统”。
[WHERE F]
⑵、Select语句举例:
①、单表查询 例如:查询所有女学生名以及所对应的身高(以厘米表示)。 Select Sname , 100*Height From S Where Sex=„女’;
②、连接查询:一个查询涉及两个以上的表。 例如:查询每个男学生及选修课程的情况,要求列出姓名、系别、选课程 名及成绩。 Select Sname , Depart , Cname , Grade From S , C , SC Where S.Sno=SC.Sno and o=o and S.Sex=„男’;
专业 代码 专业 名称 学号 姓名 性别 出生日 期 备注
专业
1
所属
学生 q
m
所属
1
院系
成绩
选课 p 课程
院系代码
院系名称
课程代码
课程名称
学生成绩管理的E-R模型
⑶、逻辑设计
它是将概念结构进一步转化,对数据结构进行调整和优化,形成合 理的逻辑结构,即基本表。 如上例,E-R模型转换为下列5张表: 专业(专业代号,专业名称) 院系(院系代码,院系名称) 课程(课程代码,课程名称) 学生(学号,姓名,性别,出生日期,院系代码,专业代码,备注) 选课(学号,课程代码,成绩)
3、Access的主要操作
⑴、新建空数据库 ⑵、打开数据库 ⑶、编辑表结构: A、增加字段; B、修改字段; C、删除字段 ①、主键:能够唯一标识实体的“属性或属性组” 。 ②、表中列--字段:是ACCESS最基本的存储单位。-----P218 ③、字段长度为[1,255],默认长度为50个字符。 ----P219表6.8
应用程序1 应用程序2 应用程序3 应用程序n
数据库管理系统 (DBMS)
数据库
3、数据库系统(DBS)
是数据库、数据库管理系统、应用程序、计算机软硬件及相关人员 的总称。
4、数据库系统的组成:
⑴、应用程序:
即,利用数据库系统资源开发的、解决管理和决策问题的各种软件。(例如: 学校教务管理) ①、硬件支持环境;
[系与学生]
⑶、多对多联系(m:n)
若对于实体集A中的每一个实体,实体集B中有n个实体与之联系;而对于实体集B中的每一个实体,实
体集A中也有m个实体与之联系,则称该二个实体集A,B之间存在m:n联系 。[学生与所选课程]
两个表之间的三类联系
表A 1
表A 1
表A m
联系名
1 表B
联系名
n 表B
联系名
⑶、SQL的数据更新
①、插入语句( INSERT)
它可将一个记录插入到指定的表中。 例如:将一个新学生记录插入到学生表S中。
Insert into S(SNO,SNAME,DEPART,SEX,BDATE,HEIGHT) values (“C011”, “王小莉”, “计算机”,“女”,1985-03-16,1.63);