数据库sqlite3的入门基础操作【python实现】

关于SQL的一些基本概念

  1. 为什么使用数据库?
    数据库提供了一种特殊的方式来存储数据,即将较小的信息片段保存起来以备日后恢复使用。当我们处理一个复杂的数据集合的时候,数据库允许我们操作数据而无需将整个数据集加载到内存中。
  2. SQL是什么?
    结构化查询语言Structured Query Language,SQL)是用于和数据库交互的语言,SQL是由语句组成的,这些语句告诉数据库你想要做什么,以及想要操作什么数据。然后,数据库取出数据,做你想要做的事情,要么保存你所请求的修改,要么给你相应数据。
  3. 如何安装sqlite3并且测试是否安装成功?
    在这里我们放上大佬的传送门:
    安装链接: 安装sqlite3的链接.

1、创建一个数据库

放在数据库中的数据总是包含在一个表中。一个数据库可以有1张或者多张表。

数据类型 说明
Null 空值,就像python中的none
Integer 整数
Real 浮点数
Text 字符串
Blob “blob”数据,如一个文件
以下这个代码片是用一个创建数据库的例子告诉我们大致代码包含哪些部分。
# python3实现SQL的基本操作
import sqlite3
# 想使用SQL的话,必须导入sqlite3库
conn = sqlite3.connect('mytest.db')
# 创建到一个数据库的连接。就像打开一个文件读取它一样。
# 这个文件可以使用绝对路径或相对路径(根据当前工作目录来指明文件的位置)
# 如果没有这个文件,会在路径所指创建一个,例如本例就在当前目录创建。
cursor = conn.cursor()
# 创建了一个游标,用来在数据库中移动,执行SQL语句,并且获取数据。
sql = '''create table students (name text, username text, id int)'''
# 此部分是sql语句,本例是创建一个表,其中包括列:name、username、id,这些列包含文本和整数。
cursor.execute(sql)
# 但是我们仅仅定义了这个sql语句还不够,需要execute来执行这条语句。
cursor.close()
# 做完这些需要使用游标关闭与数据库的连接。

2、向我们创建的数据库中的那张表添加数据

import sqlite3
conn = sqlite3.connect('mytest.db')
cursor = conn.cursor()
name_i = input('Student\'s name:')
username_i = input('Student\'s username:')
id_i = input('Student\'s id number:')
# 此时先将数据输入到变量中,为方便区分具名参数,我们后加_i
sql2 = ''' insert into students (name, username, id)
values (:st_name, :st_username, :id_num)'''
cursor.execute(sql2, {
    
    'st_name': name_i, 'st_username': username_i, 'id_num': id_i})
# 第一行意思是插入数据到“studens”表的name、username、id列。
# 第二行的三个参数都是具名参数,比如说st_name对应name这一列。
# 告诉我们要把第三行代码,键"st_name"的值对应的name_i的值放到它对应的name列中。
conn.commit()
# 这句很关键,即提交,sqlite不会保存新的数据,知道我们告诉它提交。
cursor.close()

3、查看数据

import sqlite3
conn = sqlite3.connect('mytest.db')
cursor = conn.cursor()
sql3 = '''select * from students'''
# "*"代表所有内容。此代码我们搜寻“students”表的所有内容。
# 如果只是想看students表的id列,eg:select id from students
results = cursor.execute(sql)
# 数据库将返回结果到results变量中
all_students = results.fetchall()
# 因为返回的results类似于:<sqlite3.Cursor object at 0x00000257F9100AB0>
#所以需要使用fetchall函数把所有结果保存到新的变量中
print(all_students)
conn.commit()
cursor.close()

接下来我们不引入例子,只介绍sql语句!

此时我们称表格中的某行为记录

4、引入WHERE子句来过滤数据库查询

接上篇,我们已经知道了如何创建一个简单的查询:

sql= '''select */column from tablename'''
# sql语句意为从表格中挑选全部内容或某些列项

下面我们正式介绍WHERE子句的用法。

WHERE子句是可以附加在SQL语句末尾的一种特殊语句。当调用数据库时,它允许我们过滤数据库而只返回一个子集。带SQL的查询语句如下:

sql= '''select */column from tablename where Boolean statement'''
# sql语句意为从表格中挑选 符合Boolean语句为真的条件 的 全部内容或某些列项 。

4.1 通过判断 相等/不相等 性查询

sql= '''select */column from tablename where column="string" '''
# sql语句意为从表格中挑选 某列等于string的条件 的 全部内容或某些列项 。

其中,也可以根据所需条件,将 “=” 换位 “!=” 。

4.2 也可以比较值的 大于或小于

sql= '''select */column from tablename where column>value '''
# sql语句意为从表格中挑选 某列的值大于value的条件 的 全部内容或某些列项 。

4.3 通过(LIKE/NOT LIKE)查找相似项

当我们想要查找包含了另一个字符串的项,可以使用LIKE。LIKE允许我们查找以一个字符串开始、以一个字符串结束、包含一个字符串的项。

sql= '''select */column from tablename where column LIKE "%string%" '''
# sql语句意为从表格中挑选 字符串开头、结尾、开头和结尾含有字符串string 的 全部内容或某些列项 。
语句 选取
LIKE “red%” red rover 、red、reddish
LIKE “%red” Light red、red
LIKE “%red%” red rover 、red、reddish、Light red
同理,将NOT LIKE替换LIKE就达到了相反的效果。

5、用ORDER BY排序

当我们对数据库进行查询时,得到的结果都没有特定的顺序。可以添加ORDER BY子句,以告知数据库按照某种顺序来返回结果。

扫描二维码关注公众号,回复: 14618667 查看本文章
sql= '''select */column from tablename ORDER BY column  '''
# sql语句意为从数据库中得到 按照名称来排序 的 全部内容或某些列项 。

6、用DISTINCT获取唯一项

我们在SELECT语句中使用distinct时,数据库只返回该列中具有唯一性的项。

sql= '''select distinct column from tablename   '''
# sql语句意为从数据库中得到 某列column具有唯一性的 的 全部内容或某些列项 。

7、用UPDATE修改记录

如果我们有需要修改的记录,我们可以使用UPDATE来完成。

sql= '''UPDATE tablename set (...) WHERE Boolean statement  '''
# sql语句意为修改(...)内容 从数据库中得到 满足Boolean为真的条件的 的 全部内容或某些列项 。

8、用DELETE删除记录

sql= '''delete from tablename where Boolean statement '''
# sql语句意为从表格中删除 符合Boolean语句为真的条件 的 全部记录 。

猜你喜欢

转载自blog.csdn.net/qq_53273581/article/details/122484753