2018python全棧爬蟲高端自動化課程大綱01課堂筆記01數(shù)據(jù)庫概述_第1頁
2018python全棧爬蟲高端自動化課程大綱01課堂筆記01數(shù)據(jù)庫概述_第2頁
2018python全棧爬蟲高端自動化課程大綱01課堂筆記01數(shù)據(jù)庫概述_第3頁
2018python全棧爬蟲高端自動化課程大綱01課堂筆記01數(shù)據(jù)庫概述_第4頁
2018python全棧爬蟲高端自動化課程大綱01課堂筆記01數(shù)據(jù)庫概述_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

概后來,數(shù)據(jù)可以在磁帶上,順序的、寫入磁帶1956年IBM發(fā)明了磁盤驅(qū)動器這個性產(chǎn)品,支持隨機隨著信息化時代的到來,有了硬件技術(shù)的發(fā)展,有大量的數(shù)據(jù)需要和管理,數(shù)據(jù)庫管理系統(tǒng)DBMS了。不管使用什么介質(zhì),數(shù)據(jù)庫的數(shù)據(jù)模型才是其和基礎(chǔ)按照數(shù)據(jù)模型分類:網(wǎng)狀數(shù)據(jù)庫、層次數(shù)據(jù)庫、關(guān)系型數(shù)以樹型結(jié)構(gòu)表示實體及其之間的聯(lián)系。關(guān)系只支持一對多。代表數(shù)據(jù)庫IBMIMS通用電氣最早在1964年開發(fā)出網(wǎng)狀數(shù)據(jù)庫IDS,只能運行在GE自家的主機上結(jié)點描述數(shù)據(jù),結(jié)點的聯(lián)系就是數(shù)據(jù)的關(guān)能夠直接描述客觀世界,可以表示實體間多種復雜關(guān)系,而這是層次數(shù)據(jù)模型無法做到的。比如,一個結(jié)點可以有多個父結(jié)點,結(jié)點之間支持可以多對多關(guān)聯(lián)。使用行、列組成的二維表來組織數(shù)據(jù)和關(guān)系,表中行(記錄)即可以描述數(shù)據(jù)實體,也可以描述實體間關(guān)關(guān)系模型比網(wǎng)狀模型、層次模型更簡單,不需要關(guān)系數(shù)的物理細節(jié),專心于數(shù)據(jù)的邏輯構(gòu)建,而且關(guān)系模型有的嚴格的數(shù)學理論基礎(chǔ)支撐。1970年,IBM的研究員E.F.Codd了名為“ARelationalModelofDataforLargeSharedDataBanks”的 基于關(guān)系模型構(gòu)建的數(shù)據(jù)庫系統(tǒng)成為RDBMS(RelationalDataBaseSystem)IBMDB2、Oracle的Oracle和Mysql、微軟的MSSQL。以前的infomix、SybaseOracle的發(fā)拉里·埃里森(LrryElison)仔細閱讀了IBM的關(guān)系數(shù)據(jù)庫的 ,敏銳在這個研究基礎(chǔ)上可以開發(fā)軟件系統(tǒng)。他們決定開發(fā)通用數(shù)據(jù)庫系統(tǒng)Oacle,這個名字來源于他們曾給局做過的項目名。幾個月后,他們就開發(fā)了Oacle1.0Oacle快速的被推銷,但是很不穩(wěn)定。直到1992年的時候,Oacle7才逐漸穩(wěn)定下來,并取得巨大成功。2001年的9i版本被廣泛應(yīng)用。日,甲骨文公司宣布將以每股9.50,總計74億美金收購sun(計算機系統(tǒng))公司。2010年1月功收購2013年,甲骨文超過IBM,成為繼微軟之后的全球第二大軟件公Mysql發(fā)1985年幾個瑞典人為大型零售商的項目設(shè)計了一種利用索引順序存取數(shù)據(jù)的軟件,這就是MyISAM的前身。6年,MySQL1.0發(fā)布,隨后發(fā)布了3.11.1版本,并開始往其它平臺移植。2000MySQL采用GPL協(xié)議開源。MySQL4.0開始支持MyISAMInnoDB引擎。200510月,MySQL5.0成為里程碑版本。2008年1月被Sun公司收購2009年1月,在Oracle收購MySQL之前,MontyWidenius擔心收購,就從MySQLServer5.5開始一條新的GPL分MySQL的引擎是插件化的,可以支持很多種引擎:MyISASM,不支持事務(wù),插入、查詢速度快。InnoDB,支持事務(wù),行級鎖,MySQL5.5起的默認引擎去據(jù)庫、EMC設(shè)備,可以說。而使用這些架構(gòu)的企業(yè),不但采購、成本極高,架構(gòu)還掌握在他人手中。對于阿里巴巴這樣大規(guī)模的互聯(lián)網(wǎng)應(yīng)用,應(yīng)該采用開源、開放的系統(tǒng)架構(gòu)。這種思路并不是阿里巴巴的新發(fā)明,國外的谷歌、 、亞馬遜等早已為之。只不過它們幾乎一開始就有沒有采用T商業(yè)公司的架構(gòu),所以他們也不用“IOE”。去IOE,轉(zhuǎn)而使用廉價的架構(gòu),穩(wěn)定性一定下降,需要較高的運維水平解NoSQL是對非SQL、非傳統(tǒng)關(guān)系型數(shù)據(jù)庫的統(tǒng)NoSQL一詞誕生于1998年,2009年這個詞匯被再次提出指非關(guān)系型、分布式、不提供ACID的數(shù)據(jù)庫設(shè)計模式隨著互聯(lián)網(wǎng)時代的到來,數(shù)據(jù)爆發(fā)式增長,數(shù)據(jù)庫技術(shù)發(fā)展日新月異,要適應(yīng)新的業(yè)務(wù)需求。隨著移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng)的到來,大數(shù)據(jù)的技術(shù)中NSQL也同樣重要。數(shù)據(jù)庫流行度數(shù)數(shù)據(jù)庫流行MySQL是一種關(guān)系型數(shù)據(jù)庫管理軟件,支持網(wǎng)絡(luò),默認服務(wù)端口3306MySQL通信使用mysql協(xié)議問MySQL應(yīng)該基于什么網(wǎng)絡(luò)協(xié)議通連接字符串 使用yum安裝rpm包,Centos自帶的版本太低,建議安裝5.5推薦安裝MriDB,或者Pecoa版本。Percona安裝在第十章介紹過,這里不再贅找一臺虛擬機,安裝好MySQL,充當數(shù)據(jù)庫服務(wù)器#yuminstallPercona-Server-shared-55-5.5.45-rel37.4.el6.x86_64.rpmPercona-Server- #yuminstallPercona-Server-shared-55-5.5.45-rel37.4.el6.x86_64.rpmPercona-Server- 5.5.45-rel37.4.el6.x86_64.rpmPercona-Server-server-55-5.5.45-rel37.4.el6.x86_64.rpm#servicemysql#mysql_secure_installation#mysql-uroot-p<test.sqltest.sql為測試SQL語SQL是結(jié)構(gòu)化查詢語言StructuredQueryLanguage。1987年被ISO組織標準化。SQL語句分DCL數(shù)據(jù)控制語言,負責數(shù)據(jù)庫權(quán)限控制,由GRANT和REVOKE兩個指令組TCL事務(wù)控制語言,負責處理ACID事務(wù),支持commit、rollback指SQL語句大小寫不敏感SQL語句末尾應(yīng)該使用分號結(jié)GRANT、REVOKE撤GRANTGRANTALLONemployees.*TO'wayne'@'%'IDENTIFIEDby'wayne';REVOKEALLON*.*FROMwayne;*為通配符,指代任意庫或者任意表。*.*所有庫的所有表%為通配符,它是SQL語句的通配符,匹配任意長度字刪除用戶(慎用

表示employees庫下所有的DROPDROPUSER創(chuàng)建數(shù)據(jù)庫是數(shù)據(jù)的集合,所有數(shù)據(jù)按照數(shù)據(jù)模型組織在數(shù)據(jù)庫CREATECREATEDATABASEIFNOTEXISTSgogsCHARACTERSETutf8mb4COLLATECHARACTERSET指定字符集。utf8mb4是utf8的擴展,支持4字節(jié)utf8mb4,需要MySQL5.5.3+。刪除數(shù)據(jù)DROPDROPDATABASEIFEXISTS創(chuàng)建列Column,也稱為字段FieldCREATECREATETABLE`employees``emp_no`int(11)NOT`birth_date`dateNOT`first_name`varchar(14)NOT`last_name`varchar(16)NOT`gender`enum('M','F')NOT`hire_date`dateNOTNULL,PRIMARYKEY(`emp_no`))ENGINE=InnoDBDEFAULT反引號標注的名稱,被認為是非關(guān)鍵查看列信{DESCRIBE|DESC}tbl_name[col_name|DESCDESCDESCemployees練設(shè)計一張表,記錄登錄賬戶的,應(yīng)該用戶的、登錄名DROPDROPDATABASEIFEXISTSCREATEDATABASEIFNOTEXISTStestCHARACTERSETutf8mb4COLLATECREATECREATETABLE`reg``id`int(11)NOT`loginname`varchar(50)DEFAULT`name`varchar(64)DEFAULT`password`varchar(128)DEFAULTNULL,PRIMARYKEY(`id`))PRIMARYKEY主表中一列或者多列組成唯一的y,也就是通過這一個或者多個列能唯一的標識一條記錄。主鍵的列不能包含空值nul。主鍵往往設(shè)置為整型、長整型,且自增AUO_INCREMENT。表中可以沒有主鍵,但是,一般表設(shè)計中,往往都會有主鍵。索引 約束UNIQUE約束(唯一鍵約束定義了唯一鍵索引,就定義了唯一鍵約PRIMARYKEY約定義了主鍵,就定義了主鍵約外鍵約束Foreign外鍵,在表B中的列,關(guān)聯(lián)表A中的主鍵,表B中的列就是外鍵如果在表B插入一條數(shù)據(jù),B的外鍵列插入了一個值,這個值必須是表A修改表B的外鍵值也是同樣,外鍵值同樣要在表A中存在。如果表A要刪除一條記錄,那么就等于刪除一個主鍵,那么如果表B中到了這個主鍵,就必須先刪除表B中修改表A的主鍵,由于主鍵的唯一性,修改的主鍵相當于插入新主鍵,那么表B過這個主鍵,將表A的主鍵外鍵約束,是為了保證數(shù)據(jù)完整性、一致性,杜絕數(shù)冗余、數(shù)據(jù)訛簡化操作,將復雜查詢SQL語句定義為視圖,可以簡化查數(shù)據(jù)安全,視圖可以只顯示真實表的部分列,或計算后的結(jié)果,從而隱藏真實表的MySQL中的數(shù)據(jù)類類含1字節(jié),帶符號的范圍是 。無符號的范圍tinyint,0表示假,非0表示。bool或boolean,就2字節(jié),帶符號的范圍是-32768到32767。無符號的范圍是0到47。無符號的范圍是長整型,8字節(jié),帶符號的范圍是符號的范圍是0 07。單精度浮點數(shù)精確到大約7位小數(shù)雙精度浮點數(shù)精確到大約15位小數(shù)日期。支持的范圍為'1000-01-01'到'9999-12-支持的范圍是'1000-01-0100:00:00'到'9999-12-31時間戳。范圍是'1970-01-0100:00:00'到2037固定長度,右邊填充空格以達到長度要求。M為長度,范圍為0~255。M指的是字符個變長字符串。 表示最大列長度。M的范圍是0到。但不能突破行最大字節(jié)大文本。最大長度為65535(2^16-1)個字大字節(jié)。最大長度為65535(2^16–1)字節(jié)的BLOBLENGTH函數(shù)返回字節(jié)數(shù)。而char和varchar定義的M是字符數(shù)限制char可以將字符串變成等長的,空間換時間,效率略高;varchar變長,省了空間選擇(selction):又稱為限制,是從關(guān)系中選擇出滿足給定條件的元組。投影(pjton):在關(guān)系上投影就是從選擇出若干屬性列組成新的關(guān)系。連接(in):將不同的兩個關(guān)系連接成一個關(guān)系。DMLCRUDInsert語INSERTINTOtable_name(col_name,...)VALUES向表中插入一行數(shù)據(jù),自增字段、缺省值字段、可為空字段可以INSERTINTOtable_nameSELECT...將select查詢的結(jié)果插入到如果主鍵、唯一鍵就執(zhí)行update后的設(shè)置。這條語句的意思,就是主鍵不在新增記錄,主鍵在就更新分字段如果主鍵、唯一鍵就忽略錯誤,返回一個警告UpdateUPDATE[IGNORE][WHEREwhere_de?nition]IGNORE意義同Insert語UPDATEregSETname='張三'WHEREDeleteDELETE[IGNORE]FROMtbl_name[WHEREwhere_de?nition]刪除符合條件的記select_expr,...[FROMtable_references[WHERE[GROUPBY{col_name|expr|position}[ASC|DESC],...[WITHROLLUP]][HAVING[ORDERBY{col_name|expr|position}[ASC|DESC],...][LIMIT{[offset,]row_count|row_countOFFSEToffset}][FORUPDATE|LOCKINSHAREMODE]]查詢的結(jié)果成為結(jié)果集recordsetSELECTSELECT--SELECT*FROMSELECTemp_no,first_name+last_nameFROMSELECTemp_no,CONCAT(first_name,'',last_name)FROM--AS定義別名,可選。寫ASSELECTemp_noas`no`,CONCAT(first_name,'',last_name)nameFROMemployeesLimit----返回5條記SELECT*FROMemployeesempLIMIT--返回5條記錄,偏移18SELECT*FROMemployeesempLIMIT5OFFSET18;SELECT*FROMemployeesempLIMIT18,5;Where運算描=等不等>、<、>=、大于、小于、大于等于、小于在某個范圍之內(nèi),betweenaandb等價于[a,字符串模式匹配,%表示任意多個字符,_表示一個指定針對某個列的多個可與或注意:如果很多表達式需要使用AND、OR計算邏輯表達式的值的時候,由于有結(jié)合律的問題,建議使用小括號來避免產(chǎn)生錯誤條件SELECT*FROMemployeesWHEREemp_no<10015andlast_nameLIKESELECT*FROMemployeesWHEREemp_noBETWEEN10010AND10015ANDlast_nameLIKE'P%';SELECT*FROMemployeesWHEREemp_noin(10001,10002,10010);Orderby對查詢結(jié)果進行排序,可以升序ASC、降序DESCSELECT*FROMemployeesWHEREemp_noin(10001,10002,10010)ORDERBYemp_no不返回重復----DISTINCTSELECTDISTINCTemp_nofromSELECTDISTINCTdept_no,emp_nofrom聚合函函描返回記錄中記錄的數(shù)目,如果指定列,則返回非NULL值的行COUNT(DISTINCT返回不重復的非NULL值的行AVG([DISTINCT]返回平均值,返回不同值的平MIN(expr),最小值,最SUM([DISTINCT]求和,Distinct返回不同值聚合SELECTCOUNT(*),AVG(emp_no),SUM(emp_no),MIN(emp_no),MAX(emp_no)FROM分組查使用 by子句,如果有條件,使用Having子句過濾分組、聚合過的結(jié)果聚合SELECTemp_no,SUM(salary),AVG(salary),COUNT(emp_no)from--SELECTemp_no,SUM(salary),AVG(salary),COUNT(emp_no)fromsalariesWHEREemp_no<--按照不同emp_noSELECTemp_no,SUM(salary),AVG(salary),COUNT(emp_no)fromsalariesWHEREemp_no<10003GROUPBYemp_no;--HAVINGSELECTemp_no,SUM(salary),AVG(salary),COUNT(emp_no)fromsalariesGROUPBYemp_noHAVINGAVG(salary)>45000;使用SELECTemp_no,SUM(salary),AVG(salary)ASsal_avg,COUNT(emp_no)fromsalariesGROUPBYemp_noHAVINGsal_avg>60000;--SELECTSELECTemp_no,SUM(salary),AVG(salary)ASsal_avg,COUNT(emp_no)fromsalariesGROUPBYemp_noHAVINGsal_avg>60000ORDERBYsal_avg;子查子查詢中不能使用Orderby子查SELECT*FROMemployeesWHEREemp_noin(SELECTemp_nofromemployeesWHEREemp_no>10015)ORDERBYemp_noDESC;SELECTemp.emp_no,emp.first_name,genderFROM(SELECT*fromemployeesWHEREemp_no>10015)ASempWHEREemp.emp_no<10019ORDERBYemp_noDESC;連接交叉連接cross笛卡爾乘積,全部交在MySQL中,CROSSJOIN從語法上說與INNERJOIN工資40SELECT*FROM20SELECT*FROM800SELECT*fromemployeesCROSSJOINinnerjoin,省略為join等值連接,只選某些?ed相等的元組(行),使用On內(nèi)連接,笛卡爾乘積800SELECT*fromemployeesJOINsalaries;SELECT*fromemployeesINNERJOINsalaries;ON等值連接40SELECT*fromemployeesJOINsalariesONemployees.emp_no=自然連接,去掉了重復列,且自行使用employees.emp_nosalaries.emp_no的條件SELECT*fromemployeesNATURALJOINsalaries;外連outerjoin,可以省略為分為左外連接,即左連接;右外連接,即右連接;全外SELECT*fromemployeesLEFTJOINsalariesONemployees.emp_no=SELECT*fromemployeesRIGHTJOINsalariesONemployees.emp_no=--SELECT*fromsalariesRIGHTJOINemployeesONemployees.emp_no=左外連接、右外連看表的數(shù)據(jù)的方向,誰是主表,誰的所有數(shù)據(jù)都自連表自己和自己連selectselectmanager.*fromempmanager,empworkerwheremanaer.empno=worker.mgrandworker.empno=1;selectmanager.*fromempmanagerinnerjoinempworkeronmanaer.empno=worker.mgrwhere事務(wù)InnoDB引擎,支持事務(wù)事務(wù),由若干條語句組成的,指的是要做的一系列操關(guān)系型數(shù)據(jù)庫中支持事務(wù),必須支持其四個屬性特描原子一致性持久持久性也稱永久性(permanence),指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來的其他操作或故障不應(yīng)該對其有任何影響原子性,要求事務(wù)中的所有操作,不可分割,不能做了一部分操作,還剩一部分操一致性,多個事務(wù)并行執(zhí)行的結(jié)果,應(yīng)該和事務(wù)排隊執(zhí)行的結(jié)果一致。如果事務(wù)的并行執(zhí)行和多線程讀寫共享資源一樣不可預期,就不能保證一致性。性,就是指多個事務(wù)共同的數(shù)據(jù)了,應(yīng)該互不干擾。性,指的是究竟在一個事務(wù)處理期間,其他事務(wù)能不能的問題持久性,比較好理解,就是事務(wù)提交后,數(shù)據(jù)不能丟MySQL級首先看看性不好,帶來哪些問題:更新丟失Lost事務(wù)A和B,更新同一個數(shù)據(jù),它們都了初始值100,A要減10,B要加100,A減去10后更新為90,B100更新為200,A的更新丟失了,就像從來沒有減過10一樣臟事務(wù)A和B,事務(wù)B到了事務(wù)A未提交的數(shù)據(jù)(這個數(shù)據(jù)可能是一個中間值,也可能事務(wù)A事務(wù))。事務(wù)A是否最后提交并不關(guān)心。只要到了這個被修改的數(shù)據(jù)就是臟讀。不可重復讀Unrepeatable事務(wù)A在事務(wù)執(zhí)行中相同查詢語句,得到了不同的結(jié)果,不能保證同一條查詢語句重復讀例如,事務(wù)A查詢了一次后,事務(wù)B修改了數(shù)據(jù),事務(wù)A又查詢了一次,發(fā)現(xiàn)數(shù)據(jù)不一致注意,臟讀講的是可以讀到相同的數(shù)據(jù)的,但是的是一個未提交的數(shù)據(jù),不是提交的最終結(jié)果幻讀Phantom事務(wù)A中同一個查詢要進行多次,事務(wù)B插入數(shù)據(jù),導致A返回不同的結(jié)果集,如同幻覺,就是幻讀。數(shù)據(jù)集有記錄增加了,可以看做是增加了記錄的不可重復讀。級描 到未提交的數(shù)READ讀已經(jīng)提交的數(shù)據(jù),ORACLE默認級可以重復讀,MySQL的默認級別可串行化。事務(wù)間完全,事務(wù)不能并發(fā),只能串行執(zhí)級別越高,串行化越高,數(shù)據(jù)庫執(zhí)行效率低;級別越低,并行度越高,性能越高。---設(shè)置會話級或者全 SET[SESSION|GLOBAL]TRANSACTIONISOLATION MITTED|READCOMMITTED|REPEATABLEREAD| 級SELECT@@global.tx_isolation;SELE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論