第8章Python数据库应用教学内容数据库基础结构化查询语言SQLSQLite数据库简介Python的SQLite3数据库编程PPT模板下载:行业PPT模板:节日PPT模板:素材下载:背景图片:图表下载:优秀PPT下载:教程:教程:教程:资料下载:课件下载:范文下载:试卷下载:教案下载:数据库基础数据库(Database)数据库是数据的集合,数据库能将大量数据按照一定的方式组织并存储起来,方便的进行管理和维护。数据库的特征•以一定的方式组织、存储数据•能为多个用户共享•具有尽可能少的冗余代码•与程序彼此独立8.1.1数据库基本概念数据库管理系统(DBMS)数据库管理系统(databasemanagementsystem)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。它的功能包括:(1)数据定义功能。(2)数据存取功能。(3)数据库运行管理功能。(4)数据库的建立和维护功能。(5)数据库的传输。常用的数据库管理系统有MSSQL、SYBASE、DB2、ORACLE、MySQL等。数据库系统(DBS)数据库可分为层次型数据库、对象型数据库和关系型数据库。关系型数据库是目前的主流数据库类型。关系型数据库不仅描述数据本身,而且对数据之间的关系进行描述。常用术语关系:可以理解为一张二维表,每一个关系都有一个关系名,也就是表名。属性:可以理解为二维表中的一列,在数据库中称为字段。元组:可以理解为二维表中的一行,在数据库中称为记录。域:属性的取值范围,也就是数据库中某一列的取值范围。关键字:一组可以唯一标识元组的属性,数据库中称为主键,可以由一个或者多个列组成。8.1.2关系型数据库关系型数据库实体间的联系DB-APIDB-API是一个规范。它定义了一系列必需的对象和数据库存取方式,以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口。从Python中访问数据库需要接口程序,接口程序是一个Python模块,它提供数据库客户端(通常是C语言编写)的接口以供访问,所有的Python接口程序都一定程度上遵守PythonDB-API规范。8.2结构化查询语言SQL数据库命令和查询操作需要通过SQL语言来执行,SQL(StructuredQueryLanguage“结构化查询语言”)是通用的关系型数据库操作语言。可以查询、定义、操纵和控制数据库。它是一种非过程化语言。用于创建数据库中的表。它的语法格式为:CREATETABLE表名称(列名称1数据类型,列名称2数据类型,列名称3数据类型,....)例CREATETABLEstudents(stuNumbervarchar(12),stuNamevarchar(255),ageinteger(2),sexvarchar(2),scoreinteger(4),Addressvarchar(255),)8.2.1数据表的建立(CREATETABLE)和删除(DROP)CREATETABLEDROP用于删除表(表的结构、属性以及索引也会被删除),它的语法格式为:DROPTABLE表名称DROPTABLEstudents例用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。查询语句语法如下所示:SELECT字段表FROM表名WHERE查询条件GROUPBY分组字段ORDERBY字段[ASC|DESC]字段表8.2.2查询语句SELECT指出所查询列,它可以是一组列名、星号、表达式、变量等构成。例:查询students表中所有列的数据。SELECT*FROMstudents例:查询表students中所有记录的stuName,stuNumber字段内容。SELECTstuName,stuNumberFROMstudentsWHERE子句8.2.2查询语句SELECTWHERE子句设置查询条件,过滤掉不需要的数据行。WHERE子句可包括各种条件运算符(1)比较运算符:;、=、=、;、=、;、!;、!例:SELECTstuNumberFROMstudentsWHEREstuName='李四'(2)范围运算符:BETWEEN…AND…、NOTBETWEEN…AND…例:SELECTstuNameFROMstudentsWHEREageBETWEEN18AND20(3)列表运算符:IN(项1,项2……)、NOTIN(项1,项2……)例:SELECTstuNameFROMstudentsWHEREcountryIN('Henan','BeiJing')(4)逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR例:SELECTstuNameFROMstudentsWHEREage18ANDsex='女'(5)模式匹配符:LIKE、NOTLIKE例:SELECT*FROMstudentsWHEREnamelike“周%%”例:SELECT*FROMstudentsWHEREscorelike[80-90]说明:[]指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]则要求所匹配对象为指定字符以外的任一个字符。数据分组GroupBy8.2.2查询语句SELECTGROUPBY子句用于结合聚合函数,根据一个或多个列对结果集进行分组SELECTsex,avg(score)as平均成绩FROMstudentsGroupBysex例函数作用Sum(列名)求和Max(列名)求最大值Min(列名)求最小值Avg(列名)求平均值Count(列名)统计记录数常用的聚合函数查询结果排序OrderBy8.2.2查询语句SELECT使用ORDERBY子句对查询返回的结果按一列或多列排序。SELECTstuName,stuNumberFROMstudentsORDERBYstuSCOREDESE例说明:ASC表示升序,为默认值,DESC为降序INSERTINTO语句用于向表格中插入新的行。它的语法格式为:INSERTINTO数据表(字段1,字段2,字段3……)VALUES(值1,值2,值3……)例8.2.3添加记录语句INSERTINTOINSERTINTOstudents(stuNumber,stuName,age,sex,score,address,city)VALUES('2010005','李帆',19,'男',92,'Changjiang12','Zhengzhou')或:INSERTINTOstudentsVALUES('2010005','李帆',19,'男',92,'Changjiang12','Zhengzhou')。Update语句用于修改表中的数据。语法格式为:UPDATE表名SET列名=新值WHERE列名=某值例8.2.4更新语句UPDATEUPDATEstudentsSETage=age+1WHEREsex='女'UPDATEstudentsSETAddress='Zhongyuanlu41',City='Zhengzhou'WHEREstuName='李四'DELETE语句用于删除表中的行。它的语法格式为:DELETEFROM表名称WHERE列名=值例8.2.5删除记录语句DELETEDELETEFROMstudentsWHEREstuName='张三'说明:DELETEFROMstudents表示删除表中所有记录。8.3SQLite数据库简介Python自带一个轻量级的关系型数据库SQLite。SQLite是一种嵌入式关系型数据库,它的数据库就是一个文件。8.3.1SQLite数据库每个存放在SQLite3数据库中的值,都具有下表中的一种存储类型:8.3.2SQLite3的数据类型存储类型说明NULL空值INTEGER带符号整数,根据存入的数值的大小占据1,2,3,4,6或者8个字节REAL浮点数,采用8byte(即双精度)的IEEE格式表示TEXT字符串文本,采用数据库的编码(UTF-8,UTF-16BE或者UTF-16LE)BLOB无类型,可用于保存二进制文件1.SQLite时间/日期函数:datetime():产生日期和时间date():产生日期time():产生时间strftime():对以上三个函数产生的日期和时间进行格式化8.3.3SQLite3的函数2.SQlite算术函数:abs(X):返回绝对值max(X,Y[,...]):返回最大值min(X,Y,[,...]):返回最小值random(*):返回随机数round(X[,Y]):四舍五入3.SQLite字符串处理函数length(x):返回字符串字符个数lower(x):大写转小写upper(x):小写转大写substr(x,y,Z):截取子串like(A,B):确定给定的字符串与指定的模式是否匹配8.3.3SQLite3的函数4.其它函数:typeof(x):返回数据的类型last_insert_rowid():返回最后插入的数据的IDPython标准模块sqlite3使用C语言实现,提供访问和操作数据库SQLite的各种功能。Sqlite3模块主要包括下列常量、函数和对象:8.3.4SQLite3的模块Sqlite3.Version:常量,版本号。Sqlite3.Connect(database):函数,链接到数据库,返回Connect对象。Sqlite3.Connect:数据库连接对象。Sqlite3.Cursor:游标对象。Sqlite3.Row:行对象。8.4Python的SQLite3数据库编程Python2.5版本以上就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。SQLite3数据库使用SQL语言。SQLite作为后端数据库,可以制作有数据存储需求的工具。Python标准库中的SQLite3提供该数据库的接口。Python的数据库模块有统一的接口标准,所以数据库操作都有统一的模式,操作数据库SQLite3主要分为以下几步:8.4.1访问数据库的步骤1.导入PythonSQLite数据库模块importsqlite32.建立数据库连接,返回Connection对象con=sqlite3.connect(connectstring)例:con=sqlite3.connect(“E:\test.db”)3.创建游标对象cur=con.cursor()4.使用Cursor对象的execute执行SQL命令返回结果集cur.execute(sql):执行SQL语句。cur.execute(sql,parameters):执行代参数的SQL语句。cur.executemany(sql,seq_of_pqrameters):根据参数执行多次SQL语句。cur.executescript(sql_script):执行SQL脚本。例:cur.execute(''CREATETABLEcategory(idprimarykey,sort,name)'')5.获取游标的查询结果集cur.fetchone():返回结果集的下一行(Row对象);无数据时,返回None。cur.fe