創建表格:
CREATE TABLE Users(
id INTEGER blabla
name VARCHAR(128),
email VARCHAR(128)
)
CREATE TABLE Course(
id INTEGER blabla, %主鍵
cname TEXT
)
CREATE TABLE Member(
Users_id INTEGER,
Course_id INTEGER,
role INTEGER,
PRIMARY KEY (Users_id,Course_id)
) % many-many
插入和刪除數據:
INSERT OR IGNORE (REPLACE 忽略或代替) INTO Users(name,email)VALUES('bobo','[email protected]')
DELETE FROM Users WHERE name='bobo'
DROP TABLE IF EXISTS Users %如果存在名爲Users的表格則刪除它
更新數據:
UPDATE Users SET name='bob' WHERE email='[email protected]' %email爲指定內容的名字換成bob
調出數據:
SELECT * FROM Users % 調出所有數據
SELECT * FROM Users WHERE name='bob' %調出名字爲bob的數據
SELECT email FROM Users WHERE name='bob'
SELECT * FROM Users ORDER BY email %根據email排序
SELECT * FROM Users ORDER BY email DESC LIMIT 10 %取出排序後前十個數據
基於Python
import sqlite3
a = sqlite3.connect('xxx.sqlite')
cur = a.cursor() #光標移
cur.execute('xxxx') #執行XXX命令
cur.fetchone() / cur.fetchall() 取結果第一行/所有行
a.commit() #對數據庫數據的操作會在實現分配的緩存中進行,commit後數據庫數據才發生改變
合併數據:
SELECT A1,B1 FROM A,B WHERE A0=B1(主-外鍵) %A表外鍵對應有B表的話取出數據構成[A1,A2,B1]
SELECT A1,B1 FROM A JOIN B ON A2=B0(外-主鍵)%A2順序查找構成[A1,B1]
SELECT A1,A2,B0,B1 FROM A JOIN B ON A2=B0(外-主鍵)%可以看到A2,B0連接情況
SELECT A1,B1,C1,D1 FROM A JOIN B JOIN C JOIN D ON A.xxx_id = xxx.id AND blabla(三對外-主鍵) ORDER BY A1,B1,C1 (根據A1,B1,C1優先程度進行排列%多聯合情況,重點還是選取主表才能以此爲基礎與其他表連接
音樂數據庫模型和學生成績數據庫模型: