【文档说明】数据库基础知识培训胶片V16课件1.ppt,共(79)页,703.012 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92441.html
以下为本文档部分文字说明:
数据库基础知识培训胶片集成产品部数据库原理3目标通过这部分课程的学习,您将了解以下内容:关系数据库基本概念常用数据库对象常用数据类型4INDatabaseInformixServerSMPSCPSMAPSMAPSMAPThedatabaseplaysthero
leofthebase,savingandprocessingthedatathatshouldbeeasilyaccessedbytheuser.Whatisadatabase?Usually,adatabaserunsintheserv
erparttoserveaccessrequestsfromclients.5DBClient(DBA)DBDBServerDBClient(User)DBClient(User)UsersuseDDLtodefineadatabaseUsersuseDMLto
operatedatainadatabaseUsersuseprogramstomanagedatabaseDDL,DML&Programs6TablesAdatabaseinaRDBMSisacollectionofinformationth
atisgroupedintooneormoretables.Atableisanarrayofdataitemsorganizedintorowsandcolumns.Stock7PPSServiceDataTableINServiceDatabaseFPH
ServiceDataTableSubscriberDataTableTablesarerelationalSubIDBalanceIDDFlag1001100.0001012200.001MSISDNNumBalanceIDDFlagSubID1001100.0001001012200.0
01101FPHNumBalanceIDDFlagSubID80081012341100.00010080081043212200.0011018RowsRowsEachrowofatablestandsforoneinstanc
eofthesubjectofthetable,whichisoneparticularexampleofthatentity.Stock9ColumnsEachcolumnofatablestandsforoneattribute,whic
hisonecharacteristic,feature,orfactthatistrueofthesubjectofthetable.ColumnsStock10OperationsonTables11Databas
eObjectsObjectDescriptionTableBasicunitofstorage;composedofrowsandcolumnsViewLogicallyrepresentssubsetsofdatafromoneormoretablesSequenceNumericv
aluegeneratorIndexImprovestheperformanceofsomequeriesSynonymGivesalternativenamestoobjects12WhatisaView?
EMPLOYEESTable:13WhyUseViews?TorestrictdataaccessTomakecomplexquerieseasyToprovidedataindependenceTopresentdifferentviewsofthes
amedata14WhatareConstraints?Constraintsenforcerulesatthetablelevel.Constraintspreventthedeletionofatableiftherea
redependencies.Thefollowingconstrainttypesarevalid:NOTNULLUNIQUEPRIMARYKEYFOREIGNKEYCHECK15WhatisanIndex
?Anindex:IsaschemaobjectIsusedbytheOracleservertospeeduptheretrievalofrowsbyusingapointerCanreducediskI/Obyusingarapidpatha
ccessmethodtolocatedataquicklyIsindependentofthetableitindexesIsusedandmaintainedautomaticallybytheOracleserver16HowAreIndexesCreated?Automaticall
y:AuniqueindexiscreatedautomaticallywhenyoudefineaPRIMARYKEYorUNIQUEconstraintinatabledefinition.Manually:Us
erscancreatenonuniqueindexesoncolumnstospeedupaccesstotherows.17DataTypesDataTypeDescriptionVARCHAR2(size)Variable-lengthcharacterdataCHAR(si
ze)Fixed-lengthcharacterdataNUMBER(p,s)Variable-lengthnumericdataDATEDateandtimevaluesLONGVariable-le
ngthcharacterdataupto2gigabytesCLOBCharacterdataupto4gigabytesRAWandLONGRAWRawbinarydataBLOBBinarydat
aupto4gigabytesBFILEBinarydatastoredinanexternalfile;upto4gigabytesROWIDA64basenumbersystemrepresentingtheuniqueaddressofarow
initstable.18总结通过这部分课程的学习,您需要掌握以下内容:关系数据库基本概念常用数据库对象表索引约束常用数据类型SQL语言基础20目标通过这部分课程的学习,您将了解以下内容:SQL语句的种类执行基本的Select语句在表中插入数据行在表中修改数据行从表
中删除数据行控制事务处理21SQLStatementsSELECTINSERTUPDATEDELETECREATEALTERDROPTRUNCATECOMMITROLLBACKSAVEPOINTGRANTREVOKEDataretriev
alDatamanipulationlanguage(DML)Datadefinitionlanguage(DDL)Datacontrollanguage(DCL)22基础SELECT语句语法SELECT*|{[DISTINCT]column|expression
[alias],...}FROMtable;23使用算术操作符SELECTlast_name,salary,salary+300FROMemployees;…24使用列的别名SELECTlast_name"Name",salary*12
"AnnualSalary"FROMemployees;SELECTlast_nameASname,commission_pctcommFROMemployees;……25使用连接符和字符串SELECT
last_name||'isa'||job_idAS"EmployeeDetails"FROMemployees;…26排除重复的行SELECTDISTINCTdepartment_idFROMemployees;27使用WHER
E条件SELECTemployee_id,last_name,job_id,department_idFROMemployeesWHEREdepartment_id=90;28字符串和日期值都使用单引号.字符串值区分大小写,日期值需注意格式.SEL
ECTlast_name,job_id,department_idFROMemployeesWHERElast_name='Whalen';29比较条件操作符=>>=<<=<>含义等于大于大于或等于小于小于或等于不等于30其它的比较条件操
作符BETWEEN...AND...IN(set)LIKEISNULL含义两个值之间匹配值列表中值匹配一个字符样式空值31使用BETWEEN条件可以使用该条件显示某范围内的值.SELECTlast_name,salaryFROMemployeesWHEREsalaryBETWEEN25
00AND3500;LowerlimitUpperlimit32SELECTemployee_id,last_name,salary,manager_idFROMemployeesWHEREmanager_idIN(100,101,201);
使用IN条件满足成员列表中的条件.33使用LIKE条件搜索条件能包括两种模式匹配类型:%表示许多字符._表示一个字符.SELECTfirst_nameFROMemployeesWHEREfirst_nameLIKE'S%';34使用NU
LL条件测验空值使用ISNULL条件.SELECTlast_name,manager_idFROMemployeesWHEREmanager_idISNULL;35逻辑条件OperatorANDORNOT含义两部分条件都返回真
值则结果返回真值两部分条件中有任意一部分返回真值则结果返回真值如果条件返回假则结果返回真值36使用AND操作符要求条件都为真.SELECTemployee_id,last_name,job_id,salaryFROMemployeesWHEREsalary>=100
00ANDjob_idLIKE'%MAN%';37SELECTlast_name,job_idFROMemployeesWHEREjob_idNOTIN('IT_PROG','ST_CLERK','SA_REP');UsingtheNOTOperat
or38SELECTlast_name,job_id,department_id,hire_dateFROMemployeesORDERBYhire_date;ORDERBY条件带ORDERBY条件的排序ASC:升序,缺省DESC:降
序ORDERBY条件在Select语句最后.…39数据操作语句一条DML语句在下列情况下被执行:向表中增加新的数据行修改表中存在的数据从表中删除数据一个事务由DML语句集合形成的逻辑工作单元
构成.40INSERT语句语法.INSERTINTOtable[(column[,column...])]VALUES(value[,value...]);41向表中插入新的数据行插入的新行应包括所有的列值.插入的值应按照表中列缺省的顺序排
列.如插入所有的列,INSERT条件中可随意选择是否列出所有列.INSERTINTOdepartments(department_id,department_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.插入特殊的日期型值Verifyyouraddition.43带子查询的INS
ERT语句.字段的数据类型必须匹配.INSERTINTOsales_reps(id,name,salary,commission_pct)SELECTemployee_id,last_name,salary,commission_pctFROMemployeesWHEREjob_idLIK
E'%REP%';4rowscreated.从另外一个表中复制行44UPDATE语句语法可一次性修改多行UPDATEtableSETcolumn=value[,column=value,...][WHEREcondition];45UPDATEemployeesSETdepartme
nt_id=70WHEREemployee_id=113;1rowupdated.在WHERE条件中指定需要修改的行.修改表中所有的行.修改表中数据UPDATEcopy_empSETdepartment_id=110;22rowsupdated.46UPDATEcopy_empSETdepa
rtment_id=(SELECTdepartment_idFROMemployeesWHEREemployee_id=100)WHEREjob_id=(SELECTjob_idFROMemployeesWHEREemplo
yee_id=200);1rowupdated.基于另外表SELECT得到的值修改数据使用子查询实现:47DELETE语句语法DELETE[FROM]table[WHEREcondition];48通过WHERE条件指定删
除的行.省略WHERE条件,所有的行都将被删除.从表中删除多行DELETEFROMdepartmentsWHEREdepartment_name='Finance';1rowdeleted.DELETEFROMcopy_emp;22rowsd
eleted.49DELETEFROMemployeesWHEREdepartment_id=(SELECTdepartment_idFROMdepartmentsWHEREdepartment_na
meLIKE'%Public%');1rowdeleted.基于另外表SELECT得到的值删除数据通过子查询语句从另外表中得到值作为删除条件.50数据库事务一个数据库完整事务包含以下情况:构成对数据的一次一致性改变的DML语句(一条或多条)一条DDL语句51数据库事务
当第一条DMLSQL语句执行时开始当下列任意事件发生时结束:提交或回滚语句执行一条DDL执行(自动提交)系统崩溃52控制事务SAVEPOINTBSAVEPOINTADELETEINSERTUPDAT
EINSERTCOMMITTimeTransactionROLLBACKtoSAVEPOINTBROLLBACKtoSAVEPOINTAROLLBACK53UPDATE...SAVEPOINTupdate_done
;Savepointcreated.INSERT...ROLLBACKTOupdate_done;Rollbackcomplete.回滚改变到一个标记在当前的事务中可通过SAVEPOINT语句创建标记.ROLLBACKTOSAVEPOINT语句
可回滚到标记.54自动的commit发生在:DDL语句执行隐性的事务处理55COMMIT;Commitcomplete.改变数据.Commit改变.DELETEFROMemployeesWHEREemployee_id=99999;1r
owdeleted.INSERTINTOdepartmentsVALUES(290,'CorporateTax',NULL,1700);1rowinserted.提交数据56回滚后数据状态将丢弃所有未COMMIT的改变:DELETEFROMco
py_emp;22rowsdeleted.ROLLBACK;Rollbackcomplete.57如何写SQL语句SQL语句不区分大小写.关键字不能分行隔开.条件通常被分行放置.缩进被用来提高语句的
可读性58总结通过这部分课程的学习,您将了解以下内容:SQL语句类型写一个SELECT语句:描述DML语句在表中插入数据行在表中修改数据行从表中删除数据行控制事务处理59练习请见《Orac
le数据库维护上机任务书》课堂练习-〉SQL语言基础数据库函数61目标通过这部分课程的学习,您将了解以下内容:描述SQL中用到的不同类型的函数在SELECT语句中使用字符,数值和日期等函数转换函数的使用62SQLFunc
tionsFunctionInputarg1arg2argnFunctionperformsactionOutputResultvalue63字符型函数字符型函数LOWERUPPERINITCAPCONCATSUBSTRLENGTHINSTRLPAD|RPADTRIMREPLACE大小写处理
函数字符处理函数64FunctionResult大小写处理函数能对字符串进行大小写转换.LOWER('SQLCourse')UPPER('SQLCourse')INITCAP('SQLCourse')sql
courseSQLCOURSESqlCourse65使用大小写处理函数SELECTemployee_id,last_name,department_idFROMemployeesWHERElast_name='higgins';norowss
electedSELECTemployee_id,last_name,department_idFROMemployeesWHERELOWER(last_name)='higgins';66CONCAT('Hello','World')SUBSTR('HelloWorld',1,5)LENGT
H('HelloWorld')INSTR('HelloWorld','W')LPAD(salary,10,'*')RPAD(salary,10,'*')TRIM('H'FROM'HelloWorld')HelloWorldHel
lo106*****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日期函数两个日期中的间隔月数MONTHS_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:Mustbeenclosedinsinglequotationmarksandiscasesensit
iveCanincludeanyvaliddateformatelementHasanfmelementtoremovepaddedblanksorsuppressleadingzerosIsseparatedfr
omthedatevaluebyacommaTO_CHAR(date,'format_model')73YYYY日期格式基本模型YEARMMMONTHDYDAYFullyearinnumbersYearspelledoutTwo-digitvalueformonthThree-letterabbr
eviationofthedayoftheweekFullnameofthedayoftheweekFullnameofthemonthMONThree-letterabbreviationofthemonthDDNumericdayofthemonth74使用TO_CHAR函
数转换日期SELECTlast_name,TO_CHAR(hire_date,'fmDDMonthYYYY')ASHIREDATEFROMemployees;…75使用TO_NUMBER和TO_DATE函数转换字符型到数值型:转换字符型到日期型:TO_
NUMBER(char[,'format_model'])TO_DATE(char[,'format_model'])76总结通过这部分课程的学习,您应该已经了解:描述SQL中用到的不同类型的函数在SELECT语句中使用字符,数值和日期等
函数转换函数的使用77练习请见《Oracle数据库维护上机任务书》课堂练习-〉数据库函数78问题和解答3F7IaLdPgSjVnYq$t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbN
eQiTlWo#r%u(y+B3E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x-A2D5
H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9
KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq
$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2
D5H8KbNfQiTlXo#s%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePh
TkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSjVnYq$t*w-A1D4
G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7J
aMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B
3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9K
cNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A
1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWn
Zq$u*x+A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)yF7JaMdPhSkWnZq$u*x
-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G
7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgS
kVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaM
dPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSnZq$u*x-A2D5G8KbNfQiTlXo#r%v
(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x
+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVn
Yq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7Ja
MdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JaM
ePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#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)z0C4F7IaMdPhSkVnZ
q$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWn
Zr$u*x+A2E5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!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+B3E6H9LcOgRjUmY
p!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#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)z0C4F7IaMdPgSk
VnZu(x+B2E5H9KcOfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A
1D5G8KbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQ
iUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfQiUlXp#s%1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%
v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfR
iUmXp#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-A1D
5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlX
o#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5
H9KcNfRiUlXp#1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LcOgRjVmYp!t&w)z
1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v
)y0C3F6IaLdOkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRi
UlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRj
UmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5cOfRjUmXp!s&v)z0C3F7Ia