创建表格:
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优先程度进行排列%多联合情况,重点还是选取主表才能以此为基础与其他表连接
音乐数据库模型和学生成绩数据库模型: