Qt-5开发及实例-第13章-Qt-5数据库课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Qt-5开发及实例-第13章-Qt-5数据库课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Qt 开发 实例 13 数据库 课件
- 资源描述:
-
1、第第13章章 Qt 5数据库数据库数据库基本概念数据库基本概念1数据和数据库(数据和数据库(DB)利用计算机进行数据处理,首先需要将信息以数据形式存储到计算机中,因为数据是可以被计算机接收和处理的符号。根据所表示的信息特征不同,数据有不同的类别,如数字、文字、表格、图形/图像和声音等。数据库(DataBase,DB),顾名思义,就是存放数据的仓库,其特点是:数据按照数据模型组织,是高度结构化的,可供多个用户共享并且具有一定的安全性。2数据库管理系统(数据库管理系统(DBMS)数据库管理系统(DataBase Management System,DBMS),是位于用户应用程序和操作系统之间的数据
2、库管理系统软件,其主要功能是组织、存储和管理数据,高效地访问和维护数据,即提供数据定义、数据操纵、数据控制和数据维护等功能。常用的数据库管理系统有Oracle、Microsoft SQL Server和MySQL等。数据库系统(DataBase System,DBS),是指按照数据库方式存储和维护数据,并向应用程序提供数据访问接口的系统。DBS通常由数据库、计算机硬件(支持DB存储和访问)、软件(包括操作系统、DBMS及应用开发支撑软件)和数据库管理员(DataBase Administrator,DBA)四个部分组成。其中,DBA是控制数据整体结构的人,负责数据库系统的正常运行,承担创建、监
3、控和维护整个数据库结构的责任。DBA必须具有的素质是,熟悉所有数据的性质和用途,充分了解用户需求,对系统性能非常熟悉。3结构化查询语言(结构化查询语言(SQL)SQL语言由以下三部分组成。(1)数据定义语言(Data Description Language,DDL),用于执行数据库定义的任务,对数据库及数据库中的各种对象进行创建、删除和修改等操作。数据库对象主要包括表、默认约束、规则、视图、触发器和存储过程等。(2)数据操纵语言(Data Manipulation Language,DML),用于操纵数据库中各种对象,检索和修改数据。(3)数据控制语言(Data Control Langua
4、ge,DCL),用于安全管理,确定哪些用户可以查看或修改数据库中的数据。4表和视图表和视图(1)表()表(Table)。)。表是在日常工作和生活中经常使用的一种表示数据及其关系的形式,如表13.1为一个学生表。学 号姓 名专 业 名性 别出 生 时 间170201王 一计算机男1998/10/01170202王 巍计算机女1999/02/08170302林 滔电子工程男1998/04/06170303江为中电子工程男2001/12/084表和视图表和视图 表结构表结构每个数据库包含若干个表。每个表具有一定的结构,称为表的“型”。所谓表型是指组成表的各列的名称及数据类型,也就是日常表格的“栏目信
5、息”。记录记录每个表包含若干行数据,它们是表的“值”,表中的一行称为一个记录(Record)。因此,表是记录的有限集合。字段字段每个记录由若干个数据项构成,将构成记录的每个数据项称为字段(Field)。字段包含的属性有字段名、字段数据类型、字段长度及是否为关键字等。其中,字段名是字段的标识,字段的数据类型可以是多样的,如整型、实型、字符型、日期型或二进制型等。关键字关键字在学生表中,若不加以限制,则每条记录的姓名、专业名、性别和出生时间这四个字段的值都有可能相同,但是学号字段的值对表中所有记录来说则一定不同,即通过“学号”字段可以将表中的不同记录区分开来。4表和视图表和视图若某字段或字段组合不
6、是数据库中A表的关键字,但它是数据库中另外一个表即B表的关键字,则称该字段或字段组合为A表的外关键字(Foreign key)。例如,设学生数据库有三个表,即学生表、课程表和学生成绩表,其结构分别如下:学生表(学号,姓名,专业名,性别,出生时间)课程表(课程号,课程名,学分)学生成绩表(学号,课程号,分数)(用下画线表示的字段或字段组合为关键字。)4表和视图表和视图(2)视图()视图(View)。)。视图是从一个或多个表(或视图)导出的表。视图与表不同,它是一个虚表,即对视图所对应的数据不进行实际存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义操作与视图相关联的基本表
7、。视图一经定义后,就可以像表一样被查询、修改、删除和更新。使用视图具有便于数据共享、简化用户权限管理和屏蔽数据库的复杂性等优点。例如,对于以上所述学生数据库,可创建“学生选课”视图,该视图包含学号、姓名、课程号、课程名、学分和成绩字段。第第13章章 Qt 5数据库数据库常用常用SQL命令命令1SELECT语句语句2常用聚合函数常用聚合函数0101数数 据据 查查 询询1SELECT语句语句完备的SELECT语句很复杂,其主要的子句如下:SELECT DISTINCT 别名.字段名或表达式 AS 列标题/*指定要选择的列或行及其限定*/(a)FROM table_source /*FROM子句,
8、指定表或视图*/WHERE search_condition /*WHERE子句,指定查询条件*/(b)GROUP BY group_by_expression /*GROUP BY子句,指定分组表达式*/ORDER BY order_expression ASC|DESC /*ORDER BY子句,指定排序表达式和顺序*/(c)1SELECT语句语句其中,其中,SELECT和FROM子句是不可缺少的。(a)SELECT子句指出查询结果中显示的字段名,以及字段名和函数组成的表达式等。子句指出查询结果中显示的字段名,以及字段名和函数组成的表达式等。可用DISTINCT去除重复的记录行;AS列标题
9、指定查询结果显示的列标题。当要显示表中所有字段时,可用通配符“*”代替字段名列表。(b)WHERE子句定义了查询条件。子句定义了查询条件。WHERE子句必须紧跟FROM子句,其基本格式为:WHERE 其中,其中,search_condition为查询条件,常用格式为:NOT|()AND|OR NOT|(),n 其中的predicate为判定运算,结果为TRUE、FALSE或UNKNOWN,格式为:expression =|=|!=|!expression /*比较运算*/|string_expression NOT LIKE string_expression ESCAPE escape_ c
10、haracter /*字符串模式匹配*/|expression NOT BETWEEN expression AND expression/*指定范围*/|expression IS NOT NULL /*是否空值判断*/|expression NOT IN(subquery|expression,n)/*IN子句*/|expression =|=|!=|!ALL|SOME|ANY (subquery)/*比较子查询*/|EXIST(subquery)/*EXIST子查询*/1SELECT语句语句(c)GROUP BY子句和子句和ORDER BY子句分别对查询结果进行分组和排序。子句分别对查询
11、结果进行分组和排序。下面用示例说明使用SQL语句对Student数据库进行的各种查询。(1)查询Student数据库。查询students表中每个同学的姓名和总学分。USE Student SELECT name,totalscore FROM students(2)查询表中所有记录。查询students表中每个同学的所有信息。SELECT*FROM students(3)条件查询。查询students表中总学分大于或等于120的同学的情况。SELECT*FROM students WHERE totalscore=120(4)多重条件查询。查询students表中所在系为“计算机”且总学分大
12、于或等于120的同学的情况。SELECT*FROM students WHERE department=计算机 AND totalscore=120(5)使用LIKE谓词进行模式匹配。查询students表中姓“王”且单名的学生情况。SELECT*FROM students WHERE name LIKE 王_(6)用BETWEENAND指定查询范围。查询students表中不在1999年出生的学生情况。SELECT*FROM students WHERE birthday NOT BETWEEN 1999-1-1 and 1999-12-311SELECT语句语句(7)空值比较。查询总学分尚
13、不确定的学生情况。SELECT*FROM students WHERE totalscore IS NULL(8)自然连接查询。查找计算机系学生姓名及其“C程序设计”课程的考试分数情况。SLELCT name,grade FROM students,courses,grades,WHERE department=计算机 AND coursename=C程序设计 AND students.studentid=grades.studentid AND courses.courseid=grades.coursesid1SELECT语句语句(9)IN子查询。查找选修了课程号为101的学生情况。SEL
14、ECT*FROM studentsWHERE studentid IN (SELECT studentid FROM courses WHERE courseid=101)在执行包含子查询的SELECT语句时,系统首先执行子查询,产生一个结果表,再执行外查询。本例中,首先执行子查询:SELECT studentid FROM courses,students,grades WHERE courseid=101 AND students.studentid=grades.studentid AND courses.courseid=grades.coursesid得到一个只含有studentid
15、列的结果表,courses中courseid列值为101的行在该结果表中都有一行。再执行外查询,若students表中某行的studentid列值等于子查询结果表中的任意一个值,则该行就被选择到最终结果表中。1SELECT语句语句(10)比较子查询。这种子查询可以认为是IN子查询的扩展,它是表达式的值与子查询的结果进行比较运算。查找课程号206的成绩不低于课程号101的最低成绩的学生学号。SELECT studentid FROM grades WHERE courseid=206 AND grade!ANY (SELECT grade FROM grades WHERE courseid=1
16、01)(11)EXISTS子查询。EXISTS谓词用于测试子查询的结果集是否为空表,若子查询的结果集不为空,则EXISTS返回TRUE,否则返回FALSE。EXISTS还可与NOT结合使用,即NOT EXISTS,其返回值与EXISTS刚好相反。查找选修206号课程的学生姓名。SELECT name FROM students WHERE EXISTS (SELECT*FROM grades WHERE studentid=students.studentid AND courseid=206)1SELECT语句语句(12)查找选修了全部课程的同学姓名(查找没有一门功课不选修的学生)。SELE
17、CT name FROM students WHERE NOT EXISTS (SELECT*FROM courses WHERE NOT EXISTS (SELECT*FROM grades WHERE studentid=students.studentid AND courseid=courses.courseid)(13)查询结果分组。将各课程成绩按学号分组。SELECT studentid,grade FROM grades GROUP BY studentid(14)查询结果排序。将计算机系的学生按出生时间先后排序。SELECT*FROM students WHERE depart
18、ment=计算机 ORDER BY birthday2常用聚合函数常用聚合函数在对表数据进行检索时,经常需要对结果进行汇总或计算,如在学生成绩数据库中求某门功课的总成绩、统计各分数段的人数等。聚合函数用于计算表中的数据,返回单个计算结果。常用的聚合函数见表13.2。函 数 名说 明AVG求组中值的平均值COUNT求组中项数,返回int类型整数MAX求最大值MIN求最小值SUM返回表达式中所有值的和VAR返回给定表达式中所有值的统计方差2常用聚合函数常用聚合函数本例对students表执行查询,使用常用的聚合函数。(1)求选修课程101的学生的平均成绩。SELECT AVG(grade)AS 课
19、程101平均成绩 FROM grades WHERE courseid=101(2)求选修课程101的学生的最高分和最低分。SELECT MAX(grade)AS 课程101最高分,MIN(grade)AS 课程101最低分 FROM grades WHERE courseid=101(3)求学生的总人数。SELECT COUNT(*)AS 学生总数 FROM students1插入数据语句插入数据语句INSERT2删除数据语句删除数据语句DELETE0202数数 据据 操操 作作3更新数据语句更新数据语句UPDATE1插入数据语句插入数据语句INSERTINSERT语句可添加一条或多条记录至
20、一个表中。INSERT语句有两种语法形式。语法语法1:INSERT INTO target IN externaldatabase(fields_list)/(a)DEFAULT VALUES|VALUES(DEFAULT|expression_list)/(b)语法语法2:INSERT INTO target IN externaldatabase fields_listSELECT.|EXECUTE.其中,其中,(a)target是欲追加记录的表(Table)或视图(View)的名称,externaldatabase是外部数据库的路径和名称。(b)expression_list:需要插入的
21、字段值表达式列表,其个数应与记录的字段个数一致,若指定要插入值的字段fields_list,则应与fields_list的字段个数相一致。使用第1种形式将一个记录或记录的部分字段插入表或视图中。第2种形式的INSERT语句插入来自SELECT语句或来自使用EXECUTE语句执行的存储过程的结果集。例如,例如,用以下语句向students表添加一条记录:INSERT INTO students VALUES(170206,罗亮,0,1/30/1998,1,150)2删除数据语句删除数据语句DELETEDELETE语句用于从一个或多个表中删除记录。DELETE语句的语法格式如下:DELETE FR
22、OM table_namesWHERE.例如,例如,用以下语句从students表中删除姓名为“罗亮”的记录:DELETE FROM students WHERE name=罗亮3更新数据语句更新数据语句UPDATEUPDATE语句用于更新表中的记录。UPDATE语句的语法格式如下:UPDATE table_nameSET Field_1=expression_1,Field_2=expression_2.FROM table1_name|view1_name,table2_name|view2_name.WHERE.其中,其中,Field是需要更新的字段,expression表示要更新字段的
23、新值表达式。例如,例如,以下语句将计算机系学生的总分增加10:UPDATE studentsSET totalscore=totalscore+10WHERE department=计算机第第13章章 Qt 5数据库数据库Qt操作数据库及实例操作数据库及实例Qt操作数据库及实例操作数据库及实例这个模块由不同Qt类支撑的三部分组成,QtSql模块层次结构见表13.3。层 次描 述驱动层实现了特定数据库与SQL接口的底层桥接,包括的支持类有QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin和QSqlResultSQ
24、L接口层QSqlDatabase类提供了数据库访问、数据库连接操作,QSqlQuery类提供了与数据库的交互操作,其他支持类有QSqlError、QSqlField、QSqlTableModel和QSqlRecord用户接口层提供从数据库数据到用于数据表示的窗体的映射,包括的支持类有QSqlQueryModel、QSqlTableModel和QSqlRelationalTableModel,这些类均依据Qt的模型/视图结构设计0101Qt操作操作SQLite数据库数据库Qt操作操作SQLite数据库数据库Qt提供了一种进程内数据库SQLite。它小巧灵活,无须额外安装配置且支持大部分ANSI
25、SQL92标准,是一个轻量级的数据库,概括起来具有以下优点。(1)SQLite的设计目的是实现嵌入式SQL数据库引擎,它基于纯C语言代码,已经应用在非常广泛的领域内。(2)SQLite在需要持久存储时可以直接读写硬盘上的数据文件,在无须持久存储时也可以将整个数据库置于内存中,两者均不需要额外的服务器端进程,即SQLite是无须独立运行的数据库引擎。(3)开放源代码,整套代码少于3万行,有良好的注释和90%以上的测试覆盖率。(4)少于250KB的内存占用容量(gcc编译情况下)。(5)支持视图、触发器和事务,支持嵌套SQL功能。(6)提供虚拟机用于处理SQL语句。(7)不需要配置,不需要安装,也
展开阅读全文