版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter3:SQLChapter3:SQL1Chapter3:SQLDataDefinitionBasicQueryStructureSetOperationsAggregateFunctionsNullValuesNestedSubqueriesComplexQueriesViewsModificationoftheDatabaseJoinedRelations**Chapter3:SQLDataDefinition2HistoryIBMSequellanguagedevelopedaspartofSystemRprojectattheIBMSanJoseResearchLaboratoryRenamedStructuredQueryLanguage(SQL)ANSIandISOstandardSQL:SQL-86SQL-89SQL-92SQL:1999(languagenamebecameY2Kcompliant!)SQL:2003Commercialsystemsoffermost,ifnotall,SQL-92features,plusvaryingfeaturesetsfromlaterstandardsandspecialproprietaryfeatures.Notallexamplesheremayworkonyourparticularsystem.HistoryIBMSequellanguagedev3DataDefinitionLanguageTheschemaforeachrelation.Thedomainofvaluesassociatedwitheachattribute.IntegrityconstraintsThesetofindicestobemaintainedforeachrelations.Securityandauthorizationinformationforeachrelation.Thephysicalstoragestructureofeachrelationondisk.Allowsthespecificationofnotonlyasetofrelationsbutalsoinformationabouteachrelation,including:DataDefinitionLanguageThesc4DomainTypesinSQLchar(n).Fixedlengthcharacterstring,withuser-specifiedlengthn.varchar(n).
Variablelengthcharacterstrings,.
Integer(afinitesubsetoftheintegersthatismachine-dependent).smallint.Smallinteger(amachine-dependentsubsetoftheintegerdomaintype).numeric(p,d).Fixedpointnumber,withuser-specifiedprecisionofpdigits,withndigitstotherightofdecimalpoint.real,doubleprecision.Floatingpointanddouble-precisionfloatingpointnumbers,withmachine-dependentprecision.float(n).Floatingpointnumber,withuser-specifiedprecisionofatleastndigits.MorearecoveredinChapter4.DomainTypesinSQLchar(n).F5CreateTableConstructAnSQLrelationisdefinedusingthe
createtable
command:
createtabler(A1
D1,A2
D2,...,AnDn,
(integrity-constraint1),
...,
(integrity-constraintk))risthenameoftherelationeachAiisanattributenameintheschemaofrelationrDiisthedatatypeofvaluesinthedomainofattributeAiExample:
createtablebranch
(branch_name char(15)notnull,
branch_city char(30),
assets integer)CreateTableConstructAnSQLr6IntegrityConstraintsinCreateTablenotnullprimarykey(A1,...,An)Example:Declarebranch_nameastheprimarykeyforbranch.
createtablebranch
(branch_name char(15),
branch_city char(30),
assets integer,
primarykey(branch_name))primarykeydeclarationonanattributeautomaticallyensuresnotnullinSQL-92onwards,needstobeexplicitlystatedinSQL-89IntegrityConstraintsinCreat7DropandAlterTableConstructsThedroptable
commanddeletesallinformationaboutthedroppedrelationfromthedatabase.Thealtertablecommandisusedtoaddattributestoanexistingrelation:
altertableraddAD
whereAisthenameoftheattributetobeaddedtorelationrandDisthedomainofA.Alltuplesintherelationareassignednullasthevalueforthenewattribute.Thealtertablecommandcanalsobeusedtodropattributesofarelation:
altertablerdropA
whereAisthenameofanattributeofrelationrDroppingofattributesnotsupportedbymanydatabasesDropandAlterTableConstruct8BasicQueryStructureSQLisbasedonsetandrelationaloperationswithcertainmodificationsandenhancementsAtypicalSQLqueryhastheform:
selectA1,A2,...,An
from
r1,r2,...,rm
whereP
AirepresentsanattributeRirepresentsarelationPisapredicate.Thisqueryisequivalenttotherelationalalgebraexpression.
TheresultofanSQLqueryisarelation.BasicQueryStructureSQLisb9TheselectClauseTheselectclauselisttheattributesdesiredintheresultofaquerycorrespondstotheprojectionoperationoftherelationalalgebraExample:findthenamesofallbranchesintheloanrelation:
selectbranch_name
fromloanIntherelationalalgebra,thequerywouldbe:
branch_name(loan)NOTE:SQLnamesarecaseinsensitive(i.e.,youmayuseupper-orlower-caseletters.)E.g.Branch_Name≡BRANCH_NAME≡branch_nameSomepeopleuseuppercasewhereverweuseboldfont.TheselectClauseTheselectcl10TheselectClause(Cont.)SQLallowsduplicatesinrelationsaswellasinqueryresults.Toforcetheeliminationofduplicates,insertthekeyworddistinctafterselect.Findthenamesofallbranchesintheloanrelations,andremoveduplicates
selectdistinctbranch_name
fromloan
Thekeywordallspecifiesthatduplicatesnotberemoved.
selectall
branch_name
fromloanTheselectClause(Cont.)SQLa11TheselectClause(Cont.)Anasteriskintheselectclausedenotes“allattributes” select*
fromloanTheselectclausecancontainarithmeticexpressionsinvolvingtheoperation,+,–,,and/,andoperatingonconstantsorattributesoftuples.Thequery: select
loan_number,branch_name,amount100
fromloan
wouldreturnarelationthatisthesameastheloanrelation,exceptthatthevalueoftheattributeamountismultipliedby100.TheselectClause(Cont.)Anas12ThewhereClauseThewhere
clausespecifiesconditionsthattheresultmustsatisfyCorrespondstotheselectionpredicateoftherelationalalgebra.TofindallloannumberforloansmadeatthePerryridgebranchwithloanamountsgreaterthan$1200. selectloan_number
fromloan
wherebranch_name=
'Perryridge'
andamount>1200Comparisonresultscanbecombinedusingthelogicalconnectivesand,or,andnot.
Comparisonscanbeappliedtoresultsofarithmeticexpressions.ThewhereClauseThewhereclau13ThewhereClause(Cont.)SQLincludesabetweencomparisonoperatorExample:Findtheloannumberofthoseloanswithloanamountsbetween$90,000and$100,000(thatis,$90,000and$100,000)selectloan_number
fromloan
whereamount
between90000and100000ThewhereClause(Cont.)SQLin14ThefromClauseThefrom
clauseliststherelationsinvolvedinthequeryCorrespondstotheCartesianproductoperationoftherelationalalgebra.FindtheCartesianproductborrowerXloan select
fromborrower,loanFindthename,loannumberandloanamountofallcustomers
havingaloanatthePerryridgebranch.selectcustomer_name,borrower.loan_number,amount
fromborrower,loan
where
borrower.loan_number=loan.loan_numberand
branch_name='Perryridge'ThefromClauseThefromclause15TheRenameOperationTheSQLallowsrenamingrelationsandattributesusingtheasclause: old-nameasnew-nameFindthename,loannumberandloanamountofallcustomers;renamethecolumnnameloan_numberasloan_id.selectcustomer_name,borrower.loan_numberasloan_id,amount
fromborrower,loan
whereborrower.loan_number=loan.loan_numberTheRenameOperationTheSQLal16TupleVariablesTuplevariablesaredefinedinthefromclauseviatheuseoftheasclause.Findthecustomernamesandtheirloannumbersforallcustomershavingaloanatsomebranch.Findthenamesofallbranchesthathavegreaterassetsthan
somebranchlocatedinBrooklyn.selectdistinctT.branch_name
frombranchasT,branchasS
whereT.assets>S.assetsandS.branch_city='Brooklyn'Keywordasisoptionalandmaybeomitted
borrowerasT≡borrower
Tselectcustomer_name,T.loan_number,S.amount
fromborrowerasT,loanasS
whereT.loan_number=S.loan_numberTupleVariablesTuplevariables17StringOperationsSQLincludesastring-matchingoperatorforcomparisonsoncharacterstrings.Theoperator“like”usespatternsthataredescribedusingtwospecialcharacters:percent(%).The%charactermatchesanysubstring.underscore(_).The_charactermatchesanycharacter.Findthenamesofallcustomerswhosestreetincludesthesubstring“Main”. selectcustomer_name
fromcustomer
where
customer_streetlike'%Main%'Matchthename“Main%”
like'Main\%'
escape'\'SQLsupportsavarietyofstringoperationssuchasconcatenation(using“||”)convertingfromuppertolowercase(andviceversa)findingstringlength,extractingsubstrings,etc.StringOperationsSQLincludes18OrderingtheDisplayofTuplesListinalphabeticorderthenamesofallcustomershavingaloaninPerryridgebranch
selectdistinctcustomer_name
fromborrower,loan
whereborrowerloan_number=loan.loan_numberand
branch_name='Perryridge'
orderbycustomer_nameWemayspecifydescfordescendingorderorascforascendingorder,foreachattribute;ascendingorderisthedefault.Example:orderby
customer_name
descOrderingtheDisplayofTuples19DuplicatesInrelationswithduplicates,SQLcandefinehowmanycopiesoftuplesappearintheresult.Multisetversionsofsomeoftherelationalalgebraoperators–givenmultisetrelationsr1andr2:1. (r1):Iftherearec1copiesoftuplet1inr1,andt1satisfiesselections,,thentherearec1copiesoft1in
(r1).2. A(r):Foreachcopyoftuplet1
inr1,thereisacopyoftuple
A(t1)inA(r1)whereA(t1)denotestheprojectionofthesingletuplet1.3. r1xr2:Iftherearec1copiesoftuplet1
inr1andc2copiesoftuplet2inr2,therearec1xc2copiesofthetuplet1.t2inr1xr2DuplicatesInrelationswithdu20Duplicates(Cont.)Example:Supposemultisetrelationsr1(A,B)andr2(C)areasfollows:
r1={(1,a)(2,a)}r2={(2),(3),(3)}ThenB(r1)wouldbe{(a),(a)},whileB(r1)xr2wouldbe {(a,2),(a,2),(a,3),(a,3),(a,3),(a,3)}SQLduplicatesemantics:
selectA1,,A2,...,An
fromr1,r2,...,rm
whereP
isequivalenttothemultisetversionoftheexpression:
Duplicates(Cont.)Example:Sup21SetOperationsThesetoperationsunion,intersect,andexcept
operateonrelationsandcorrespondtotherelationalalgebraoperationsEachoftheaboveoperationsautomaticallyeliminatesduplicates;toretainallduplicatesusethecorrespondingmultisetversionsunionall,intersectall
andexceptall.
Supposeatupleoccursmtimesinrandntimesins,then,itoccurs:m
+ntimesinrunionallsmin(m,n)timesinr
intersectallsmax(0,m–n)timesinr
exceptallsSetOperationsThesetoperatio22SetOperationsFindallcustomerswhohavealoan,anaccount,orboth:(select
customer_namefromdepositor)
except
(select
customer_namefromborrower)(select
customer_namefromdepositor)
intersect
(select
customer_namefromborrower)Findallcustomerswhohaveanaccountbutnoloan. (select
customer_namefromdepositor)
union
(select
customer_namefromborrower)Findallcustomerswhohavebothaloanandanaccount.SetOperationsFindallcustome23AggregateFunctionsThesefunctionsoperateonthemultisetofvaluesofacolumnofarelation,andreturnavalue
avg:averagevalue
min:minimumvalue
max:maximumvalue
sum:sumofvalues
count:numberofvaluesAggregateFunctionsThesefunct24AggregateFunctions(Cont.)FindtheaverageaccountbalanceatthePerryridgebranch.Findthenumberofdepositorsinthebank.Findthenumberoftuplesinthecustomerrelation.selectavg(balance)
fromaccount
wherebranch_name='Perryridge'selectcount(*)
fromcustomerselectcount(distinctcustomer_name)
fromdepositorAggregateFunctions(Cont.)Fin25AggregateFunctions–GroupByFindthenumberofdepositorsforeachbranch.Note:Attributesinselectclauseoutsideofaggregatefunctionsmust
appearingroupbylistselectbranch_name,count(distinct
customer_name)
fromdepositor,account
wheredepositor.account_number=account.account_number
groupbybranch_nameAggregateFunctions–GroupBy26AggregateFunctions–HavingClauseFindthenamesofallbrancheswheretheaverageaccountbalanceismorethan$1,200.
Note:predicatesinthehavingclauseareappliedafterthe
formationofgroupswhereaspredicatesinthewhere
clauseareappliedbeforeforminggroupsselectbranch_name,avg(balance)
fromaccount
groupbybranch_name
havingavg
(balance)>1200AggregateFunctions–HavingC27NullValuesItispossiblefortuplestohaveanullvalue,denotedbynull,forsomeoftheirattributesnullsignifiesanunknownvalueorthatavaluedoesnotexist.Thepredicateisnullcanbeusedtocheckfornullvalues.Example:Findallloannumberwhichappearintheloanrelationwithnullvaluesforamount.
selectloan_number
fromloan
whereamountisnullTheresultofanyarithmeticexpressioninvolvingnullisnullExample:5+nullreturnsnullHowever,aggregatefunctionssimplyignorenullsMoreonnextslideNullValuesItispossiblefor28NullValuesandThreeValuedLogicAnycomparisonwithnullreturnsunknownExample:5<nullornull<>nullornull=nullThree-valuedlogicusingthetruthvalueunknown:OR:(unknown
or
true)=true,
(unknown
or
false)=unknown
(unknownorunknown)=unknownAND:(trueandunknown)=unknown,
(falseandunknown)=false,
(unknownandunknown)=unknownNOT:(notunknown)=unknown“Pisunknown”
evaluatestotrueifpredicatePevaluatestounknownResultofwhereclausepredicateistreatedasfalseifitevaluatestounknownNullValuesandThreeValuedL29NullValuesandAggregatesTotalallloanamounts
selectsum(amount)
fromloanAbovestatementignoresnullamountsResultisnullifthereisnonon-nullamountAllaggregateoperationsexceptcount(*)ignoretupleswithnullvaluesontheaggregatedattributes.NullValuesandAggregatesTota30NestedSubqueriesSQLprovidesamechanismforthenestingofsubqueries.Asubqueryisaselect-from-whereexpressionthatisnestedwithinanotherquery.Acommonuseofsubqueriesistoperformtestsforsetmembership,setcomparisons,andsetcardinality.NestedSubqueriesSQLprovides31ExampleQueryFindallcustomerswhohavebothanaccountandaloanatthebank.Findallcustomerswhohavealoanatthebankbutdonothave
anaccountatthebankselectdistinctcustomer_name
fromborrower
wherecustomer_namenotin(selectcustomer_name
fromdepositor)selectdistinctcustomer_name
fromborrower
wherecustomer_namein(selectcustomer_name
from
depositor)ExampleQueryFindallcustomer32ExampleQueryFindallcustomerswhohavebothanaccountandaloanatthePerryridgebranchNote:Abovequerycanbewritteninamuchsimplermanner.The
formulationaboveissimplytoillustrateSQLfeatures.selectdistinct
customer_name
fromborrower,loan
whereborrower.loan_number=loan.loan_numberand
branch_name='Perryridge'and
(branch_name,customer_name)
in
(selectbranch_name,customer_name
fromdepositor,account
wheredepositor.account_number=
account.account_number)ExampleQueryFindallcustomer33SetComparisonFindallbranchesthathavegreaterassetsthansomebranchlocatedinBrooklyn.Samequeryusing>someclauseselectbranch_name
frombranch
whereassets>some
(selectassets
frombranch
wherebranch_city='Brooklyn')selectdistinct
T.branch_name
frombranchasT,branchasS
whereT.assets>S.assetsand
S.branch_city='Brooklyn'SetComparisonFindallbranche34DefinitionofSomeClauseF<comp>somertrsuchthat(F<comp>t)
Where<comp>canbe:056(5<some)=true050)=false505(5
some)=true(since05)(read:5<sometupleintherelation)(5<some)=true(5=some(=some)inHowever,(some)notinDefinitionofSomeClauseF<c35ExampleQueryFindthenamesofallbranchesthathavegreaterassetsthanallbrancheslocatedinBrooklyn.selectbranch_name
frombranch
whereassets>all
(selectassets
frombranch
wherebranch_city='Brooklyn')ExampleQueryFindthenamesof36DefinitionofallClauseF<comp>allrtr(F<comp>t)056(5<all)=false6104)=true546(5
all)=true(since54and56)(5<all)=false(5=all(
all)notinHowever,(=all)inDefinitionofallClauseF<com37TestforEmptyRelationsTheexistsconstructreturnsthevaluetrueiftheargumentsubqueryisnonempty.existsrrØnotexistsrr=ØTestforEmptyRelationsTheex38ExampleQueryFindallcustomerswhohaveanaccountatallbrancheslocatedinBrooklyn.selectdistinctS.customer_name
fromdepositorasS
wherenotexists(
(selectbranch_name
frombranch
wherebranch_city='Brooklyn')
except
(selectR.branch_name
fromdepositorasT,accountasR
whereT.account_number=R.account_numberand
S.customer_name=T.customer_name))NotethatX–Y=ØXYNote:Cannotwritethisqueryusing
=all
anditsvariantsExampleQueryFindallcustomer39TestforAbsenceofDuplicateTuplesTheuniqueconstructtestswhetherasubqueryhasanyduplicatetuplesinitsresult.FindallcustomerswhohaveatmostoneaccountatthePerryridgebranch. selectT.customer_namefromdepositorasTwhereunique( selectR.customer_name
fromaccount,depositorasR
whereT.customer_name=R.customer_nameand
R.account_number=account.account_numberand
account.branch_name='Perryridge')TestforAbsenceofDuplicate40ExampleQueryFindallcustomerswhohaveatleasttwoaccountsatthePerryridgebranch.selectdistinctT.customer_namefromdepositorasTwherenotunique(
selectR.customer_name
fromaccount,depositorasR
whereT.customer_name=R.customer_nameand
R.account_number=account.account_numberand
account.branch_name=
'Perryridge')Variablefromouterlevelisknownasacorrelationvariable
ExampleQueryFindallcustomer41DerivedRelationsSQLallowsasubqueryexpressiontobeusedinthefromclauseFindtheaverageaccountbalanceofthosebrancheswheretheaverageaccountbalanceisgreaterthan$1200.
selectbranch_name,avg_balance
from(selectbranch_name,avg(balance)
fromaccount
groupbybranch_name)
asbranch_avg(branch_name,avg_balance)
whereavg_balance>1200 Notethatwedonotneedtousethehavingclause,sincewecomputethetemporary(view)relationbranch_avginthefromclause,andtheattributesofbranch_avgcanbeuseddirectlyinthewhereclause.DerivedRelationsSQLallowsa42WithClauseThewithclauseprovidesawayofdefiningatemporaryviewwhosedefinitionisavailableonlytothequeryinwhichthewith
clauseoccurs.Findallaccountswiththemaximumbalance
with
max_balance(value)as
select
max(balance)
from
account
select
account_number
from
account,max_balance
where
account.balance=max_balance.valueWithClauseThewithclausepro43ComplexQueriesusingWithClauseFindallbrancheswherethetotalaccountdepositisgreaterthantheaverageofthetotalaccountdepositsatallbranches.with
branch_total(branch_name,value)as
select
branch_name,sum(balance)
from
account
group
by
branch_name
with
branch_total_avg(value)as
select
avg(value)
from
branch_total
selectbranch_name
from
branch_total,branch_total_avg
where
branch_total.value>=branch_total_avg.valueComplexQueriesusingWithCla44ViewsInsomecases,itisnotdesirableforalluserstoseetheentirelogicalmodel(thatis,alltheactualrelationsstoredinthedatabase.)Considerapersonwhoneedstoknowacustomer’sname,loannumberandbranchname,buthasnoneedtoseetheloanamount.Thispersonshouldseearelationdescribed,inSQL,by
(selectcustomer_name,borrower.loan_number,branch_name
fromborrower,loan
whereborrower.loan_number=loan.loan_number)Aviewprovidesamechanismtohidecertaindatafromtheviewofcertainusers.Anyrelationthatisnotoftheconceptualmodelbutismadevisibletoauserasa“virtualrelation”iscalledaview.ViewsInsomecases,itisnot45ViewDefinitionAviewisdefinedusingthecreateviewstatementwhichhastheform
createviewvas<queryexpression> where<queryexpression>isanylegalSQLexpression.Theviewnameisrepresentedbyv.Onceaviewisdefined,theviewnamecanbeusedtorefertothevirtualrelationthattheviewgenerates.Whenaviewiscreated,thequeryexpressionisstoredinthedatabase;theexpressionissubstitutedintoqueriesusingtheview.ViewDefinitionAviewisdefin46ExampleQueriesAviewconsistingofbranchesandtheircustomersFindallcustomersofthePerryridgebranchcreateviewall_customeras
(selectbranch_name,customer_name
fromdepositor,account
wheredepositor.account_number= account.account_number)
union
(selectbranch_name,customer_name
fromborrower,loan
whereborrower.loan_number=loan.loan_number)selectcustomer_name
fromall_customer
wherebranch_name='Perryridge'ExampleQueriesAviewconsisti47ViewsDefinedUsingOtherViewsOneviewmaybeusedintheexpressiondefininganotherviewAviewrelationv1issaidtodependdirectly
onaviewrelationv2
ifv2isusedintheexpressiondefiningv1Aviewrelationv1issaidtodependonviewrelationv2
ifeitherv1dependsdirectlytov2orthereisapathofdependenciesfromv1tov2
Aviewrelationvissaidtoberecursive
ifitdependsonitself.ViewsDefinedUsingOtherView48ViewExpansionAwaytodefinethemeaningofviewsdefinedintermsofotherviews.Letviewv1bedefinedbyanexpressione1thatmayitselfcontainusesofviewrelations.Viewexpansionofanexpressionrepeatsthefollowingreplacementstep:
repeat
Findanyviewrelationviine1
Replacetheviewrelationvibytheexpressiondefiningvi
untilnomoreviewrelationsarepresentine1Aslongastheviewdefinitionsarenotrecursive,thisloopwillterminateViewExpansionAwaytodefine49ModificationoftheDatabase–DeletionDeleteallaccounttuplesatthePerryridgebranch
deletefromaccount
wherebranch_name='Perryridge'Deleteallaccountsateverybranchlocatedinthecity‘Needham’.
deletefromaccount
wherebranch_namein(selectbranch_name
frombranch
wherebranch_city='Needham')
ModificationoftheDatabase–50ExampleQueryDeletetherecordofallaccountswithbalancesbelowtheaverageatthebank.deletefromaccount
wherebalance<(selectavg(balance)
fromaccount)Problem:aswedeletetuplesfromdeposit,theaveragebalancechangesSolutionusedinSQL:1.First,computeavgbalanceandfindalltuplestodelete2.Next,deletealltuplesfoundabove(withoutrecomputingavgor
retestingthetuples)ExampleQueryDeletetherecord51ModificationoftheDatabase–InsertionAddanewtupletoaccount
insertintoaccount
values('A-9732','Perryridge',1200)
orequivalently
insertintoaccount(branch_name,balance,account_number)
values('Perryridge',1200,'A-9732')Addanewtupletoaccountwithbalancesettonull
insertintoaccount
values('A-777','Perryridge',null)ModificationoftheDatabase–52ModificationoftheDatabase–InsertionProvideasagiftforallloancustomersofthePerryridgebranch,a$200savingsaccount.Lettheloannumberserveastheaccountnumberforthenewsavingsaccount
insertintoaccount
selectloan_number,branch_name,200
fromloan
wherebranch_name='Perryridge'
insertintodepositor
selectcustomer_name,loan_number
fromloan,borrower
wherebranch_name='Perryridge'
andloan.account_number=borrower.account_numberTheselectfromwherestatementisevaluatedfullybeforeanyofitsresultsareinsertedintotherelation(otherwisequerieslike
insertinto
table1select*from
table1
wouldcauseproblems)ModificationoftheDatabase–53ModificationoftheDatabase–UpdatesIncreaseallaccountswithbalancesover$10,000by6%,allotheraccountsreceive5%.Writetwoupdatestatements:
updateaccount
setbalance=balance1.06
wherebalance>10000
updateaccount
setbalance=balance1.05
wherebalance10000TheorderisimportantCanbedonebetterusingthecasestatement(nextslide)ModificationoftheDatabase–54CaseStatementforConditionalUpdatesSamequeryasbefore:Increaseallaccountswithbalancesover$10,000by6%,allotheraccountsreceive5%.
update
account
set
balance=case
when
balance<=10000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于物联网技术的拼多多农业电商平台研究
- 旅游行业产品经理的职责与技能要求详解
- 旅行社计调经理的招聘面试全解析
- 基于地球仪视角的初中自然科学学习策略
- 护理礼仪的礼仪故事
- 护理课件制作中的游戏化设计
- 护理实践中的法律问题探讨
- 护理考试名师强化辅导
- 领导力培养与团队指导计划同仁堂副经理
- 基于家庭教育活动的家长培训计划设计
- 天津市河西区2024年九年级结课质量调查英语试卷
- 2024外研版初中英语单词表汇总(七-九年级)中考复习必背
- 六安职业技术学院单招《职业技能测试》参考试题库(含答案)
- 有关物业管家培训课件
- 第二章 教育研究的选题与设计
- 新改版苏教版四年级下册科学全册知识点(精简版)
- 流程图绘制培训
- 口腔颌面外科学课件:颌骨骨髓炎
- 上海市初中物理竞赛“大同杯”历年真题分类汇编(共9个)学生版+解析版
- 2023年广东高考英语听说考试真题D录音原文与参考答案
- 《史记》上册注音版
评论
0/150
提交评论