SQL(結構化查詢語言)是一種通用資料庫查詢語言。 SQL具有資料定義、資料操作和資料控制功能,可以完成資料庫的全部工作。 SQL語言使用時只需要用告訴電腦“做什麼”,而不需要告訴它“怎麼做”。
SQL語言有兩種使用方式,一是直接以指令方式互動使用;二是嵌入到C/C 、Python等主語言中使用。
sqlite資料庫的建立與連接
sqlite資料庫的建立與連接分三步驟:
(1)導入模組
import sqlite3 #或者: from sqlite3 import dbapi2 #导入sqlite3模块的dbapi2接口模块
(2)利用connect方法建立資料庫
connection=sqlite3.connect(filename) #filename为数据库文件名,如果该文件存在则打开该数据库,如果不存在则创建一个新的数据库文件。 #该方法返回一个数据库连接对象
(3)關閉連線物件
connection.close() #关闭连接,更新数据库文件
表格是資料庫中存放關係資料的集合,一個資料庫通常包含了多個表,如學生表、班級表、教師表等,表和表之間透過外鍵關聯。
在SQL中,利用create語句建立表格語法結構如下:
create table 表名(字段1,…,字段n)
如,建立mytb表:
create table if not exists mytb( xm char, cj real, kc text )
表名是mytb;IF NOT EXISTS表示如果資料庫中不存在mytb資料表,就建立該表;如果該資料表已經存在,則什麼也不做;
xm char, cj real, kc text表示該資料表有3個字段,xm(姓名)是字串類型,cj(成績)是浮點數類型,kc(課程)是文字字串。
SQLite3支援的資料型別有:
null
(值=空)、integer
(整數)、real
(浮點數)、text
(字串文字)、blob
(二進位資料塊)。
在Python中我們可以使用execute 方法執行一條SQL語句
conn.execute('create table if not exists mytb( xm char, cj real, kc text )')
conn為連線物件execute()方法中參數為一條SQL語句,類型為字串
(1)插入記錄的SQL語句
#語法格式如下:
insert into 表名 [字段名] values [常量]
如:
insert into Persons values ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
(2)利用execute()執行SQL語句
cur.exceute(sql语句)
(3)提交交易
conn.commit() #提交事务,将数据写入文件,保存到磁盘中。
從「表」查詢滿足條件運算式的「目標列」
SELECT 目标列 FROM 表 [WHERE 条件表达式]
如,查詢年齡20歲以下的學生姓名及其年齡:
select sname age from student where age<20
如,查詢表中所有記錄:
select * from student
傳回多筆記錄(rows),如果沒有結果,則回傳空()
每一個SQLite 資料庫都有一個叫做sqlite_master 的表,該表會自動建立。
sqlite_master是一個特殊表, 儲存資料庫的元資訊, 如表(table), 索引(index), 視圖(view), 觸發器(trigger), 可透過select查詢相關資訊。
select name,sql from sqlite_master where type='table'
此語句用於查詢資料庫中資料表的名稱name,以及建立表格的SQL語句
更新記錄的SQL語句:
UPDATE 表名 SET 列名=表达式… [WHERE 条件]
當「條件」成立時,將某列的值改為「表達式」 如:
update student set cj=90 where xh="001"
可將001號同學的成績改為90
DROP TABLE和DELETE語句:
(1)刪除資料表所有記錄
DELETE FROM <表名>
如,刪除student表
delete from student
(2)刪除記錄
DELETE FROM <表名> WHERE <条件>
如,刪除表中學號xh為'001'記錄
delete from student where xh='001'
(3)刪除整個資料表
DROP TABLE 表名
如,刪除student表結構
drop table student
第1關:建立和連接資料庫檔案
本關任務:在目前目錄下,建立並連接mytest.db資料庫。
程式碼解析
def return_values(): #***********Begin**********# #(1)导入内置sqlite3模块 import sqlite3 #(2)创建conn连接对象(在当前路径下建立mytest.db数据库) conn = sqlite3.connect("mytest.db") #(3)关闭连接 conn.close() #***********End**********#
第2關:建立資料表
本關任務:建立或開啟資料表示例。
程式碼解析
#(1)导入sqlite3模块 import sqlite3 #(2)创建conn连接对象,建立mytest.db数据库 conn = sqlite3.connect("mytest.db") #(3)定义sql语句,创建mytb数据表,表中有三个字段xm、cj、kc,其数据类型分别为char、real、text sql_demo = "create table if not exists mytb( xm char , cj real , kc text )" #(4)执行sql语句 conn.execute(sql_demo) #(5)关闭连接 conn.close()
第3關:插入記錄
本關任務:建立一個sqlite3資料庫檔案mytest.db,再建立一個資料表mytb.db,往表裡插入三行記錄。
程式碼解析
#(1)导入sqlite3模块 import sqlite3 #(2)创建数据库文件mytest.db conn = sqlite3.connect("mytest.db") #(3)定义一个游标对象 cur = conn.cursor() #(4)定义创建数据表SQL语句 sql_create = "create table if not exists mytb(xm char,cj real,kc text)" sql_insert_by = "insert into mytb values ('宝玉',85,'计算机')" sql_insert_dy = "insert into mytb values ('黛玉',90,'计算机')" sql_insert_bc = "insert into mytb values ('宝钗',80,'数据库')" #(5)执行SQL语句,创建数据表mytb conn.execute(sql_create) #(6)依次插入3条记录,内容分别为:('宝玉',85,'计算机')、('黛玉',92,'计算机')、('宝钗',80,'数据库') cur.execute(sql_insert_by) cur.execute(sql_insert_dy) cur.execute(sql_insert_bc) #(7)提交事务 conn.commit() #(8)关闭连接 cur.close() conn.close()
第4關:查詢記錄
本關任務:設計一個程序,查詢已有資料庫檔案myfile.db中資料表mytb中所有記錄,及查詢資料表結構。
程式碼解析
#(1)导入sqlite3模块 import sqlite3 #(2)打开数据库文件myfile.db conn = sqlite3.connect("myfile.db") #(3)定义一个游标对象 cur = conn.cursor() sql_select = "select * from mytb" #(4)查询数据表mytb中所有记录,并赋值给列表 cur.execute(sql_select) lst = cur.fetchall() #(5)输出记录数 print(f"共{len(lst)}条记录") #(6)输出所有记录列表 print(lst) #(7)从sqlite_master表中查询数据表的名称和创建时的sql语句,查询结果赋值给列表,并输出列表内容 cur.execute("select name,sql from sqlite_master ") print(cur.fetchall())
第5關:更新與刪除記錄
本關任務:在sqlite資料庫中更新並刪除記錄
程式碼解析
#(1)导入sqlite3模块 import sqlite3 #(2)打开数据库my.db conn = sqlite3.connect("my.db") #(3)定义游标 cur = conn.cursor() #(4)更新记录,将xm“宝玉”的成绩cj改为0 cur.execute("update mytb set cj = 0 where xm = '宝玉'") #(5)删除成绩cj>90的记录 cur.execute("delete from mytb where cj > 90") #(6)删除数据表mytb中所有记录 cur.execute("delete from mytb") #(7)删除整个数据表mytb cur.execute("drop table mytb") #(8)提交事务 conn.commit() #(9)关闭游标 cur.close() #(10)关闭数据库连接 conn.close()
第6關:圖書資料庫的綜合操作
本關任務:在SQLite中建立資料庫mybook.db;在資料庫中建立資料表mytb;在表中定義:isbn(text )、書名(text)、價格(real)等字段,並插入記錄。
程式碼解析
#(1)导入sqlite3模块 import sqlite3 #(2)创建数据库mybook.db conn = sqlite3.connect("mybook.db") #(3)定义游标对象 cur = conn.cursor() #(4)创建表mytb cur.execute("create table if not exists mytb ( isbn text , 书名 text , 价格 real)") #(5)插入记录('9787302518358','欧美戏剧选读',88.00) cur.execute("insert into mytb values ('9787302518358','欧美戏剧选读',88.00)") #(6)插入记录('9787302454038','组织理论与设计 第12版',75.00) cur.execute("insert into mytb values ('9787302454038','组织理论与设计 第12版',75.00)") #(7)插入记录('9787302496878','中国文化经典读本',45.00) cur.execute("insert into mytb values ('9787302496878','中国文化经典读本',45.00)") #(8)提交事务,保存数据 conn.commit() #(9)读入所有记录,将查询记录赋值给列表,遍历输出列表内容 cur.execute("select * from mytb") lst = cur.fetchall() for x in lst: print(x) #(10)关闭游标 cur.close() #(11)关闭数据库 conn.close()
以上是Python中SQLite資料庫如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!