【文档说明】数据库基础知识培训胶片V16课件1.ppt,共(79)页,703.012 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92441.html
以下为本文档部分文字说明:
数据库基础知识培训胶片集成产品部数据库原理3目标通过这部分课程的学习,您将了解以下内容:关系数据库基本概念常用数据库对象常用数据类型4INDatabaseInformixServerSMPSCPSMAPSMAPSM
APThedatabaseplaystheroleofthebase,savingandprocessingthedatathatshouldbeeasilyaccessedbytheuser.What
isadatabase?Usually,adatabaserunsintheserverparttoserveaccessrequestsfromclients.5DBClient(DBA)DBDBServerDBClien
t(User)DBClient(User)UsersuseDDLtodefineadatabaseUsersuseDMLtooperatedatainadatabaseUsersuseprogramstomanagedataba
seDDL,DML&Programs6TablesAdatabaseinaRDBMSisacollectionofinformationthatisgroupedintooneormoretables.Atabl
eisanarrayofdataitemsorganizedintorowsandcolumns.Stock7PPSServiceDataTableINServiceDatabaseFPHServiceDataTableSubscrib
erDataTableTablesarerelationalSubIDBalanceIDDFlag1001100.0001012200.001MSISDNNumBalanceIDDFlagSubID1001100.0001001012200.00110
1FPHNumBalanceIDDFlagSubID80081012341100.00010080081043212200.0011018RowsRowsEachrowofatablestandsforoneinstanceofthesubjectofthetable,whichisonep
articularexampleofthatentity.Stock9ColumnsEachcolumnofatablestandsforoneattribute,whichisonecharacteristic,feature,orfactthatistrueofthesubjecto
fthetable.ColumnsStock10OperationsonTables11DatabaseObjectsObjectDescriptionTableBasicunitofstorage;composedofrowsandcolumnsViewLogicallyrepresent
ssubsetsofdatafromoneormoretablesSequenceNumericvaluegeneratorIndexImprovestheperformanceofsomequeri
esSynonymGivesalternativenamestoobjects12WhatisaView?EMPLOYEESTable:13WhyUseViews?TorestrictdataaccessTomakecomplexque
rieseasyToprovidedataindependenceTopresentdifferentviewsofthesamedata14WhatareConstraints?Constraintsenforcerulesatthetablelevel.Constraintsp
reventthedeletionofatableiftherearedependencies.Thefollowingconstrainttypesarevalid:NOTNULLUNIQUEPRIMARYKEYFOREIGNKEYCHECK15What
isanIndex?Anindex:IsaschemaobjectIsusedbytheOracleservertospeeduptheretrievalofrowsbyusingapointerCanreduc
ediskI/ObyusingarapidpathaccessmethodtolocatedataquicklyIsindependentofthetableitindexesIsusedandmaintainedautomaticallybytheOraclese
rver16HowAreIndexesCreated?Automatically:AuniqueindexiscreatedautomaticallywhenyoudefineaPRIMARYKEYorUNIQUEconstraintinatabledefin
ition.Manually:Userscancreatenonuniqueindexesoncolumnstospeedupaccesstotherows.17DataTypesDataTypeDescriptionVARCHAR2(siz
e)Variable-lengthcharacterdataCHAR(size)Fixed-lengthcharacterdataNUMBER(p,s)Variable-lengthnumericda
taDATEDateandtimevaluesLONGVariable-lengthcharacterdataupto2gigabytesCLOBCharacterdataupto4gigabytesRAWa
ndLONGRAWRawbinarydataBLOBBinarydataupto4gigabytesBFILEBinarydatastoredinanexternalfile;upto4gigabytesROWIDA64basenumbersystemrepresent
ingtheuniqueaddressofarowinitstable.18总结通过这部分课程的学习,您需要掌握以下内容:关系数据库基本概念常用数据库对象表索引约束常用数据类型SQL语言基础20目标通过这部分课程的学习,您
将了解以下内容:SQL语句的种类执行基本的Select语句在表中插入数据行在表中修改数据行从表中删除数据行控制事务处理21SQLStatementsSELECTINSERTUPDATEDELETECREATEALTERDROPTR
UNCATECOMMITROLLBACKSAVEPOINTGRANTREVOKEDataretrievalDatamanipulationlanguage(DML)Datadefinitionlanguage(DDL)Datacontrollanguage(DCL)22基础SELECT语句语法SE
LECT*|{[DISTINCT]column|expression[alias],...}FROMtable;23使用算术操作符SELECTlast_name,salary,salary+300FROMemployees;
…24使用列的别名SELECTlast_name"Name",salary*12"AnnualSalary"FROMemployees;SELECTlast_nameASname,commission_pctcommFROMemployees;……25使用连接
符和字符串SELECTlast_name||'isa'||job_idAS"EmployeeDetails"FROMemployees;…26排除重复的行SELECTDISTINCTdepartment_idFROMemployees;27使用WHERE条
件SELECTemployee_id,last_name,job_id,department_idFROMemployeesWHEREdepartment_id=90;28字符串和日期值都使用单引号.字
符串值区分大小写,日期值需注意格式.SELECTlast_name,job_id,department_idFROMemployeesWHERElast_name='Whalen';29比较条件操作符=>>=<<=<>含义等于大于大
于或等于小于小于或等于不等于30其它的比较条件操作符BETWEEN...AND...IN(set)LIKEISNULL含义两个值之间匹配值列表中值匹配一个字符样式空值31使用BETWEEN条件可以使用该条件显示某范围内的值.SELECTlast_name,salaryFROMem
ployeesWHEREsalaryBETWEEN2500AND3500;LowerlimitUpperlimit32SELECTemployee_id,last_name,salary,manager_idFROMemplo
yeesWHEREmanager_idIN(100,101,201);使用IN条件满足成员列表中的条件.33使用LIKE条件搜索条件能包括两种模式匹配类型:%表示许多字符._表示一个字符.SELECTfirst_nameFROMemp
loyeesWHEREfirst_nameLIKE'S%';34使用NULL条件测验空值使用ISNULL条件.SELECTlast_name,manager_idFROMemployeesWHEREma
nager_idISNULL;35逻辑条件OperatorANDORNOT含义两部分条件都返回真值则结果返回真值两部分条件中有任意一部分返回真值则结果返回真值如果条件返回假则结果返回真值36使用AND操作符要求条件都为真.S
ELECTemployee_id,last_name,job_id,salaryFROMemployeesWHEREsalary>=10000ANDjob_idLIKE'%MAN%';37SELECTlast_name,job_idFROMemployeesW
HEREjob_idNOTIN('IT_PROG','ST_CLERK','SA_REP');UsingtheNOTOperator38SELECTlast_name,job_id,department_id,hire_dateFROMemployeesOR
DERBYhire_date;ORDERBY条件带ORDERBY条件的排序ASC:升序,缺省DESC:降序ORDERBY条件在Select语句最后.…39数据操作语句一条DML语句在下列情况下被执行:向表中增加新的数据行修改表中存
在的数据从表中删除数据一个事务由DML语句集合形成的逻辑工作单元构成.40INSERT语句语法.INSERTINTOtable[(column[,column...])]VALUES(value[,value...]);41向表中插入新的数据行
插入的新行应包括所有的列值.插入的值应按照表中列缺省的顺序排列.如插入所有的列,INSERT条件中可随意选择是否列出所有列.INSERTINTOdepartments(department_id,depa
rtment_name,manager_id,location_id)VALUES(70,'PublicRelations',100,1700);1rowcreated.42INSERTINTOemployeesVALUES(114,'Den','Raphealy','DRAPHEAL',
'515.127.4561',TO_DATE('FEB3,1999','MONDD,YYYY'),'AC_ACCOUNT',11000,NULL,100,30);1rowcreated.插入特殊的日期型值Verify
youraddition.43带子查询的INSERT语句.字段的数据类型必须匹配.INSERTINTOsales_reps(id,name,salary,commission_pct)SELECTemp
loyee_id,last_name,salary,commission_pctFROMemployeesWHEREjob_idLIKE'%REP%';4rowscreated.从另外一个表中复制行44UPDATE语句语法可一次性修改多行UPDATEtableSETcolumn=v
alue[,column=value,...][WHEREcondition];45UPDATEemployeesSETdepartment_id=70WHEREemployee_id=113;1rowupdated.在WHERE条件中指定需要修改的行.修改表中所有的行
.修改表中数据UPDATEcopy_empSETdepartment_id=110;22rowsupdated.46UPDATEcopy_empSETdepartment_id=(SELECTdepartment_
idFROMemployeesWHEREemployee_id=100)WHEREjob_id=(SELECTjob_idFROMemployeesWHEREemployee_id=200);1rowupdated.基于另外表SELECT得到的值修改数据使用子查询实现:47
DELETE语句语法DELETE[FROM]table[WHEREcondition];48通过WHERE条件指定删除的行.省略WHERE条件,所有的行都将被删除.从表中删除多行DELETEFROMdepartmentsWHEREdepartment_name=
'Finance';1rowdeleted.DELETEFROMcopy_emp;22rowsdeleted.49DELETEFROMemployeesWHEREdepartment_id=(SELECTdep
artment_idFROMdepartmentsWHEREdepartment_nameLIKE'%Public%');1rowdeleted.基于另外表SELECT得到的值删除数据通过子查询语句从另外表中得到值作为删除条件.50数据库事务一
个数据库完整事务包含以下情况:构成对数据的一次一致性改变的DML语句(一条或多条)一条DDL语句51数据库事务当第一条DMLSQL语句执行时开始当下列任意事件发生时结束:提交或回滚语句执行一条DDL执行(自动提交)系统崩溃52控制事务SAVEP
OINTBSAVEPOINTADELETEINSERTUPDATEINSERTCOMMITTimeTransactionROLLBACKtoSAVEPOINTBROLLBACKtoSAVEPOINTAROLLBACK53UPDATE...SAVEPOINTupdate_done
;Savepointcreated.INSERT...ROLLBACKTOupdate_done;Rollbackcomplete.回滚改变到一个标记在当前的事务中可通过SAVEPOINT语句创建标记.ROLLBACKTOSAVEPOINT语句可回滚到标记.54自动的commit发生在:
DDL语句执行隐性的事务处理55COMMIT;Commitcomplete.改变数据.Commit改变.DELETEFROMemployeesWHEREemployee_id=99999;1rowdeleted.INSERTINTOdepartmentsVALUES(290,'Co
rporateTax',NULL,1700);1rowinserted.提交数据56回滚后数据状态将丢弃所有未COMMIT的改变:DELETEFROMcopy_emp;22rowsdeleted.RO
LLBACK;Rollbackcomplete.57如何写SQL语句SQL语句不区分大小写.关键字不能分行隔开.条件通常被分行放置.缩进被用来提高语句的可读性58总结通过这部分课程的学习,您将了解以下内容:SQL语句类
型写一个SELECT语句:描述DML语句在表中插入数据行在表中修改数据行从表中删除数据行控制事务处理59练习请见《Oracle数据库维护上机任务书》课堂练习-〉SQL语言基础数据库函数61目标通过这
部分课程的学习,您将了解以下内容:描述SQL中用到的不同类型的函数在SELECT语句中使用字符,数值和日期等函数转换函数的使用62SQLFunctionsFunctionInputarg1arg2a
rgnFunctionperformsactionOutputResultvalue63字符型函数字符型函数LOWERUPPERINITCAPCONCATSUBSTRLENGTHINSTRLPAD|RPADTRIMREPLA
CE大小写处理函数字符处理函数64FunctionResult大小写处理函数能对字符串进行大小写转换.LOWER('SQLCourse')UPPER('SQLCourse')INITCAP('SQLCourse')sqlcourseSQLCOU
RSESqlCourse65使用大小写处理函数SELECTemployee_id,last_name,department_idFROMemployeesWHERElast_name='higgins
';norowsselectedSELECTemployee_id,last_name,department_idFROMemployeesWHERELOWER(last_name)='higgins';66CONCAT('
Hello','World')SUBSTR('HelloWorld',1,5)LENGTH('HelloWorld')INSTR('HelloWorld','W')LPAD(salary,10,'*')RPAD(salary,10,'*')TRIM('H'FROM'Hell
oWorld')HelloWorldHello106*****2400024000*****elloWorldFunctionResult字符处理函数下列函数能对字符串进行处理:67SELECTemployee_id,CONCAT(first_name,last_
name)NAME,job_id,LENGTH(last_name),INSTR(last_name,'a')"Contains'a'?"FROMemployeesWHERESUBSTR(job_id,4)='REP';使用字符处理函数12312368数值函数ROUND:四
舍五入到指定的小数位数ROUND(45.926,2)45.93TRUNC:截断值到指定的小数位数TRUNC(45.926,2)45.92MOD:做除法取余数MOD(1600,300)10069日期函数两个日期中的间隔月数M
ONTHS_BETWEENADD_MONTHSNEXT_DAYLAST_DAYROUNDTRUNC在日期中增加历法月数指定日期中的下一天这个月的最后一天Round日期Truncate日期FunctionDescription70•MONTHS_BETWEEN(
'01-SEP-95','11-JAN-94')使用日期函数•ADD_MONTHS('11-JAN-94',6)•NEXT_DAY('01-SEP-95','FRIDAY')•LAST_DAY('01-FEB-95')19.6774194'11-JUL-94''08-SEP-95'
'28-FEB-95'71转换函数隐性的数据类型转换显性的数据类型转换数据类型转换72UsingtheTO_CHARFunctionwithDatesTheformatmodel:Mustbeenclosedinsinglequotationmarksa
ndiscasesensitiveCanincludeanyvaliddateformatelementHasanfmelementtoremovepaddedblanksorsuppressleadingz
erosIsseparatedfromthedatevaluebyacommaTO_CHAR(date,'format_model')73YYYY日期格式基本模型YEARMMMONTHDYDAYFullyearinnumbersYears
pelledoutTwo-digitvalueformonthThree-letterabbreviationofthedayoftheweekFullnameofthedayoftheweekFullnameofthemonthMONThree-letterabbreviationofth
emonthDDNumericdayofthemonth74使用TO_CHAR函数转换日期SELECTlast_name,TO_CHAR(hire_date,'fmDDMonthYYYY')ASHIREDA
TEFROMemployees;…75使用TO_NUMBER和TO_DATE函数转换字符型到数值型:转换字符型到日期型:TO_NUMBER(char[,'format_model'])TO_DATE(char[,'format_model'])76总结
通过这部分课程的学习,您应该已经了解:描述SQL中用到的不同类型的函数在SELECT语句中使用字符,数值和日期等函数转换函数的使用77练习请见《Oracle数据库维护上机任务书》课堂练习-〉数据库函数78问题和解答3F7IaLdPgSjVnYq$t*w-A1D4G8JbMeQhTl
WoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I
9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOg
SjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z
0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z
1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmY
q!t&w-z1D4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPg
SjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%u(y
+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgR
jVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPg
SjVnYq$t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhS
kVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTk
WnZr$u*x+A2E5H8KcNfQiUlXp#s%v)yF7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhT
kWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQh
TkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbN
eQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7J
aMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7
JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1
D4G8JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7Ia
MdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y+B3E6I
9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E
5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp
!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo
#r%v(y+B3E6I9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXo#s%v)y0B
3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjV(y+B2E6H9LcOfRjUmXp!
s&w)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#v)z0C4F7IaMdPgSkVnZq$t*x-A
1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)
z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcRjUmYp!s&w)4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZu(x+B2E5
H9KcOfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlW
o#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5
H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfQiUlXp#s%1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmY
q!t&w-z1C4G7JbMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRi
UmXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B2E6LdPgSjVnYq
!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A
2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePh
TkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#1D5G8KbNeQiTlWo#r%v(y+B3E6
H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3
F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgS
jVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcNfRiUmXp
#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8JbNeQiTlWo#r%u
(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5cOfRjUmXp!s&v)z0C3F7Ia