什么是数据库?数据库是用于保存大量的,格式统一的数据,比如name,age,score。数据库的内部结构是由多个表tab
# 什么是数据库?数据库是用于保存大量的,格式统一的数据,比如name,age,score。数据库的内部结构是由多个表table构成的,每个表中有很多个字段构成的。
# 数据库管理多张表,表管理多个字段,字段里面存在数据。
# 数据库的分类:数据库分关系型数据库和非关系型数据库两种
# ————————关系型数据库————————
# 关系型数据库的特点:表和字段,数据和数据之间的关系都存在着关系。
# 优点: 1. 数据之间都存在着相互的联系,有利于数据之间的增删改查。
# 优点:2. 关系型数据库有事务操作,能保证数据库的完整性和一致性。
# 缺点:1. 数据和数据之间存在着关系,它的底层运行了大量的算法,这样会降低系统的效率和性能
# 缺点:2. 面对海量数据的增删改查操作会显得无能为力。
# 常见的关系型数据库:sqlite3,MySQL,SQLserver,qracle
# ————————非关系型数据库————————
# 非关系型数据库的特点:数据和数据之间不存在联系,他们之间是单独存在的
# 优点:1. 可以对海量的数据进行增删改查。
# 优点:2. 对海量的数据进行维护和处理的效率很高。
# 缺点:1. 非关系型数据库数据和数据之间没有存在关系,所以也没有强大的事务关系。
# 缺点:2. 虽然处理海量的数据效率很高,但是安全性很差。
# 常见的非关系型数据库:Redis,MongoDB
# 数据库的操作三步骤
# 1. 先链接数据库文件
# 2. 进行数据库的写入和读取
# 3. 管理数据库
import sqlite3
# 1. comment():负责数据库文件连接的一个函数,当要连接的数据库文件不存在的时候,会默认在当前目录下自动创建一个新的数据里文件
connect = sqlite3.connect('sqltest.db')
# 2. 要操作数据库,要先获取数据库游标,通过游标来操作表,接着对表里的数据进行增删改查的操作。
cursor = connect.cursor()
# 3. 数据库文件链接上了,游标也创建好了,接着就可以创建表,并且对表里的数据进行增删改查。
# 创建表(通过SQL语句来创建一个表)
# student:是表名
# id,name,age,score:表的字段
# INTEGER TEXT FLOAT:数据类型
# PRIMARY KEY:给id这个字段加约束,将id这个字段作为主键。
# 主键:主键是唯一的,不允许重复的,主要是给某一条数据设置一个唯一的标识,方便数据的查找和定位。
# if not exists:当表不存在则创建,存在则不创建,不会抛出异常
create_table = "create table if not exists student(id INTEGER PRIMARY KEY,name TEXT,age INTEGER,score FLOAT)"
# 通过游标执行创建表的SQL语句
cursor.execute(create_table)
# 通过SQL语句向表中插入一条数据where not exists(如果这个条件成立那么就不执行,否则就插入这条数据)
insert_sql = "insert into student(name,age,score) select '张三',22,76 where not exists (select * from student where name='张三')"
cursor.execute(insert_sql)
# 通过SQL语句更改表中的内容
# where后面跟的是筛选条件
update_sql = "update student set name='%s',age=%d,score=%2.f where name='张建行'"%('张三',10,55.567)
cursor.execute(update_sql)
# 通过SQL语句查询表中的数据
# *:查询所有数据
select_sql = "select * from student where age<20"
result = cursor.execute(select_sql)
# for x in result:
# print('我是x',x)
# fetchall():获取结果集的全部数据,一条数据对应着一个元组,然后再将这些元组嵌套在列表中进行返回
# print(result.fetchone())
# fetchone():获取结果集的一条数据,返回结果是一个由字段对应的数据组成的一个元组
# result.fetchone()
res = result.fetchall()
for tuple_tes in res:
print('id是%s'%tuple_tes[0])
print('name是%s'%tuple_tes[1])
print('age%s' % tuple_tes[2])
print('score%s' % tuple_tes[3])
# 删除表中的数据(SQL语句)
delete_sql = "delete from student where name='张三'"
cursor.execute(delete_sql)
# 提交操作
connect.commit()
# 关闭游标
cursor.close()
# 关闭数据库
connect.close()