python的数据库编程

数据库的基础知识

  一、数据库的概念

    数据库将大量数据按照一定的方式组织并存储起来,是相互关联的数据的集合。数据库中的数据不仅包括描述事物数据的本身,还包括相关数据之间的联系。数据库可以分为关系型数据库和非关系型数据库。关系型数据库使用二维表来存储数据,非关系型数据库通常以对象的形式存储数据,目前的数据库管理系统几乎都支持关系模型。数据库具有如下特点:

    以一定的方式组织、存储数据。

    能为多个用户共享

    具有尽可能小的冗余数据

    是与程序彼此独立的数据集合

  数据库系统

    数据库系统是基于数据库的计算机应用系统,主要包括数据库、数据库管理系统、相关软硬件环境和数据库用户。其中,数据库管理系统是数据库系统的核心。

  数据库管理系统

    数据库管理系统是用来管理和维护数据库的、位于操作系统之上的系统软件,其主要功能如下:

    1.数据定义功能。DBMS提供数据定义语言,用户通过它可以方便的对数据库中的对象进行定义,如对数据库、表、视图和索引进行定义。

    2.数据操纵功能。DBMS向用户提供数据操纵语言,实现对数据库的基本操作,如查询、插入、删除和修改数据库中的数据。

    3.数据库的运行管理。这是DBMS的核心部分,包括并发控制、存取控制、安全性检查、完整性约束条件的检查和执行,以及数据库的内部维护(如索引、数据字典的自动维护)等。所有数据库的操作都要在这些控制程序的统一管理下进行,以保证数据的安全性、完整性和多个用户对数据库的并发操作。

    4.数据通信功能。包括与操作系统的联机处理、分时处理和远程作业传输的相应接口等,这一功能对分布式数据库系统尤为重要。

  二、关系型数据库

    关系型数据库是目前的主流数据库。通常,一个关系型数据库中可包含多个表,例如,一个雇员管理数据库中可以包含雇员表、订单表、工资表等多个表。通过在表之间建立关系,可以将不同表中的数据联系起来,实现更强大的数据管理功能。

  关系数据库的基本概念

    1.关系。一个关系就是一张二维表,通常将一个没有重复行、重复列的二维表看成一个关系,每个关系都一个关系名,也就是表名。

    2.元组。二维表的水平方向的行在关系中称为元组。每个元组均对应表中的一条记录。

    3.属性。二维表的垂直方向的列在关系中称为属性,每个属性都有一个属性名,属性值则是各个元组属性的取值。属性名也称为字段名,属性值也称为字段值。

    4.域。属性的取值范围称为域。域作为属性的集合,其类型与范围与属性的性质及其所表示的意义来确定。同一属性只能在相同的域中进行取值。

    5.关键字。其值能唯一的标识一个元组的属性或属性的组合称为关键字。关键字可表示为属性或属性的组合,例如,雇员表的id字段可以作为表示一条记录的关键字。

  实体间的关系类型

    1.一对一关系。

    2.一对多关系。

    3.多对多关系。

创建表  create table <表名>(

  列名1  数据类型或长度1  列属性1,

  列明2  数据类型和长度2  列属性2,

  ...

  列明n  数据类型和长度n  列属性n

create table employee(
    emp_id integer primary key,
    emp_name varchar(20) NOT NULL,
    sex char(2) default(''),
    title varchar(20),
    wage float,
    dep_id integer       
)

primary key:定义此列为主关键字列。定义为主键的列可以唯一标识表中的每条记录。

NOT NULL:指定此列不允许为空,NULL表示允许为空,是默认设置。

default:指定此列的默认值。

查看表的结构(任选一个):

select *from sqlite_master where type="table"and name="emplyee"
.schema employee

删除表  drop table <表名>

drop table employee

向表中添加列  alter table <表名> add column <字段名>[ <类型>]

alter table employee add column tele varchar(50) not null

向表中插入数据  insert into <表名>[<字段名表>] values(<表达式表>)

insert into employee (emp_id,emp_name,sex,title,wage,dep_id) values(1132,'李四','','部门经理',7548.6,11)
insert into employee (emp_id,emp_name,sex,title,wage,dep_id) values(1143,'王五','','职员',6656,14)
insert into employee (emp_id,emp_name,sex,title,wage,dep_id) values(1036,'高七','','经理',7600,10)

修改表中的数据  update <表名> set <字段名>=<表达式> [,<字段名2>=<表达式2>...] [where<条件表达式>]

update employee set wage=7550 where emp_name="李四"

删除数据  delete from <表名> [where <条件表达式>]

delete from employee where sex=''

查询数据  select <字段名表>|* from <表名> [join <表名> on <连接条件>] [where <条件表达式>] [group by <分组字段名>[having <条件表达式>]] [oeder by <排序选项>[asc|desc]]

各项功能如下:

  select子句说明要查询的字段名,如果是*,表示查询表中的所有字段。

  from子句说明查询的数据来源,如果查询的结果来自多个表,需要join选项指明连接条件。

  where子句说明查询的筛选条件。多个条件之间可以逻辑运算符and、or、not连接。

  group by子句用于将查询结果按分组字段名分组。having子句必须跟随group by使用,它用来限定分组必须满足的条件。

  oeder by子句用于对查询结果进行排序。

posted @ 2021-03-17 22:14  呆贝斯  阅读(341)  评论(0编辑  收藏  举报