sqlite基本原理介绍与操作

sqlite 基本介绍

引题

为什么使用数据库:

之前的学习中,我们已经可以存储数据,变量,读写本地文件(txt,csv).

1. 持久化,内存中的变量当程序重启和电脑断电丢失数据,而硬盘可以长时间,持久地存储数据,数据存储到硬盘上的过程叫持久化,

2数据库更加专业强大。远比纯文本文档、excel表格强大,增删改查和统计函数。

数据库基本概念

观察表格、excel表格 ,打开了 学生列表.xls excel表格文档。类比引入数据库概念。

库 schema:好像整个表格文档。 好像一个物流公司共占地100亩,盖了50个仓库,A01仓库负责存储河南客户货物,A02仓库负责存储广州xx项目物料。每一个仓库对应一个项目。

表 table:对应excel表格里sheet1 sheet2。由行内容和列组成。表描述一个类,每一行描述一个对象。

字段 field:对应表格头部的 序号、班级、姓名。好像类的属性。字段里存储的值的类型需要事先定义。

值 value:表格每一行具体存储的信息。

主键 primary key:类似表格中 序号 这一列。数据库中这一列会自增并不会重复。

外键 foreign key: 表1学员信息里一个班级字段引用自另一个表班级信息表的id列。优点易于维护,保持数据一致性。

范式:描述 智游学校时,可以把全部信息字段定义到一张表上,也可以分为学员信息表、班级信息表、课程信息表。划分维度、信息耦合度可高可低,具体结合业务逻辑分析。

常见数据库介绍

关系型数据库:

sqlite:轻量级数据库。功能基础简单,在数据较少情况下性能并不比重型数据库低。优点,python解释器内置驱动,无需安装直接使用,适合初学数据库。手机应用使用的就是它。

mysql:最流行的数据库。中型。开源、php流行推动了mysql的流行。

PostgreSQL: 大象数据库,号称最先进的数据库。从大学兴起的开源数据库、架构优秀、功能前卫,数据量很大的时候,性能衰减不明显。消耗相同硬件资源的情况下性能和稳定性优于mysql数据库。django odoo等python框架官方推荐使用此数据库。但是目前市场占有率还不高。

oracle:地位很高的商用数据库。昂贵、稳定、功能强大,常与java配合使用。

DB2 sybase MSSQL等,其它的商用数据库。

access:微软office套件中包含,轻量,由于数据库门槛,使用者不多。

no-sql(not only sql)型数据库:

7. mongodb 存储单位是文档,json(类似后端dict)结构整个存进去。数据常放在内存中以获得查询性能,定期把数据持久化到硬盘上。

8. redis 键值对 “name”=“小明” 。

数据库字段类型

数据库创建表示要事先告诉计算机硬盘,每张表的每个字段存什么类型、将要存储的内容大还是小。长度过小,内容值存不进去,长度太大,浪费硬盘空间。我们需要选择合适的类型和长度。

各数据库字段类型关键字基本一致。mysql oracle postgresql常用字段类型如下:

整数

整数:常用INT INTEGER 占4个字节,2**32,可以表示常用范围整数。

(不常用)TINYINT(1字节) SMALLINT(2字节) MEDIUMINT(3字节)

BIGINT(8字节) 适用身份证号、VIP号码比较长的编号。

浮点数

常用 FLOAT(4字节) 单精度小数 。 即使是单精度,范围也不小。

DOUBLE(8字节) 双精度小数。

场景 金钱计算,轨道计算。

字符串

CHAR char(10) 可以存储长度(字节长度)不超过10的字符串。例如"hello"。但由于长度按照字节判断,存unicode编码的中文只能存3个。

常用 VARCHAR 0-65535字节,variable char 可变字符串。VARCHAR(5) 可以存储5个中文或5个英文字母。场景 用户名、家庭住址。

TEXT TINYTEXT medium longtext , 场景 大文本存储,书籍文章、用户反馈。

BLOB medium longblob ,二进制文件, 场景 图片、视频。但一般不在数据库中存储图片和视频,因为会增加数据库的计算压力和带宽传输压力和备份还原的难度和用户信息静态资源耦合到一起,解决方案是 图片视频存到普通文件目录下,数据库中存储文件路径。

日期

DATE 日期, 形如"2018-11-08"

常用 DATETIME 日期时间, “2018-11-08 16:52:30” “2018-11-08 16:52:30.123” “2018-11-08 16:52:30 GTM+8”

常用 TIMESTAMP 时间戳, 1541667270 1541667270.7252207 1541667270725

sqlite的字段比较简化:

INTEGER 整数

REAL 浮点数

TEXT 字符串

NULL 什么都不存

SQL

structured query language 结构化查询语言。专门对数据库进行查找、增加、修改、删除、统计的操作语言。

CURD 增删查改 create update retrieve delete。

书写风格,关键字大小写都行,建议大写。表名大小写都行,但是在一些数据库中不区分大小写,建议小写。

(重要)基本语法。

查找

SELECT 字段1,字段2,字段3,… FROM 表名; python中返回值形如[(1, 502班, 小明, 男), (), ()]。

字段比较多时简写为 SELECT * FROM 表名; 由于数据库执行时会把*转换为字段再执行,性能极微小下降。

SELECT * FROM 表名 WHERE 字段1 = 过滤值,字典2=过滤值 ; where限定条件查找。

2 添加

INSERT 字段1,字段2,… INTO 表名 VALUES (1, “小明”, “男”);

简写 INSERT INTO 表名 VALUES (1, “小明”, “男”);

修改

UPDATE 表名 SET 字段1=新值,字段2=新值 WHERE 字段1 = 过滤值;

注意没有where条件限定行的话将会更新整张表。

删除

DELETE FROM 表名; 注意会删除整张表。

DELETE FROM 表名 WHERE 字段1 = 过滤值; 限定条件删除某些行。

创建表

CREATE TABLE 表名 {

字段类型 字段名 其它关键字(主键 备注),

INT id PRIMARY KEY,

VARCHAR(20) username

测试

===

通过sql或图形化工具创建一个雇员表employee ,字段 id 整数 主键 自增、name姓名 字符串、sex性别 字符串、phone联系方式 字符串。

插入一些测试数据。 (张三,男,1373333333)(小明,男,136000000)(小红,女,None)

写py脚本,将employee表中数据全部查出。

查出所有性别男数据

更新小红电话为 13811111111

张三离职,删除姓名=张三 电话=1373333333 的一行。

假删除

修改表,增加字段 address办公地点 字符串。更新代码,修改所有人办公地点都为“智游314教室”

已知cursor.description() 可以获取到表字段的名字,

import sqlite3

connect = sqlite3.connect(“testsqlite.db”)

cursor = connect.cursor()

cursor.execute("""

UPDATE employee SET phone=138111111 where name = “小红”

“”")

# cursor.execute("""

# DELETE FROM employee where name = “张三”, phone=138111111222;

# “”")

# 假性删除,为了防止数据误删和方便找回。专门新建一个标识字段表示用户状态(正常、注销)

cursor.update("""

UPDATE employee SET del_flag=1 WHERE name=“小红”;

“”")

connect.commit()

cursor.execute("""

SELECT * FROM employee WHERE del_flag=0;

“”")

connect.close()

(了解)datagrip操作方法(pycharm集成database工具为例子):

pycharm左下角图标调出工具栏,打开pycharm右侧Database工具。

点加号-DataSource数据源-sqlite 。

弹出的对话框选择 drivers-sqlite(Xerial)

点击download sqlite-jdbc[latest]

如果网速不好的话 下载sqlite-jdbc-3.20.1.jar 。对话框+号-custom jars 从本地安装

驱动安装成功后点击apply应用

点击对话框 project data source ,开始配置连接数据库的实例

File路径点击 …图标,选择要连接的.db文件。

点test connection, seccessful为成功

点击ok退出。看到连接的数据库实例下有表。

沈阳专业治疗疱疹医院:http://www.sdjk99.com/

沈阳性病医院哪家好:http://yyk.39.net/sy/zhuanke/fc844.html

猜你喜欢

转载自blog.csdn.net/a13804947436/article/details/84166383