1. 程式人生 > >Python SQL 語法簡單入門

Python SQL 語法簡單入門

Python SQL 語法簡單入門

大家好,今天給大家分享一些python中基本的sql語法。基本是按照sqlite3 來寫的。

引題

為什麼要使用資料庫?

  1. 持久化 ,記憶體中的變數當程式重啟和電腦斷電時丟失資料,而硬碟可以長時間、持久地儲存資料。資料儲存到硬碟上的過程叫持久化。
  2. 資料庫更加專業強大 ;遠比純文字文件、excel表格強大,增刪改查和統計函式。

建表操作 “CREATE TABLE”

import sqlite3                         # 首先。我們要引入sqlite3 的包,這個包是在python中內建的。
connect = sqlite3.connect("test.db")   # 這裡是連線上一個資料庫“test.db”如果沒有這個資料庫的話就會建立一個
cursor = connect.cursor()              # 獲取遊標cursor 
sql = """CREATE TABLE student(
                        id INT PRIMARY KEY,
                        name VARCHAR
                ); """                 # 建立sql 語句 create table 加表名 (欄位名 加欄位型別 )欄位名之間以逗號分隔,這裡將id設定成主鍵,具有非空、自增、不重複的功能,也可在欄位型別後加上not null 表示非空。
cursor.execute(sql)                    # 執行sql語句 
connect.commit()    # 進行資料庫語句的提交操作,不提交則無法生效,每次執行後都要提交
cursor.close()      # 關閉遊標
connect.close()     # 關閉資料庫連線,在進行完操作之後需要將遊標和連線關閉
到目前這個表就已經建立好了,就是長這個樣子

這裡要注意的是這個表名之前是沒有的,如果表名存在而你又建立一個一樣的表名,這個時候是會報錯的,因此更安全的方法就是在“CREATE TABLE ”的後面加上“IF NOT EXISTS” 再加上表名,意思是如果沒有這個表名就建立。 因為現在沒有用函式和類的方法來寫。所以沒有加上這個。
sql = """CREATE TABLE IF NOT EXISTS student(
                        id INT PRIMARY KEY,
                        name VARCHAR(10)
                ); """

插入資訊操作"INSERT INTO"

sql = """
    INSERT INTO student (name) VALUES ( "小明");
"""                        # 插入語句是insert into 加表名 (欄位名, 欄位名)values (對應的值, 對應的值)因為id是主鍵自增,所以就沒有新增他的值
cursor.execute(sql)        #  執行sql 語句,連線資料庫和提交關閉資料庫的操作都是一樣的,這裡就不再做說明

插入之後表就變成了這樣
在這裡插入圖片描述

查詢資料庫操作"SELECT * FROM"

sql = """
    SELECT id,name from student;
    """                                #查詢語句select 加欄位名 查詢表中欄位的資訊 加* 查詢所有的資訊    from 表名 
cursor.execute(sql)
student_list = cursor.fetchall()       # 用一個變數來接受fetchall()查詢所有這個函式返回的值。
print(student_list)                    # 打印出查詢的結果

下面是新增限定條件的查詢

sql = """
    SELECT * FROM student WHERE name="小明"; 
"""                                    # select * from  表名 where   加上條件,不加的話就是查詢所有
cursor.execute(sql)
student = cursor.fetchone()            # fetchone ()是查詢一個,只有一個結果和fetchall有區別
print(student)

更新資料庫操作“UPDATE”

sql = """
    UPDATE student SET name="大紅" WHERE id=1;
"""                   #更新資料庫語句 update 加表名 set 欄位名=要更新的值  where 限定條件 ,如果不加where 和後面的條件,將會全部生效
cursor.execute(sql)   

這樣id為1 的這條資訊中的“name”欄位就變成了大紅

在這裡插入圖片描述

刪除資料庫操作“DELETE”

sql = """
    DELETE FROM student WHERE id = 1;
"""                   # 刪除語句   delete from 表名 where 範圍,不加where將會刪除整個表但是表的結構還存在就是相當於回到了剛剛建立表的時候

cursor.execute(sql)

丟棄表“DROP”(慎用

sql = """
    DROP TABLE student;
"""                 # 丟棄表(此操作比delete更加嚴重,會刪除表的結構)drop table 加上表名
cursor.execute(sql)

到這裡資料庫的一些基本操作就算介紹完畢了,下面總結一下sql語句中的欄位型別

  1. 整數
    整數:常用INT INTEGER 佔4個位元組,2**32,可以表示常用範圍整數。
    (不常用)TINYINT(1位元組) SMALLINT(2位元組) MEDIUMINT(3位元組)
    BIGINT(8位元組) 適用身份證號、VIP號碼比較長的編號。
  2. 浮點數
    常用 FLOAT(4位元組) 單精度小數 。 即使是單精度,範圍也不小。
    DOUBLE(8位元組) 雙精度小數。
    場景 金錢計算,軌道計算。
  3. 字串
    CHAR char(10) 可以儲存長度(位元組長度)不超過10的字串。例如"hello"。但由於長度按照位元組判斷,存unicode編碼的中文只能存3個。
    常用 VARCHAR 0-65535位元組,variable char 可變字串。VARCHAR(5) 可以儲存5箇中文或5個英文字母。場景 使用者名稱、家庭住址。
    TEXT TINYTEXT medium longtext , 場景 大文字儲存,書籍文章、使用者反饋。
    BLOB medium longblob ,二進位制檔案, 場景 圖片、視訊。但一般不在資料庫中儲存圖片和視訊,因為會增加資料庫的計算壓力和頻寬傳輸壓力和備份還原的難度和使用者資訊靜態資源耦合到一起,解決方案是 圖片視訊存到普通檔案目錄下,資料庫中儲存檔案路徑。
  4. 日期
    DATE 日期, 形如"2018-11-08"
    常用 DATETIME 日期時間, “2018-11-08 16:52:30” “2018-11-08 16:52:30.123” “2018-11-08 16:52:30 GTM+8”
    常用 TIMESTAMP 時間戳, 1541667270 1541667270.7252207 1541667270725

感謝觀看,歡迎您給出意見和建議!