一,数据库
1,介绍:
数据库(Database)是一个有组织的数据集合,它通常用于存储和管理电子化的信息。这些数据可以是结构化的,如表格中的行和列,也可以是非结构化的,如文本、图像或音频文件。数据库的主要目的是允许高效地存储、检索、更新和删除数据,以满足各种业务需求和应用场景。
数据库是我们后端经常用到的工具之一,我们所用到的是:SQLlite数据库
优点:无需下载安装,无需单独的服务器进程,SALlite数据库就是一个文件,内存占用低。
其他的数据库如:MySQL等
2,创建数据库文件(pycharm)
(1)导入sqlite import sqlite3 sqlite3 是python自带的,无需额外安装
在python文件夹里面先创建我们的python文件,然后输入上面的代码.
(2)创建数据库文件 con =sqlite3.connect('数据库名称.db')
connect的作用:没有数据库文件时会自动创建,有数据库是会自动连接使用对应数据库文件。所以这串代码,我们一般不动,
(3)提交 con.commit() 将创建的数据库文件保存起来,后续才能使用。
类似保存的作用。
(4)关闭链接 con.close() 不用时,释放内存
运行后,我们的数据库创建好了。
二,表
就像是成绩表单一样,我们的表就是把各种信息,存放在我们的数据库文件里面,而表就是我们数据库里面存放数据的容器。好比我们的excell表。
注意:
必须要先建表才能存储数据,一个数据库文件可以创建多张表,表名不能重复。
1,创建表:
先导入我们的sqlite3 然后连接数据库文件,
再创建游标: yb = con.cursor()
游标:执行sql语句的工具,让用户可以对数据进行访问。因为sql语句我们python本身不能执行,所以我们就需要借助游标来帮助我们执行相关sql语句。
(1)执行sql语句,创建表:
yb.execute(''' create table 表名(列名1 数据类型,列名2 数据类型,……)''')
游标用完也要关闭,释放资源:
yb.close()
一些数据类型:
integer ----整数类型
varchar ----可变长字符串
real ----小数
date ----日期类型数据
text -----文本类型(通常文字较多,超过255个字符)
注意:创建表必须得有表名和起码一个列。
(2)pycharm看到我们的表:
pycharm配置sqlite驱动:
然后将我们的文件sqlite-jdbc-3.31.1jar文件放在该路径下。如下:
然后我们再选择后,点确认:
因为我们的表一般无法展示,我们的插件就是来帮我们直观的看见我们的表用的。
然后,我们就可以直观地看到我们的表了:
2,表元素操作
(1)列的修改
1,添加列的sql语法:
yb.execute('''alter table 表名 add 新的列名 数据类型''')
运行后:
2,删除列。
yb.execute('''alter table 表名 drop 列名 ''')
注意:删除不需要数据类型,否则会报错。
3,修改表名。
yb.execute('''alter table 旧表名 rename to 新表名 ''')
这个只需对yb.execute内部内容做修改,所以不做展示了。
(2)主键与自增长
主键:
类似我们的身份证,可以完全区分我们与其他人的代号。而我们的添加数据,我们的id可以当作主键,我们每次加入后,我们可以让我们的主键id自增长,这样就不会有重复的id出现,以便于我们不会弄混其他数据。
注意:主键列必须为整数类型(文本不能增长),一个表只能设置一个列为主键,主键列不能为空
语法:primary key
操作:
将id设置为主键 并且自增长
语法:yb.execute('''create table 表名(id integer primary key autoincrement,name varchar,address varcahr)''')
创建完表后,我们的视图如下:
注意:我们一般建立表都会先把主键设好,尽量不再后期更改。
3,数据操作
(1)添加数据
添加一行
yb.execute('''insert into 表名(列名1,列名2,……) values(数据1,数据2)''')
这里,我们需要设置主键和自增加后,我们的id才会显示(这里没有设置),否则需要自行填入。
添加多行数据:
yb.execute('''insert into 表名(列名1,列名2,……) values(数据1,数据2),(数据1,数据2)''')
第一行的 第二行的
(2)修改数据
yb.execute('''update 表名 set 列=新的数据 where 条件(通过主键或其他)''')
其实where条件也可以写 name='小张' ,但是如果有相同的名称,我们就会把符合条件的数据全部修改,不能唯一确定,这就是我们设置主键的原因之一。
(3)删除数据
yb.execute('''delete from 表名 where 条件''')
注意:sql特性:每一行数据的id是唯一值,不会因为删除某行数据而改变。
(4)查询数据
yb.execute('''select * from 表名 where 条件''')
where 不写表示查全部
观察查询数据:
变量名=yb.fetchall()
print(变量名)
fetchall是我们查找的内容,没有查找,print为空
返还类型:列表嵌套元组。