《《第24天》mysql和sqlite講解以及python操縱》要點(diǎn):
本文介紹了《第24天》mysql和sqlite講解以及python操縱,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
(首先感謝一下打賞我的司機(jī),我這里貌似看不到是誰,謝謝支持!)
今天主要講一下sqlite3數(shù)據(jù)庫和mysql數(shù)據(jù)庫,告訴大家如何快速的上手?jǐn)?shù)據(jù)庫把持.最后講一下,在linux中,我們?nèi)绾斡胹hell和python實(shí)現(xiàn)通訊錄的功能,另外使用python如何把持sqlite3和mysql數(shù)據(jù)庫.今天講的內(nèi)容有點(diǎn)多,所以python實(shí)戰(zhàn)放到明天講,到時(shí)候會(huì)實(shí)現(xiàn)python-mysql/sqlite實(shí)現(xiàn)一個(gè)小項(xiàng)目,希望大家關(guān)注一波!
開班第二十四天:
本日的課程大綱:
數(shù)據(jù)庫基本信息的講解
博客類和嵌入式數(shù)據(jù)庫
工作中如何快速安裝初始化mysql
作為數(shù)據(jù)庫管理員的實(shí)際需求實(shí)戰(zhàn)
shell和python操作數(shù)據(jù)庫
詳細(xì)講解:
數(shù)據(jù)庫基本信息的講解
數(shù)據(jù)庫一般分為關(guān)系型和非關(guān)系型數(shù)據(jù)庫,我們平時(shí)所了解的數(shù)據(jù)庫有很多,例如oracle,mysql,sqlserver,db2,postgresql,sqlite等等,但是這里我們要糾正一下,上面所涉及到的,都叫數(shù)據(jù)庫管理系統(tǒng)(DBMS),只不過我們習(xí)慣性的稱為什么什么數(shù)據(jù)庫,數(shù)據(jù)庫都是以文件的形式最終存在磁盤或者內(nèi)存中,但是存放在內(nèi)存中的數(shù)據(jù)有一個(gè)特點(diǎn)便是臨時(shí),易丟失,占用內(nèi)存.
統(tǒng)一操作數(shù)據(jù)庫的語言為SQL語言,SQL語言主要有四個(gè)方面:
數(shù)據(jù)把持語言(DML):主要為增刪改
數(shù)據(jù)定義語言(DDL):create,alter,rename,drop,truncate等
數(shù)據(jù)控制語言(DCL):grant,revoke,權(quán)限有關(guān)
事務(wù)控制語言
而事務(wù)呢,也是一個(gè)很重要的概念,它是一個(gè)完整工作和任務(wù)的完成,它有四個(gè)特點(diǎn)(ACID),下面是我從維基百科上截取的:
博客類和嵌入式數(shù)據(jù)庫
我們所認(rèn)識(shí)的博客類和嵌入式數(shù)據(jù)庫都是小型的,非關(guān)系型的,好比我們所熟知的sqlite,它就是一個(gè)嵌入式數(shù)據(jù)庫,這里我舉一個(gè)它的應(yīng)用,我們手機(jī)上的通訊錄,信息一般都是存放在sqlite中的,這種數(shù)據(jù)庫不需要連接,直接數(shù)據(jù)庫文件和腳本文件一起拷貝走,就可以了.而且它的查詢速度非常快,也很方便,適合在移動(dòng)設(shè)備上使用.
工作中如何快速安裝初始化mysql
這里我先講一下mysql,mysql是全球應(yīng)用最多的一個(gè)數(shù)據(jù)庫,它是一個(gè)關(guān)系型數(shù)據(jù)庫,之前是sun公司的,后來被oracle收購,但是開源是堅(jiān)持的,平常呢,我們可以使用社區(qū)版也就是免費(fèi)版.當(dāng)然也有企業(yè)版.今后呢,一般的公司用的多的還是mysql數(shù)據(jù)庫.講到mysql,當(dāng)然要講一下postgresql,這個(gè)數(shù)據(jù)庫在國外相對(duì)流行,國內(nèi)呢,不算很流行,感興趣的朋友可以去了解一下,一些外企好像挺多用這個(gè)的.
還必要講一下mysql是c/s模型的,也就是它必要進(jìn)行客戶端與服務(wù)端的連接,連接方式有兩種,一種是套接字文件,另一種是通過網(wǎng)絡(luò)連接.接下來我要講一下如何來安裝mysql和快速的初始化mysql.
1.安裝mysql,yum install mysql-server,它的安裝會(huì)自動(dòng)安裝一個(gè)命令行的客戶端.
2.什么都不要想,啟動(dòng)服務(wù),service mysqld restart,第一次啟動(dòng)會(huì)有一些提示信息,有興趣可以了解,不外我這里是快速教程,直接跳過.
3. mysql_secure_installation,初始化,這也是平時(shí)用的最多的方法對(duì)數(shù)據(jù)庫進(jìn)行初始化.除了要輸入暗碼,其他的全部回車就行.ok了!
4.設(shè)置默認(rèn)的字符集,在我們安裝好之后,字符集都是latin1的,所以要改成utf8,這里說一下字符集,在mysql中,客戶端和服務(wù)端中的數(shù)據(jù)庫以及數(shù)據(jù)庫中的表,字符集要一致,否則就是亂碼,那么我們就直接設(shè)置成utf8更好.首先在服務(wù)端設(shè)置,vim /etc/my.cnf,在mysqld下添加一行:default-character-set = utf8(重啟服務(wù)),接著在客戶端設(shè)置,這里我直接用本機(jī)當(dāng)服務(wù)端和客戶端,我可以設(shè)置一個(gè)mysql快捷連接啟動(dòng)的文件,這樣我直接在終端里運(yùn)行mysql,就自動(dòng)連接到mysql數(shù)據(jù)庫了.這個(gè)文件為:vim ~/.my.cnf,文件不存在,自己添加.暗碼自己設(shè)置成自己的暗碼.這里需要注意的是user = root 不是我們系統(tǒng)中root,而是mysql中的root.
5.這樣就初始化好了,運(yùn)行mysql,進(jìn)入.
作為數(shù)據(jù)庫管理員的實(shí)際需求實(shí)戰(zhàn)
實(shí)戰(zhàn)的前提是必要知道基本知識(shí):
1.創(chuàng)建刪除數(shù)據(jù)庫
create database db01; drop database db01;
也可以直接toch /var/lib/mysql/db01,但是這樣權(quán)限會(huì)有問題.
2.創(chuàng)建刪除表(首先use db01)
create table t01(id,name); drop table t01; create table t02 like t01; delete from t01 where id=1;
3.查詢
select id ,name as "姓名" ,tel "電話" from t01;
4.插入
insert into t01 values(....);
insert into t01 select * from t02 ON DUPLICATE KEY UPDATE tel=t01.tel;
5.更新
update t01 set password=password("*****") where id=1;
實(shí)戰(zhàn)任務(wù):
1.創(chuàng)建一個(gè)用戶:grant all on db01.* to user1 identified by 'password'; create user user1@ip identified by 'passwd';
(grant命令,當(dāng)user1不存在的時(shí)候,會(huì)直接創(chuàng)建user1并設(shè)置暗碼,如果user1存在,那么起到的作用就是修改暗碼的作用)
2.長(zhǎng)途連接數(shù)據(jù)庫:mysql -h ip -u username -ppasswd;
3.為其他普通用戶修改暗碼: grant usage on *.* to username@ip identified by "uplooking";
4.mysql普通用戶自己修改暗碼:
服務(wù)端要給這個(gè)普通用戶super權(quán)限,grant super on *.* to username@ip;
然后可以本身修改,mysqladmin -h 服務(wù)器ip -u username -poldpass password 'newpass';
5.忘記root暗碼:mysql啟動(dòng)跳過權(quán)限檢查,更新mysql.user表中的password字段,重新啟動(dòng)
修改vim ~/.my.cnf 或者 vim /etc/my.cnf,添加一行skip-grant-tables
如果是修改/etc/my.cnf,就要重啟服務(wù),然后執(zhí)行update mysql.user set password=password("newpass") where user="root" and host="localhost";
注釋掉skip-grant-tables
重啟服務(wù),連接數(shù)據(jù)庫就可以勝利了
6.回收權(quán)限:
show grants for username;(查看用戶所有的權(quán)限)
revoke select on app01.* from username;
本來username這個(gè)用戶對(duì)app01.*有all的權(quán)限,現(xiàn)在去掉select權(quán)限
7.給普通用戶添加授權(quán)的權(quán)限
grant usage on *.* to tom with grant option;
我給tom用戶添加了一個(gè)grant option權(quán)限,那么tom用戶就可以把本身所擁有的權(quán)限賦予給其他普通用戶.
shell和python操作數(shù)據(jù)庫
**針對(duì)與sqlite3數(shù)據(jù)庫:
1.shell把持,直接使用sqlite3 name.db "select * from name",就可以了
2.python把持,這里我們要學(xué)習(xí)一個(gè)python模塊為sqlite3,python連接sqlite3的步驟很明確,分為以下幾步:
import sqlite3
<1>創(chuàng)建連接
conn = sqlite3.connect("py.db")
<2>創(chuàng)建游標(biāo)
cursor = conn.cursor()
<3>執(zhí)行語句
cursor.execute("select * from pydb")
for row in cursor:
print row
<4>提交事務(wù),關(guān)閉游標(biāo),關(guān)閉連接
conn.commit()
cursor.close()
conn.close()
**針對(duì)與mysql數(shù)據(jù)庫:
1.shell把持:mysql -u root -ppassword -N -B -e "select * from t01" db01
-N表現(xiàn)不顯示字段名,-B表現(xiàn)不顯示表格外框,-e后面跟執(zhí)行sql語句,執(zhí)行多個(gè)sql語句可以用;隔開
2.python把持:
python要連接mysql,要使用連接器進(jìn)行連接,官方提供了一個(gè)純python寫的connector連接器,紅帽光盤里也提供了一個(gè)連接器:mysqldb,它是構(gòu)建在mysql-lib C語言庫之上的,所以我們一般選擇紅帽子提供的mysqldb來進(jìn)行實(shí)現(xiàn)python連接mysql.原理和python把持sqlite一樣,都是要?jiǎng)?chuàng)建連接游標(biāo),只不過剛開始要先認(rèn)證連接,
<1>yum install MySQL-python , import MySQLdb,注意大小寫要區(qū)分
<2> conn = MySQLdb.connect(host="",port="",user="",passwd="",db="",charset="utf8")
<3>我們每次在連接時(shí)候很麻煩,我們直接就可以把連接信息寫在一個(gè)字典中,然后通過字典調(diào)用就行.**config代表把字典當(dāng)成一個(gè)類似user="root"來處理.
總結(jié):
今天主要講了數(shù)據(jù)庫的基本概念,以及工作中作為數(shù)據(jù)庫管理員經(jīng)常遇到的問題解決辦法.內(nèi)容很多,我不可能全部講完而且很詳細(xì),我只能大概的講一下重要的,我這里有一些文檔,官方的,大家平時(shí)可以多閱讀官方文檔,這樣有助于提高自己的能力.需要的在公眾號(hào)中回復(fù)python_mysql.
頭條號(hào):愛家人愛老婆的IT男
QQ群:145252709,我會(huì)上傳資源,同時(shí)會(huì)有很多大神跟你們討論學(xué)習(xí)分享
微信公眾號(hào):法式猿的野生香蕉
歡迎參與《《第24天》mysql和sqlite講解以及python操縱》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/10694.html