1.爲何要使用數據庫?python
基於咱們以前所學,數據想要永久保存,都是保存於文件中的,毫無疑問,一個文件僅僅只能存在於某一臺機器上。若是咱們暫時忽略直接基於文件來存取數據的效率問題,而且假設程序全部的組件都運行在一臺機器上,那麼用文件存取數據,並無什麼問題,可是很不幸,這些假設都是咱們本身意淫出來的,真實狀況下都會出現如下幾個問題:mysql
1.程序全部的組件就不可能運行在一臺機器上程序員
#由於這臺機器一旦掛掉則意味着整個軟件的崩潰,而且程序的執行效率依賴於承載它的硬件,而一臺機器機器的性能總歸是有限的,受限於目前的硬件水平,就一臺機器的性能垂直進行擴展是有極限的。 #因而咱們只能經過水平擴展來加強咱們系統的總體性能,這就須要咱們將程序的各個組件分佈於多臺機器去執行。
2.數據安全問題redis
#根據1的描述,咱們將程序的各個組件分佈到各臺機器,但需知各組件仍然是一個總體,言外之意,全部組件的數據仍是要共享的。但每臺機器上的組件都只能操做本機的文件,這就致使了數據必然不一致。 #因而咱們想到了將數據與應用程序分離:把文件存放於一臺機器,而後將多臺機器經過網絡去訪問這臺機器上的文件(用socket實現),即共享這臺機器上的文件,共享則意味着競爭,會發生數據不安全,須要加鎖處理。。。。
3.併發sql
根據2的描述,咱們必須寫一個socket服務端來管理這臺機器(數據庫服務器)上的文件,而後寫一個socket客戶端,完成以下功能:mongodb
#1.遠程鏈接(支持併發) #2.打開文件 #3.讀寫(加鎖) #4.關閉文件
總結數據庫
#咱們在編寫任何程序以前,都須要事先寫好基於網絡操做一臺主機上文件的程序(socket服務端與客戶端程序),因而有人將此類程序寫成一個專門的處理軟件,這就是mysql等數據管理軟件的由來,可是mysql解決的不靜靜是數據共享的問題,還有查詢效率,安全性等一系列的問題,總之,把程序員從數據管理中解脫出來,專一於本身的程序邏輯的編寫。
1.數據安全
描述事物的符號記錄被稱爲數據,描述事物的符號既能夠是數字,也能夠是文字、圖片、圖像、聲音、語言等,數據有多種表現形式,它們均可以通過數字化後存入計算機。服務器
2.數據庫網絡
數據庫即存放數據的倉庫,只不過這個倉庫是在計算機存儲設備上,並且數據是按必定的格式存放的。數據庫中的數據按必定的數據模型組織、描述和存儲,具備較小的冗餘度、較高的數據獨立性和易擴展性,並可爲各類用戶共享。
3.數據庫管理系統(DataBase Management System 簡稱DBMS)
在瞭解數據和數據庫的概念後,如何科學地組織和存儲數據,如何高效獲取和維護數據成了關鍵,這就用到了一個有系統軟件---數據庫管理系統。常見的數據管理系統有:MySQL、Oracle、SQLite、Access、MS MQL Server等。
Mysql,甲骨文公司的免費數據庫管理系統,主要用於大型門戶,例如搜狗、新浪等,它主要的優點就是開放源代碼,由於開放源代碼的數據庫是免費的。
Orance,一樣是甲骨文公司的產品,不過他是收費的,可是Orance數據庫主要用於銀行,鐵路,飛機場等,該數據庫功能強大,軟件費用高。
SQL Server,微軟公司的產品,主要應用於大中型企業,如聯想、方正等。
4.數據庫服務器、數據管理系統、數據庫、表與記錄的關係(重點!!!)
記錄:鋼鐵俠 22 男 (多個字段的信息組成的一條記錄,即文件中的一行內容)
表:student (即文件)
數據庫:school (即文件夾)
數據庫管理系統:MySql (是一個軟件)
數據庫服務器:一臺計算機 (對硬件的配置要求較高)
總結:
數據庫服務器——運行數據庫的管理軟件的計算機
數據庫管理軟件——管理數據庫的軟件
數據庫——組織文件(表)的文件夾
表——存放多條記錄的文件
額外內容:
數據庫客戶端——能夠鏈接數據庫的任意客戶端
數據庫管理員DBA
5.數據庫的分類
1.關係數據庫:有表的概念,以表中一條條記錄存儲數據的數據庫稱之爲關係數據庫,表明的數據庫有:mysql、orance、sqlServer、access、db2。
2.非關係數據庫:沒有表的概念,經過key---value鍵值對方式存儲數據的數據庫,表明的數據庫有:mongodb、redis、memcache。
接下里咱們重點講解以mysql數據爲例的數據庫操做。
1.MySql介紹
在瞭解安裝過程前,咱們來了解一下MySql數據庫。
#mysql就是一個基於socket編寫的C/S架構的軟件 #客戶端軟件 mysql自帶:如mysql命令,mysqldump命令等 python模塊:如pymysql
2.Mysql的下載安裝
#一、下載:MySQL Community Server 5.7.16 http://dev.mysql.com/downloads/mysql/ #二、解壓 若是想要讓MySQL安裝在指定目錄,那麼就將解壓後的文件夾移動到指定目錄,如:C:\mysql-5.7.16-winx64 #三、添加環境變量 【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】 --> 【將MySQL的bin目錄路徑追加到變值值中,用 ; 分割】 #四、初始化服務器 mysqld --install #五、啓動MySQL服務 cmd命令行下:mysqld 或者在服務中手動打開MYSQL的服務(進入系統服務: win+r => services.msc => 找到mysql服務手動啓動或關閉)# 啓動MySQL服務 #六、啓動MySQL客戶端並鏈接MySQL服務 mysql -u root -p # 鏈接MySQL服務器
3.Mysql操做
基本操做
# 查看mysql版本: select version(); # 查看當前用戶: select user(); # 查看mysqld下的(當前用戶能夠操做的)全部數據庫: show databases;
密碼操做
# 知道舊密碼 # 修改密碼: mysqladmin -uroot -p舊密碼 password "新密碼"
# 遺忘舊密碼 # 1.繞過受權表啓動服務(先中止安全認證的服務): mysqld --skip-grant-tables; # 2.以任意密碼登陸root用戶: mysql -uroot -p任意 # 3.更新密碼: update mysql.user set password=password("新密碼") where user=root and host="localhost" # 4.刷新權限: flush privileges; #5.關閉當前的數據庫服務器,利用操做以下: 1.tasklist|findstr mysql :找到當前mysql服務器的端口號 2.taskkill /F /pid 端口號 :關閉服務器 #6.打開安全認證的服務器,即去服務中打開MYSQL服務器 #再次進入mysql發現密碼已經改好了。
統一字符編碼
# 1.在mysql安裝根目錄下:建立my.ini (my.cnf) (命令:type nul>文件名.文件後綴) #2. 修改配置文件 [mysqld] default-character-set=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8 #mysql5.5以上:修改方式有所改動 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8 #3. 重啓服務 #4. 查看修改結果: \s show variables like '%char%'
四 初識sql語句(結構化查詢語言)
1.庫的基本操做
#前提:已經鏈接上數據庫
#1.增:建立數據庫 #採用默認編碼集(即配置文件中的編碼集):create database db1; #db1爲數據庫名 #採用自定義編碼集:create database db1 charset = "gbk"; #2.查:查看數據庫信息 #縱觀全部的數據庫:show databases; #查看某個數據庫的詳細信息:show create database db1; #db1爲數據庫名 #3.改:修改數據庫的編碼集 # alter database db1 charset ="utf8"; #4.刪,移除數據庫 #drop database db1;
2.表的基本操做
#在具體的某個庫下建立表 #進入指定的數據庫 :use db1 #db1數據庫名 #肯定當前使用的數據庫: select database(); #1.增:建立表(字段1 類型,...,字段n 類型) #create table t1(name char ,age int ); #2.查:查看錶信息 #查看當前數據庫中的全部表:#show tables #查看當前某張表的詳細信息:show create table t1; #t1爲表名 #查看錶字段結構信息:desc t1; #t1爲表名 #3.改:修改表信息 #修改字段屬性 : alter table t1 modify name char(20); #修改字段名 : alter table t1 change name user char(16); #修改表名 :alter table t1 rename t2; #將表名t1修改成t2 #刪:移除表 #drop table t1;
3.字段的基本操做
#前提:知道具體操做的是哪張表 #1.增:添加字段 #insert into t2(user,age) values("aa",18),("bb",20); #2.查: #select * from t2 查看t2表中的所有字段信息 #select user from t2 查看t2表中的user的字段信息 #3.改 #update t2 set age =28 where user ="cc"; #4.刪 #delete from t2 where age >8 刪除t2表中年齡大於8的字段信息