数据库SQL语言及python自带数据库sqlite3

一、数据库简介

        定义:数据库是存放数据的仓库,其存储空间很大,可以容纳百万条甚至上亿条数据。

        数据库分为关系型数据库与非关系型数据库。关系型数据库的表现形式类似于表格,关系型数据库中表与表之间是有很多复杂的关联关系的。 常见的关系型数据库有Mysql,SqlServer等。这里主要介绍关系型数据库。

        由于python强大的开发能力,博主不适用Mysql等软件,而且依托python内置的sqlite3库使用关系型数据库功能。

1.1 术语

  • 数据库: 数据库是一些关联表的集合。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
  • 行:一行(元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。

1.2 操作

        可以实现的功能:数据库的主要功能包括组织、存储和管理数据。它允许用户高效地进行数据的查询、修改、删除等操作。

        在数据库中,使用的语言或者说语句主要是标准SQL语句。

  • 创建库: CREATE DATABASE IF NOT EXISTSmydb1,在名为 mydb1 的数据库不存在时创建该库,这样可以避免报错。
  • 创建表: CREATE TABLE table1( 列名1 列类型, 列名1 列类型, ...... );创建名为table1的表,包含列名1,列名2两个字段
  • 新增语句: INSERT INTO table(param1,param2,param3)VALUES(value1,value2,value3) 该语句可以理解为向table中的param1,param2,param3字段中分别插入value1,value2,value3。
  • 查询语句: SELECT param FROM table WHERE condition该语句可以理解为从 table 中查询出满足condition条件的字段 param。
  • 更新语句:UPDATE table SET param=new_value WHERE condition该语句可以理解为将满足condition条件的字段param更新为new_value值。
  • 删除语句:DELETE FROM table WHERE condition该语句可以理解为将满足condition条件的数据全部删除。
  • 去重语句:SELECT DISTINCT param FROM table WHERE condition该语句可以理解为从表table中查询出满足条件condition的字段param,但是param中重复的值只能出现一次。
  • 排序查询:SELECT param FROM table WHERE condition ORDER BY param1该语句可以理解为从表table中查询出满足condition条件的param,并且要按照param1升序的顺序进行排序。

        注:上述代码均为SQL语句,在mysql软件下中执行,若使用python需要依托上述语句。

二、python调用sqlite3

        由于是python的内置库,因此不需要额外的安装与下载,只需要在.py文件顶部调用即可。

import sqlite3

三、SQL数据库应用

        在python里,执行数据库的操作分为以下几个步骤:1.创建(链接)数据库、2.创建游标(声明对象)、3.执行SQL语句、4.提交事务(保存SQL操作)、5.关闭游标、6.关闭链接数据库。

#链接数据库 如果路径内无该数据库则创建
conn = sqlite3.connect('example.sql')
#创建游标
cursor = conn.cursor()
#执行SQL命令,例如创建一个表
#CREATE TABLE 创建表的语句
#IF NOT EXISTS 用于检查指定的表是否已经存在。如果表不存在,那么执行创建表的操作;如果表已经存在,#则不执行任何操作
#users  表的名字
#(id INTEGER PRIMARY KEY, name TEXT, age INTEGER) 字段(表头 类型) 

cursor.execute('''CREATE TABLE IF NOT EXISTS usersss (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')
#插入数据
cursor.execute("INSERT INTO usersss (name, age) VALUES (?, ?)", ('Alico', 10))
cursor.execute("INSERT INTO usersss (name, age) VALUES ('Blico', 20)")
cursor.execute("INSERT INTO usersss (name, age) VALUES (?, ?)", ('Clico', 30))
#提交事务  上述.execute后并不会保存 需要.commit()
conn.commit()
#查询数据
cursor.execute("SELECT * FROM usersss")
rows = cursor.fetchall()
for row in rows:
    print(row)
#关闭游标和连接
cursor.close()
conn.close()

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值