什么是數(shù)據(jù)庫?Python操作數(shù)據(jù)庫難嗎(19)
小朋友們好,大朋友們好!
我是貓妹,一名愛上Python編程的小學(xué)生。
歡迎和貓妹一起,趣味學(xué)Python。
今日主題
今天我們學(xué)習(xí)下什么是數(shù)據(jù)庫,以及如何用Python操作數(shù)據(jù)庫。
數(shù)據(jù)庫=數(shù)據(jù)+庫
庫,漢語常用字(一級字),讀作kù,最早見于戰(zhàn)國文字,會意兼形聲字。
原義為收藏兵車及其他武器的處所;后來泛指收藏各種物品的處所;又指監(jiān)獄。
車庫是存放車的場所。
糧庫是存放糧的場所。
水庫是存放水的場所。
小金庫是存放錢的場所。
數(shù)據(jù)庫呢?
自然是存放數(shù)據(jù)的場所。
數(shù)據(jù)庫是“按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫”。是一個長期存儲在計算機(jī)內(nèi)的、有組織的、可共享的、統(tǒng)一管理的大量數(shù)據(jù)的集合。
小點的數(shù)據(jù)可能放在記事本中、word、ppt等軟件中,大量的數(shù)據(jù)呢?
一般都是保存到數(shù)據(jù)庫中。
數(shù)據(jù)庫其實就在我們身邊,你想想,你登錄一個網(wǎng)站或是APP,輸入用戶名和密碼,點擊下回車,信息正確登錄成功,信息錯誤登錄失敗。
幾百萬、幾千萬、甚至上億的信息存放在哪里呢?
這些信息就存放在數(shù)據(jù)庫中,這些信息包括用戶名、密碼、性別、地址、商品描述、圖片等諸多信息。
如何在幾百萬、幾千萬、上億的海量數(shù)據(jù)中,瞬間找到你輸入的數(shù)據(jù),然后判斷是否匹配,想想就是搞科技啊!
的確,數(shù)據(jù)庫是一門高科技。
常見的數(shù)據(jù)庫
常見的數(shù)據(jù)庫有哪些呢?
我們一起學(xué)習(xí)下。
Oracle應(yīng)該是世界上最大的數(shù)據(jù)庫公司,一般超大規(guī)模數(shù)據(jù)會用到oracle。
微軟的SQl Server,一般中等規(guī)模數(shù)據(jù)會用到SQL Server。
微軟的商業(yè)化產(chǎn)品,微軟sql語句兼容性好,商業(yè)化成熟度高。
微軟的Access,小巧,簡單易用,office系列之一。
MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型和大型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。
MySQL 在 2008 年被Sun以10億美金所收購,2009年4月20日Sun被甲骨文收購。
SQLite,是一款輕量型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個相對小的C庫中。
它的設(shè)計目標(biāo)是嵌入式的,而且已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,可能只需要幾百K的內(nèi)存就夠了。
它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源的世界著名數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。
MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。
MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。
操作數(shù)據(jù)庫
上面一下子粗略介紹了那么多數(shù)據(jù)庫,是不是有點懵?
對于非專業(yè)人員來講,只要會簡單使用就可以了。
專業(yè)人員,要學(xué)習(xí)很多知識呢。
咱們今天就用SQLite為例子,學(xué)習(xí)下數(shù)據(jù)庫的常用操作。
其他的數(shù)據(jù)庫需要下載安裝軟件,咱們今天只是簡單了解,?就不下載安裝包了。
Python本身已經(jīng)內(nèi)置了SQLite,不需要安裝,可以直接使用哦!
數(shù)據(jù)庫、數(shù)據(jù)表、字段、記錄等,我們先對這幾個名字有個大概的印象。
舉個例子,貓妹班級的語文成績、英語成績、數(shù)學(xué)成績。
先有個數(shù)據(jù)庫,貓妹班級成績。
數(shù)據(jù)庫中是數(shù)據(jù)表,這里有三張表,語文成績、數(shù)學(xué)成績、英語成績。
表中有字段和記錄,語文成績中的學(xué)號、姓名、成績是字段。
學(xué)號01,姓名貓妹,成績85,這表示語文成績表中的一條記錄。
學(xué)號不允許有重復(fù)值,可以作為主鍵。
創(chuàng)建數(shù)據(jù)庫
1行:需要導(dǎo)入sqlite3模塊。
4行:需要先用connnect創(chuàng)建一個connection對象。
如果數(shù)據(jù)庫文件lvye.db存在,則連接上它。
如果不存在,則創(chuàng)建后連接上它。
6行:創(chuàng)建cursor,中文是游標(biāo),我們都是通過游標(biāo)來訪問數(shù)據(jù)表的,比如增刪改查。
8行:執(zhí)行sql語句,這些語句是創(chuàng)建了一個表table,這個表中有id(主鍵)、姓名name、年齡age。
啥是主鍵呢?就是不能重復(fù)。
比如身份證號可以作為主鍵,而姓名不可以。
id類型是int,name類型是varchar,age類型是int。
12行:關(guān)閉游標(biāo)。
14行:關(guān)閉connection。
如果再次運行會報如下錯誤:
這是因為該數(shù)據(jù)中已經(jīng)存在 student table了,同一個數(shù)據(jù)庫中不能存在兩個同名的數(shù)據(jù)表。
增刪改查操作
數(shù)據(jù)庫中存放的是數(shù)據(jù)表,數(shù)據(jù)表中存放的是數(shù)據(jù)。
對數(shù)據(jù)表操作,最頻繁的就是增刪改查操作了。
增刪改查指的是在表中增加一條記錄、刪除一條記錄、修改一條記錄、查詢一條記錄。
增
insert into student (id, name, age) values (1, '李雷', 21)
表示向數(shù)據(jù)表student中添加一條數(shù)據(jù),這條數(shù)據(jù)的內(nèi)容是?(1, '李雷', 21),這些內(nèi)容的格式是(id, name, age)。
關(guān)閉數(shù)據(jù)庫連接之前一定要調(diào)用conn.commit(),否則數(shù)據(jù)更新不成功。
查
select * from student表示從數(shù)據(jù)表student中獲取所有數(shù)據(jù)。
它的返回值是一個列表,該列表的每一個元素都是一個元組。
改
update student set name='貓妹' where id=3
表示更新一條記錄,這條記錄的id是3,將其name改為貓妹。
刪
delete from student where id=3
表示從數(shù)據(jù)表中刪除一條記錄,這條記錄的id是3。
怎么樣?
不難吧?
你學(xué)會了吧?
和數(shù)據(jù)庫連接、斷開等這些都是固定的格式,遵守就可以了。
sql語句則學(xué)問很多,要精通需要多學(xué)習(xí)多練習(xí),它是一門編程語言,有沒有覺得它和咱們?nèi)祟愓Z言很接近?
SQL即結(jié)構(gòu)化查詢語言(Structured Query Language),是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng);同時也是數(shù)據(jù)庫腳本文件的擴(kuò)展名。
好了,我們今天就學(xué)到這里吧!
如果遇到什么問題,咱們多多交流,共同解決。
我是貓妹,咱們下次見!