一.資料庫概述 1.什麼是資料庫?先來看看百度怎麼說的. 資料庫,簡而言之可視為電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的數據運行新增、截取、更新、刪除等操作。 所謂“資料庫”系以一定方式儲存在一起、能予多個用戶共用、具有儘可能小的冗餘度、與應用程式彼此獨立的數據集合。 資料庫,簡而言 ...
一.資料庫概述 1.什麼是資料庫?先來看看百度怎麼說的. 資料庫,簡而言之可視為電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的數據運行新增、截取、更新、刪除等操作。 所謂“資料庫”系以一定方式儲存在一起、能予多個用戶共用、具有儘可能小的冗餘度、與應用程式彼此獨立的數據集合。 百度的貌似不好理解啊,讓我說啊,資料庫是存儲數據的地方,你這不是廢話麽?你你你你你說的對,哈哈,存數據的地方是存在哪裡呢,存在硬碟上,為什麼不是存在記憶體裡面,因為記憶體無法永久保存。之前我們存數據都是使用的文件,在一個word文檔裡面寫一些羞羞的網址,然後保存,就存儲到硬碟上了。有同學就會說了,我這通過文件不是也將數據保存上了嗎?是的,沒毛病,但是你想,通過文件來操作數據,效率是不是很低,首先打開關閉就比較慢,其次是我們操作起來也比較麻煩,對不對,如果我想記錄一條關於我個人信息的數據,我使用文檔來存,是不是很不友好,並且我們要查數據的時候,看圖1:圖1是一個word裡面記錄的信息,如果我想查詢出所有人的名字,這個操作是不是就很難搞定了,來來來,配合起來~~,你應該說是的,那我就接著說,有同學可能就會說了,老師我用excel啊,看圖2,一列就搞定了,沒毛病,但是你想打開操作excel效率低不低。並且通過你自己寫的程式來操作這些文件是不是很麻煩,就你們學的open函數。其實效率低的原因是因為我們知道文件都是保存在硬碟上的,硬碟的效率本身就低,所以沒辦法.
這個表看著好亂啊,但是你細看一下,這幾個表之間建立了某種關係,共用著雙方的數據。這就是關係。關係型資料庫裡面存數據的時候就類似這個樣子的。有個大概瞭解了嗎~~~ 操作關係型資料庫的命令,我們稱之為SQL,看解釋
1.結構化查詢語言(Structured Query Language)簡稱SQL(發音:/ˈes kjuː ˈel/ "S-Q-L"),是一種特殊目的的編程語言,是一種資料庫查詢和程式設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統;同時也是資料庫腳本文件的擴展名。 2.結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶瞭解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的介面。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。 3.1986年10月,美國國家標準協會對SQL進行規範後,以此作為關係式資料庫管理系統的標準語言(ANSI X3. 135-1986),1987年得到國際標準組織的支持下成為國際標準。不過各種通行的資料庫系統在其實踐過程中都對SQL規範作了某些編改和擴充。所以,實際上不同資料庫系統之間的SQL不能完全相互通用
其中最後一句挺重要的:不同資料庫系統之間的SQL不能完全相互通用 常用的關係型資料庫:
2.1.1 oracle資料庫 Oracle前身叫SDL、由Larry Ellison和兩個變成任意在1977創辦,他們開發了主機的拳頭產品,在市場上大量銷售。Oracle公司是最早開發關係型資料庫的廠商之一,其產品支持最廣泛的操作系統平臺。目前Oracle關係資料庫產品的市場占有率數一數二 。 Oracle公司是目前全球最大的資料庫軟體公司,也是近年業務增長極為迅速的軟體提供與服務商 主要應用範圍:傳統大企業、大公司、政府、金融、證券等。 版本升級:oracle8i,oracle9i,oracle10g,oracle11g,oracle12c 2.1.2 MySQL MySQL被廣泛的應用在Internet上的大中小型網站中。由於體積小、速度快、總體擁有成本低,開放源代碼 2.1.3 MariaDB資料庫 MAriaDB資料庫管理系統是MySQL資料庫的一個分支,主要由開元社區維護,採用GPL授權許可。開發這個MariaDB的原因之一是:甲骨文公司收購了MySQL後,有MySQL閉源的潛在風險,因此MySQL開元社區採用分支的方式來避開這個風險。 MariaDB基於事務的Maria存儲引擎,替換了MySQL的MyISAM的存儲引擎,它使用了Percona的XtraDB(InnoDB的變體)這個版本還包括了PrimeBase XT (PBXT)和Federated X存儲引擎。 2.1.4 SQL Server資料庫 Microsoft SQL Server是微軟公司開發的大型關係資料庫系統。SQL Server的功能比較全面,效率高,可以作為中型企業或單位的資料庫平臺。SQL Server可以與Winodws操作系統緊密集成,不論是應用程式開發速度還是系統事務處理運行速度,都得到較大的提升,對於在Windows平臺上開發的各種企業級信息管理系統來說,不論是C/S(客戶機/伺服器)架構還是B/S(瀏覽器/伺服器)架構。SQL Server都是一個很好的選擇。SQL Server的缺點是只能在Windows系統下運行 2.1.5 Access資料庫 Access是入門級小型桌面資料庫,性能安全性都很一般,可供個人管理或小型企業只用 Access不是資料庫語言,只是一個資料庫程式,目前最新版本為Office 2007,其特點主要如下: (1)完善地管理各種資料庫對象,具有強大的數據組織,用戶管理、安全檢查等功能 (2)強大的數據處理功能,在一個工作組級別的網路環境中,使用Access開發的多用戶管理系統具有傳統的XSASE(DBASE、FoxBASE的統稱)資料庫系統所無法實現的客戶伺服器(Ckient/Server)結構和響應的資料庫安全機制,Access具備了許多先進的大型數據管理管理系統所具備的特征。 (3)可以方便地生成各種數據對象,利用存儲的數據建立窗體和報表 (4)作為Office套件的一部分,可以與Office集成,實現無縫連接 (5)能夠利用Web檢索和發佈數據,實現與Internet的連接,Access主要適用於中小企業應用系統,或作為客戶機/伺服器系統中的客戶端資料庫。 2.1.6 其他不常用關係型資料庫
2.2 非關係型資料庫
非關係型資料庫也被成為NoSQL資料庫,NOSQL的本意是“Not Olnly SQL” 指的是非關係型資料庫,而不是“No SQL”的意思,因此,NoSQL的產生並不是要徹底地否定關係型資料庫,而是作為傳統關係型資料庫的一個有效補充。NOSQL資料庫在特定的場景下可以發揮出難以想象的高效率和高性能。
隨著互聯網Web2.0網站的星期,傳統的關係型資料庫在應付web2,0網站,特別是對於規模日益擴大的海量數據,超大規模和高併發的微博、微信、SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以剋服的問題。 例如:傳統的關係型資料庫IO瓶頸、性能瓶頸都難以有效突破,於是出現了大批針對特定場景,以高性能和使用便利為目的功能特異化的資料庫產品。NOSQL(非關係型)類的數據就是在這樣的情景下誕生並得到了非常迅速的發展
高性能、高併發、對數據一致性要求不高 開源的NoSQL體系,如Facebook的Cassandra,Apache的HBase,也得到了廣泛認同,Redis,mongb也逐漸越來越受到各類大中小型公司的歡迎和追捧
NOSQL非關係型資料庫小結: 1、NOSQL不是否定關係資料庫,而是作為關係資料庫的一個重要補充 2、NOSQL為了高性能、高併發而生,忽略影響高性能,高併發的功能 3、NOSQL典型產品memcached (純記憶體),redis(持久化緩存),mongodb(文檔的資料庫)
非關係型資料庫又分為以下4種:
(1)鍵值(Key-Value)存儲資料庫 鍵值資料庫就類似傳統語言中使用哈希表,可以通過key來添加、查詢或刪除數據,因為使用key主鍵訪問,所以會獲得很高的性能及擴展性 鍵值(Key-Value)資料庫主要是使用一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數據。Key/value模型對於IT系統來說的優勢在於簡單、易部署、高併發 k1—>數據 k2—>數據 典型產品:Memcached、Redis、MemcacheDB、BerkeleyDB (2)列存儲(Column-oriedted)資料庫 ======>瞭解即可,一般公司用不到 這部分資料庫通常用來分散式存儲的海量數據,鍵仍然存在,但是他們的特點是指向了多個列。 典型產品:Cassandra,HBase (3)面向文檔(Document-Oriented)資料庫 面向文檔資料庫會將以文檔的形式存儲。每個文檔都是自包含的數據單元,是一系列數據項的集合。每個數據項都有一個名稱與對應的值,值既可以是簡單的數據類型,如字元串、數字和日期等;也可以是複雜的類型,如有序列表和關係對象。數據存儲的最小單位是文檔,同一個表中存儲的文檔屬性可以是不同的,數據可以使用XML、JSON或者JSONB等多種形式存儲 典型產品:MorgoDB、CouchDB (4)圖形(Graph)資料庫
常見的非關係型資料庫
2.2.1 memcached(key-value) Memcaced是一個開源的、高性能的、具有分散式記憶體對象的緩存系統。通過它可以減輕資料庫負載,加速動態的web應用,最初版本由LiveJoumal 的Brad Fitzpatrick在2003年開發完成。目前全球有非常多的用戶都在使用它來架構主機的大負載網站或提升主機的高訪問網站的響應速度。註意:Memcache 是這個項目的名稱,而Memcached是服務端的主程式文件名。 緩存一般用來保存一些進程被存取的對象或數據,通過緩存來存取對象或數據要比在磁碟上存取塊很多,前者是記憶體,後者是磁碟、Memcached是一種純記憶體緩存系統,把經常存取的對象或數據緩存在memcached的記憶體中,這些被緩存的數據被程式通過API的方式被讀取,memcached裡面的數據就像一張巨大的hash表,數據以key-value對的方式存在。Memcached通過緩存經常被存取的對象或數據,從而減輕頻繁讀取資料庫的壓力,提高網站的響應速度,構建出快速更快的可擴展的Web應用。 官網:http://memcached.org/ 由於memcached為純記憶體緩存軟體,一旦重啟所有數據都會丟失,因此,新浪網基於Memcached開發了一個開源項目Memcachedb。通過為Memcached增加Berkeley DB的特久化存儲機制和非同步主複製機制,使Memcached具備了事務恢復能力、持久化數據能力和分散式複製能力,memcached非常適合需要超高性能讀寫速度、持久化保存的應用場景,但是最近幾年逐漸被其他的持久化產品替代如Redis Memcached小結: 1、key-value行資料庫 2、純記憶體資料庫 3、持久化memcachedb(sina) 2.2.2 Redis(key-value) 和Memcached類似,redis也是一個key-value型存儲系統。但redis支持的存儲value類型相對更多,包括string(字元串)、list(鏈表)、set(集合)和zset(有序集合)等。這些數據類型都支持push/pop、add/remove及取交集、並集和差集及更豐富的操作,而且這些操作都是原子性的。為了保證效率,redis的數據都是緩存在記憶體中。區別是redis會周期性的把更新的數據寫入磁碟或者把修改操作寫入追加的記錄文件,並且在基礎上實現了master-slave(主從)同步。 redis是一個高性能的key-value資料庫。redis的出現、很大程度補償了memcached這類key/value存儲的不足,在部分場合可以對關係資料庫起到很好的補充作用。它提供了Python、Ruby、Erlang、PHP客戶端,使用方便。 官方:http://www.redis.io/documentation redis特點: 1)支持記憶體緩存,這個功能相當於memcached 2)支持持久化存儲,這個功能相當於memcachedb,ttserver 3)資料庫類型更豐富。比其他key-value庫功能更強 4)支持主從集群、分散式 5)支持隊列等特殊功能 應用:緩存從存取memcached更改存取redis 2.2.3 MongoDB(Document-oriented) MongoDB是一個介於關係型資料庫和非關係型資料庫之間的產品,是非關係型資料庫當中功能最豐富,最像關係資料庫的。他支持的資料庫結構非常鬆散,類似json的bjson格式,因此可以存儲比較複雜的數據類型。Mongodb最大的特點是他支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係資料庫單表查詢的絕大部分功能,而且還支持對數據建立索引。 特點: 高性能、易部署、易使用、存儲數據非常方便 主要功能特性: 1.面向集合存儲,易存儲對象類型的數據 2.“面向集合”(Collenction-Orented)意思是資料庫被分組存儲在數據集中,被稱為一個集合(Collenction)每個 集合在資料庫中都有一個唯一的標識名,並且可以包含無限數目的文檔,集合的概念類似關係型資料庫(RDBMS)里的表(table)不同的是它不需要定義任何模式(schema) 3.模式自由 模式自由(schema-free)意為著存儲在mongodb資料庫中的文件,我們不需要知道它的任何結構定義。 4.支持動態查詢 5.支持完全索引,包含內部對象 6.支持查詢 7.支持複製和故障恢復 8.使用高效的二進位數據存儲,包括大型對象 9.自動處理碎片、以支持雲計算層次的擴展性 2.2.4 Cassandra(Column-oriented) Apache Cassndra是一套開源分散式Key-Value存儲系統。它最初由Facebook開發,用於存儲特別大的數據。Facebook目前在使用此系統。 主要特點: 1.分散式 2.基於column的結構化 3.高伸展性 4.Cassandra的主要特點就是它不是一個資料庫,而是由一堆資料庫節點共同構成一個分散式網路服務,對Cassandra的一個寫操作,會被覆制到其他節點上去,對Cassandra的讀操作。也會被路由到某個節點上面去讀取。 Cassandir是一個混合型的非關係的資料庫,類似於Google的BigTable。其主要功能比Dynomie(分散式的key-value存儲系統)更豐富,Cassandra最初由Facebook開發,後轉變成了開源項目。 2.2.5 其他不常用非關係型資料庫 HBase、MemcacheDB、BerkeleyDB、Tokyo Cabinet\Tokyo Tyrant(ttserver) ttserver 持久化輸出,缺點存儲2千萬條 性能下降(由日本人發明) 二.Mysql介紹 1.mysql版本 雙授權版本:社區版(完全免費,功能也夠nb了)和商業版(更好,功能更多更強大一些,但是收費,VIP,有售後服務,也會參考和吸收社區版的一些nb的功能,安全性和穩定性都是最好的,大幾十萬),一般NB的開源軟體都是雙授權的 每個版本又分四個版本依次進行發佈: Alpha版:一般只在開發公司內部使用,不對外公開,測試、自我檢查的版本 Beta版:一般是開發完也測試完的版本,一般不會出現比較大的性能bug(一般我們不用,阿裡、去哪兒會使用這個版本,有些新功能,內部有高手能調,也能評估新功能的性能) RC版:根據Beta版測試之後收集到一些bug等在進行完善的一個版本 GA版:軟體正式發佈的版本,沒有特別的需求一定要使用GA版,有些公司追求新功能會使用Beta版,這是個例。 2.MySQL的產品線:(mysql是C++寫的,oracle 9i版本之前是C語言寫的,之後主要是java) 最早期,mysql是按照3.x--4.x--5.x等來開發的,但是為了提高MySQL的競爭優勢,以及提高性能、降低開發維護成本等原因,同時,更方便企業用戶更精準的選擇合適的版本產品用於自己的企業生產環境中,MySQL在發展到5.1系列版本之後,重新規劃為三條產品線。 第一條:5.0.xx 到 5.1.xx產品線系列介紹 第二條:5.4.xx 到 5.7.xx產品線系列介紹(主流:5.5和5.6) 第三條:6.0.xx 到 7.1.xx產品線系列介紹 3. MySQL資料庫軟體命名介紹 以mysql-5.6.42.tar.gz的版本號來解釋: 1.第一個數字5是主版本號,描述了文件格式。所有版本5發行都有相同的文件格式。 2.第二個數字6是發行級別。主版本號和發行級別組合到一起便構成了發行序列號。 3.第三個數據42是在此發行系列的版本號,隨每個新發佈版遞增。通常你需要已經選擇發行的最新版本,每次更新後,版本字元串的最後一個數字會遞增。如果增加了一些新功能或者微小的不相容性,版本字元串的第二個數字會遞增。如果文件格式改變,第一個數字會遞增。 一般有的版本也會加上上面我們說的4個版本的尾碼,beta、alpha、rc版、ga版等等,我們舉得這個例子是不帶尾碼的,就相當於GA版 4.1 MySQL版本選擇建議 1.穩定版:選擇開源的社區版的穩定版GA版本 2.產品線:可以選擇5.1、5.5、5.6,互聯網公司主流5.5和5.6,其次是5.1. 3.選擇MySQL資料庫GA版發佈後6個月以上的GA版本。 4.要選擇前後幾個月沒有大的BUG修複的版本,而不是大量修複BUG的集中版本 5.最好向後較長時間沒有更新發佈的版本。 6.開發、測試、運維、DBA進行自己本地測試的時候,最好要和線上的版本一致,最差也要相容,所以作為開發,你要清楚公司用的哪個版本的資料庫 7.作為內部開發測試資料庫環境,跑大概3-6個月的時間。 8.優先企業非核心業務採用新版本的資料庫GA版本的軟體。 10.想DBA高手請教,或者在技術分為好的群里和大家一起交流,使用真正高手用過的好用的GA版本產品 經過上述工序後,若沒有重要的功能BUG或者性能瓶頸,則可以開始考慮作為任何業務數據服務的後端資料庫軟體。 好了,同志們,鋪墊了這麼多,我們要開始學習實戰內容啦,來看第四大節,修改密碼~~
三.Mysql的下載安裝,簡單應用及目錄介紹 1.下載安裝 win10系統下安裝說明:
#1、下載:MySQL Community Server 5.7.16 http://dev.mysql.com/downloads/mysql/ #2、解壓 如果想要讓MySQL安裝在指定目錄,那麼就將解壓後的文件夾移動到指定目錄,如:C:\mysql-5.7.16-winx64 #3、添加環境變數 【右鍵電腦】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變數】--》【在第二個內容框中找到 變數名為Path 的一行,雙擊】 --> 【將MySQL的bin目錄路徑追加到變值值中,用 ; 分割】 #4、初始化 mysqld --initialize-insecure #5、啟動MySQL服務 mysqld # 啟動MySQL服務 #6、啟動MySQL客戶端並連接MySQL服務 mysql -u root -p # 連接MySQL伺服器 #7、將mysql添加系統服務 註意:--install前,必須用mysql啟動命令的絕對路徑 # 製作MySQL的Windows服務,在終端執行此命令: "c:\mysql-5.7.16-winx64\bin\mysqld" --install # 移除MySQL的Windows服務,在終端執行此命令: "c:\mysql-5.7.16-winx64\bin\mysqld" --remove 註冊成服務之後,以後再啟動和關閉MySQL服務時,僅需執行如下命令: # 啟動MySQL服務 net start mysql # 關閉MySQL服務 net stop mysql
Linux系統下安裝說明: 這裡只做安裝的一個說明,下載的話根據自己實際情況到官網下載就可以了,提醒一點:在linux上使用mysql的時候,一定要註意的就是許可權問題,linux噁心的地方就是許可權問題。 2.mysql的簡單使用演示
1.解壓tar包 cd /software #cd到一個自己創建的文件夾中 tar -xzvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz #解壓下載下來的mysql文件,如果沒在這個文件夾中,記得把文件移動到這個文件夾中,通過mv指令 mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql-5.6.21 #通過mv指令給這個解壓出來的文件改了個名字 2.添加用戶與組 groupadd mysql #添加用戶組 useradd -r -g mysql mysql #創建mysql用戶,並添加到mysql用戶組 chown -R mysql:mysql mysql-5.6.21 #這是mysql用戶和mysql用戶組的歸屬 chmod +x -Rf /usr/local/mysql #賜予可執行許可權 3.安裝資料庫 su mysql cd mysql-5.6.21/scripts ./mysql_install_db --user=mysql --basedir=/software/mysql-5.6.21 --datadir=/software/mysql-5.6.21/data #使用mysql用戶來將我們下載並解壓的那個mysql文件,安裝到/software/mysql-5.6.21/data這個目錄裡面 4.配置文件 cd /software/mysql-5.6.21/support-files #配置文件在這個目錄下 cp my-default.cnf /etc/my.cnf #copy一份my-default.cnf文件到etc目錄下,並起名為my.cnf文件 cp mysql.server /etc/init.d/mysql #copy一份mysql.server文件,到etc的init.d的mysql文件夾中,啟動載入的初始配置文件會有一部分在這個目錄裡面讀取 vim /etc/init.d/mysql #若mysql的安裝目錄是/usr/local/mysql,則可省略此步 修改文件中的兩個變更值 basedir=/software/mysql-5.6.21 #基礎目錄 datadir=/software/mysql-5.6.21/data #數據目錄 5.配置環境變數 vim /etc/profile #環境變數的配置文件 ,添加下麵兩行 export MYSQL_HOME="/software/mysql-5.6.21" export PATH="$PATH:$MYSQL_HOME/bin" #使配置生效,通過source指令 source /etc/profile 6.添加自啟動服務 chkconfig --add mysql chkconfig mysql on 7.啟動mysql service mysql start 8.登錄mysql及改密碼與配置遠程訪問 mysqladmin -u root password 'your_password' #修改root用戶密碼 mysql -u root -p #登錄mysql,需要輸入密碼 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION; #允許root用戶遠程訪問(預設遠程連接是不能使用root用戶來連接的) mysql>FLUSH PRIVILEGES; #刷新許可權 9. 一些必要的初始配置(除了下麵這些,將來玩mysql的時候還有很多很多的配置) 1)修改字元集為UTF8 vi /etc/my.cnf 在[client]下麵添加 default-character-set = utf8 在[mysqld]下麵添加 character_set_server = utf8 2)增加錯誤日誌 vi /etc/my.cnf 在[mysqld]下麵添加: log-error = /usr/local/mysql/log/error.log general-log-file = /usr/local/mysql/log/mysql.log 3) 設置為不區分大小寫,linux下預設會區分大小寫。 vi /etc/my.cnf 在[mysqld]下麵添加: lower_case_table_name=1 修改完重啟:#service mysql restart
這裡只是給大家演示一下mysql是個什麼樣子,具體怎麼管理數據,後面我們會學,這裡只做演示用,因為演示一下之後,你對這個東西就有了一些簡單的認識和瞭解,再進行後面的學的時候,你就不會摸著黑聽理論了,所謂的瞎聽了,哈哈。註意,我們下麵會輸入一些指令進行操作資料庫,資料庫裡面的指令必須要用;分號結尾,然後才能執行,切記。 1.開啟服務端,mysqld\ net start mysql 2.使用mysql自帶的客戶端進行連接,cmd下輸入mysql -u root -p,然後回車,會提示你輸入密碼,此時初始的root用戶還沒有密碼,所以還是直接回車就可以連接上了 3.show databases;先不講裡面的內容,說一下這是幾個庫,每個項目可以有自己單獨的一個庫,裡面放這個項目的所有數據表 4.創建一個庫:create database CRM;然後show databases;查看一下就有了這個crm庫,不分大小寫,統一會變成小寫,對照著我們mysql安裝目錄下的data文件夾裡面的內容看一下,庫就是對應的文件夾。 5.我們目前在所有資料庫之上,想在我們自己項目的庫裡面操作數據,就需要切換到我們自己這個crm項目的庫裡面進行數據的操作,切換資料庫使用use + 庫名,例如:use crm;就提示你切換成功了。 6.我們說過,庫裡面維護的數據就像一張一張的數據表,類似excel,對不對,那我們創建一張表看一下,命令: create table student( id int, name char(10), age int, ); 7.再執行show tables;就可以看到有了一個student表 8.查看一下這個表裡的數據select * from student;發現什麼數據也沒有 9.插入幾條數據,寫幾條數據:insert into student values(1,'d',18),(2,'x',11),(3,'d',10),(4,'k',9);然後回車,就執行了這條指令,然後我們再查看一下這個表裡面有沒有數據了,執行上一條指令,select * from student;發現裡面就有數據了: 結果: mysql> select * from student; +------+------+------+ | id | name | age | +------+------+------+ | 1 | d | 18 | | 2 | x | 11 | | 3 | d | 10 | | 4 | k | 9 | +------+------+------+ 4 rows in set (0.00 sec) 分析一下:上面這些就是mysql數據幫我們保存的數據,以表格的外貌展示,第一行為表頭,從第二行開始都是對應的數據,每列都是自己這一列規定的內容,比如id這一列是你插入的這幾條數據的id,我們這個insert就是插入數據,select就是查看數據,這就是我們通過MySQL自帶的客戶端來操作的MySQL服務端來進行數據的操作。MySQL服務端和操作系統及硬碟打交道,快速的幫你實現數據的操作,其他的語言開發的客戶端就是通過這種形式來操作資料庫裡面的數據的,將來我們使用python操作資料庫的時候,會使用一個叫做pymysql的工具來搞,到時候會給你們講,他就是一個咱們MySQL伺服器的客戶端,連接上服務端就可以操作服務端的保存的你的項目的數據了。例如用戶要查看自己的信息,就通過你寫的程式接受到客戶的請求,通過自己的mysql客戶端去MySQL服務端查看對應的信息,然後mysql服務端將這些信息發送給你的py程式客戶端,你通過程式再將數據返回給你的用戶,你的用戶就看到了自己的信息,就是這麼個過程,大家理解了嗎。 真正的資料庫維護優化等高級資料庫的技術一般都是由公司的DBA來做,或者由比較懂資料庫的運維來做,一般不會讓開發來搞,除非你開發人員的資料庫能力很強,這些NB的技術包括:資料庫優化,資料庫BUG解決,資料庫備份(冷備、熱備),保證數據不丟失,集群,高可用等等保證項目的穩定性和可用性及高併發用(很多的用戶都來操作數據,你要併發),資料庫各項配置參數的調優,慢sql語句的提煉和調優,資料庫開發、資料庫更新,數據遷移,數據恢復,分庫分表等等,這些是資料庫的高端技術,而針對開發人員,一般你需要學習這些:基本的開發環境使用的資料庫搭建,然後增刪改查就差不多了。當然如果想提升自己的能力和水平(還有薪資水平),資料庫是你必須要學好的內容,但是那是你做開發之後的事情了,而且有好多同學目前已經在資料庫或者運維方面很NB了,但是開發還不行啊,對不對,哈哈,好好學python,資料庫不是你學習python的重點,但是必須要會一些基本的內容,懂得越多越好,ok嗎,同志們~~~ 3.MySQL安裝目錄介紹 看圖:
其中,我們重點看一下data文件夾:如果你找不到自己建立的庫或者表的文件,可能不在這個data文件夾下麵,連接上mysql之後,輸入show global variables like "%datadir%";來查看數據文件存儲路徑,找到路徑之後,到對應路徑下如果找不到這個文件夾,那麼可能是隱藏的,把隱藏的文件顯示一下就行了。