21.1 介绍
21.1.1 持久存储
关系型数据库(Relational Database Management System, RDBMS)
基本的存储机制有三种,分别是文件、关系型数据库或其他的一些变种。
21.1.2 基本的数据库操作和SQL语言
结构化查询语言(Structured Query Language, SQL)
1. 底层存储
通常为文件系统,可以是普通操作系统文件、专用操作系统文件,甚至有可能是磁盘分区。(?)
2. 用户界面
大部分数据库系统会提供一个命令行工具来执行SQL命令和查询。
3. 数据库
基于服务器的关系数据库管理系统——MySQL
基于文件的关系数据库管理系统——SQLite和Gadfly
4. 组件
可将数据库想象为一个表格,每行数据有一个或多个字段对应着数据库的列。每个表每个列及其数据类型的集合构成数据库的定义。
插入(inserting):往数据库里增加一条记录。
更新(update):修改库中一条已有的记录。
删除(deleting):删除表中已有的数据。
查询(querying):从一个数据库中请求符合条件的数据。可一步取回所有符合条件的数据,也可以循环逐条取出每一行。
5. SQL
书写SQL的基本风格是关键字大写,以分号来结束一条SQL语句。
(1) 创建数据库
CREATE DATABASE test; # 创建名叫test的数据库
GRANT ALL ON test.* to user(s); # 将该数据库的权限赋给具体用户(或全部用户)
(2) 选择要使用的数据库
USE test; # 登录时未指定具体数据库,则可使用本语句来选定数据库
(3) 删除数据库
DROP DATABASE test;
(4) 创建表
CREATE TABLE users (login VARCHAR (8), uid INT, prid INT); # 创建表user,它包含了一个类型为字符串的列login和两个类型为整型的字段uid和prid
列和字段?
(5) 删除表
DROP TABLE users;
(6) 插入行
INSERT INTO users VALUES('leanna', 311, 1); # 'leanna'对应login,311和1分别对应uid和prid
(7) 更新行
UPDATE users SET prid=4 WHERE prid=2; # 所有prid字段值为2的记录,其prid字段值变更为4
UPDATE users SET prid=1 WHERE uid=311; # 所有uid字段值为311的记录,其prid字段值变更为1
(8) 删除行
DELETE FROM users WHERE prid=%d; # 删除prid字段为数值的记录
DELETE FROM users; # 删除表中所有数据
21.1.3 数据库和python
python访问关系数据库,一是通过数据库接口,二是通过对象-关系管理器(ORM)。