青少年等级考试专题-数据库

本节课开始,准备带学生做个简单的系统。所以先从数据库开始学习。

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

关系数据库 MySQL、SQL Server、Access、Oracle、Sybase、DB2、SQLite

非关系数据库 Redis、HBase、MongoDB、Memcache

课程中将选用SQLite进行讲解

为什么选用SQLite数据库?主要从以下几个方面考虑:

1、不需要一个单独的服务器进程或操作的系统(无服务器的)。
2、SQLite 不需要配置,这意味着不需要安装或管理。
3、一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
4、SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小250KiB。
5、SQLite 是自给自足的,这意味着不需要任何外部的依赖。
6、SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
7、SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
8、SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
9、SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

SQLite数据库安装

Windows

1、从https://www.sqlite.org/download.html 下载预编译的二进制文件
2、下载 sqlite-tools-win32-.zip 和 sqlite-dll-win64-.zip 压缩文件
3、创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件
4、添加 C:\sqlite 到 PATH 环境变量

cmd 输入 sqlite3

Mac OS / Linux

1、从https://www.sqlite.org/download.html 源代码区下载 sqlite-autoconf-.tar.gz 2、tar xvzf sqlite-autoconf-.tar.gz
3、cd sqlite-autoconf-*
4、./configure –prefix=/usr/local
5、make && make install

SQLite关键词

SELECT 查询
INSERT 插入
UPDATE 更新操作
DELETE 删除
ALTER 修改表结构
DROP 删除表、索引、视图、触发器或者数据库等
ANALYZE 分析数据库
AND/OR 查询语句,与/或条件
BEGIN TRANSACTION 事务
BETWEEN 查询条件,在...范围内
COMMIT 执行事务
CREATE INDEX 创建索引
CREATE UNIQUE INDEX 创建唯一索引
CREATE TABLE 创建表
CREATE TRIGGER 创建触发器
CREATE VIEW 创建视图
CREATE VIRTUAL TABLE 创建虚拟表,虚拟表是外部存储或计算引擎的接口,它似乎是一个表,但并不实际存储数据库文件中的信息
COUNT 查询总数
DETACH DATABASE 分离数据库
DISTINCT 查询唯一
EXISTS 是否存在
EXPLAIN 分析SQL
GLOB 匹配查询
GROUP BY 分组查询
HAVING 分组查询条件
IN 子查询
LIKE 模糊查询
ORDER BY 排序
ROLLBACK 回滚
WHERE 查询条件

SQLite数据类型

SQLite数据库操作

sqlite3 test.db 创建了数据库文件 test.db,位于 sqlite3 命令执行所在同一目录下。
.open test.db 同上
.databases 检查它是否在数据库列表中
.quit 退出 sqlite 提示符
sqlite3 test.db .dump > test.sql 导出完整的数据库在一个文本文件中
sqlite3 testDB.db < testDB.sql 恢复数据库
.tables 验证表是否已成功创建
.schema 查看表的完整信息

python操作SQLite

import sqlite3
import time

try:
	conn = sqlite3.connect('test.db')
	print ("数据库打开成功")
	c = conn.cursor()

	#增加
	for k in range(1, 1000):
		createTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
		sql = "insert into student(no, name, grade, create_time) values({}, '{}', {}, '{}')"
		sql = sql.format(k, '张三' + str(k), k%9, createTime)
		#print(sql)
		r = c.execute(sql)
		#print(r)
		conn.commit()

	# 修改
	updateSql = "UPDATE student set name = '{}' where no={}"
	updateSql = updateSql.format('兆鹏', 1)
	c.execute(updateSql)
	print('更新成功')
	conn.commit()

	#  查询
	cursor = conn.execute("SELECT * from student where 1")
	
	list = []
	for row in cursor:
		#print(row)
		#print('id=%d, clicks=%d' %(row[0], row[1]))
		dict = {}
		dict['no'] = row[0]
		dict['name'] = row[1]
		dict['grade'] = row[2]
		dict['createTime'] = row[3]
		list.append(dict)
	print(list)

	# 删除
	deleteSql = "delete from student where no={}"
	deleteSql = deleteSql.format(2)
	c.execute(deleteSql)
	print('删除成功')
	conn.commit()
except Exception as e:
	print(e)
This entry was posted in 日常. Bookmark the permalink.

发表评论