QT5数据库

简介: 1.数据和数据库(DB)利用计算机进行数据处理,首先需要将信息以数据形式存储到计算机中,因为 数据是可以被计算机接收和处理的符号。根据所表示的信息特征不同,数据有不同 的类别,如数字、文字、表格、图形/图像和声音等。

QT5数据库


数据库基本概念

1.数据和数据库(DB)

利用计算机进行数据处理,首先需要将信息以数据形式存储到计算机中,因为 数据是可以被计算机接收和处理的符号。根据所表示的信息特征不同,数据有不同 的类别,如数字、文字、表格、图形/图像和声音等。


数据库(DataBase, DB),顾名思义,就是存放数据的仓库,其特点是数据按 照数据模型组织,是高度结构化的,可供多个用户共享并且具有一定的安全性。


实际开发中使用的数据库几乎都是关系型的。关系数据库是按照二维表结构方 式组织的数据集合,二维表由行和列组成,表的行称为元组,列称为属性,对表的 操作称为关系运算,主要的关系运算有投影、选择和连接等。


2.数据库管理系统(DBMS )

数据库管理系统即DBMS (DataBase Management System),它是位于用户应用 程序和操作系统之间的数据库管理系统软件,其主要功能是组织、存储和管理数据,高效地访问和维护数据,即提供数据定义、数据操纵、数据控制和数据维护等功能。 常用的数据库管理系统有0racle、Microsoft SQL Server, Sybase和DB2等。


数据库系统即DBS (DataBase System),是指按照数据库方式存储和维护数据, 并向应用程序提供数据访问接口的系统。DBS通常由数据库、计算机硬件(支持 DB存储和访问)、软件(包括操作系统、DBMS及应用开发支撑软件)和数据库管 理员(DataBase Administrator, DBA)四个部分组成。其中,DBA是控制数据整体 结构的人,负责数据库系统的正常运行,承担创建、监控和维护整个数据库结构的 责任。DBA必须具有的素质是,熟悉所有数据的性质和用途,对用户需求有充分 了解,对系统性能非常熟悉。


在实际应用中,数据库系统通常分为桌面型和网络型两类。


桌面型数据库系统是指只在本机运行、不与其他计算机交换数据的系统,常用 于小型信息管理系统,这类数据库系统的典型代表是VFP和Accesso


网络型数据库系统是指能够通过计算机网络进行数据共享和交换的系统,常用 于构建较复杂的C/S结构或B/S结构的分布式应用系统,大多数数据库系统均属于 此类,如 Oracle、Microsoft SQL Server, Sybase、DB2 和 Informix 等。随着计算机 网络的普及,计算模式正迅速从单机向网络计算平台迁移,网络型数据库系统的应 用将越来越广泛。


3.结构化查询语言SQL

结构化查询语言(Structured Query Language, SQL)是用于关系数据库操作的 标准语言,最早由Boyce和Chambedin在1974年提岀,称为SEQUEL语言。1976 年,IBM公司的San Jose研究所在研制关系数据库管理系统System R时修改为 SEQUEL2,后来简称为SQL。1976年,SQL开始在商品化关系数据库管理系统中 应用。1982年美国国家标准化组织(ANSI)确认SQL为数据库系统的工业标准。 1986年ANSI公布了 SQL的第一个标准X3.135-1986,随后不久,国际标准化组织 ISO也通过了这个标准,即通常所说的SQL-86。1987年,ISO又将其采纳为国际 标准。1989年,ANSI和ISO公布了经过增补和修改的SQL-89。此后,又于1992 年公布了 SQL-92,即SQL-2。SQL-2对语言表达式做了较大扩充,同时,增加面 向对象功能的SQL3也在起草之中。


目前,许多关系型数据库供应商都在自己的数据库中支持SQL语言,如Access, Oracle、Sybase、Infomix、DB2 和 Microsoft SQL Server 等。


SQL语言由以下三部分组成。


(1)数据定义语言(Data Desciption Language, DDL),用于执行数据库定义的任务,对数据库及数据库中的各种对象进行创建、删除和修改等操作。数据库对 象主要包括表、默认约束、规则、视图、触发器和存储过程等。


(2) 数据操纵语言(Data Manipulation Language, DML),用于操纵数据库中 各种对象,检索和修改数据。


(3) 数据控制语言(Data Control Language, DCL),用于安全管理,确定哪些 用户可以查看或修改数据库中的数据。


SQL语言主体由大约四十条语句组成,每一条语句都会对DBMS产生特定的 动作,如创建新表、检索数据和更新数据等。SQL语句通常由一个描述要产生的动 作谓词(Verb)关键字开始,如Create、Select、Update等。紧随语句的是一个或 多个子句(Clause),子句进一步指明语句对数据的作用条件、范围和方式等。


4.表和视图

表是关系数据库中最主要的数据库对象,它是用来存储和操作数据的一种逻辑 结构。表由行和列组成,因此也称为二维表。


(1)表(Table)


每个表都有一个名字,以标志该表。例如,表13.1的名字是学生表,它共有 五列,每一列也都有一个名字,描述学生的某一方面特性。每个表由若干行组成, 表的第一行为各列标题,即“栏目信息”,其余各行都是数据。例如,表13.1分别 描述了四位同学的情况。下面是表的定义。


•表结构


每个数据库色含若干个表。每个表具有一定的结构,称为表的’‘型所谓表 型是指组成表的各列的名称及数据类型,也就是日常表格的“栏目信息”。


•记录


每个表包含若干行数据,它们是表的“值”,表中的一行称为一个记录(Record 因此,表是记录的有限集合。


•字段


每个记录由若干个数据项构成,将构成记录的每个数据项称为字段(Field)o 字段包含的属性有字段名、字段数据类型、字段长度及是否为关键字等。其中,字 段名是字段的标识,字段的数据类型可以是多样的,如整型、实型、字符型、日期 型或二进制型等。


•关键字


在学生表中,若不加以限制,则每条记录的姓名、专业、性别和出生时间这四 个字段的值都有可能相同,但是学号字段的值对表中所有记录来说则一定不同,即 通过“学号”字段可以将表中的不同记录区分开来。


若表中记录的某一字段或字段组合能够唯一标志记录,则称该字段或字段组合 为候选关键字(Candidate key)。若一个表有多个候选关键字,则选定其中一个为 主关键字(Primary key),也称为主键。当一个表仅有唯一的一个候选关键字时, 该候选关键字就是主关键字,如学生表的主关键字为学号。


若某字段或字段组合不是数据库中A表的关键字,但它是数据库中另外一个表 B表的关键字,则称该字段或字段组合为A表的外关键字(Foreign key)。


例如,设学生数据库有三个表,学生表、课程表和学生成绩表,其结构分别如下: 学生表(学号,姓名,专业名,性别,出生时间)


课程表(课程号,课程名,学分)


学生成绩表(学号,课程号,分数)


由此可见,单独的学号、课程号都不是学生成绩表的关键字,但它们分别是学 生表和课程表的关键字,因此它们都是学生成绩表的外关键字。


外关键字表示了表之间的参照完整性约束。例如,在学生数据库中,在学生成 绩表中岀现的学号必须是在学生表中已出现的;同样,课程号也必须是在课程表中 已出现的。若在学生成绩表中出现了一个未在学生表中出现的学号,则会违背参照 完整性约束。


(2)视图(View)


视图是从一个或多个表(或视图)导出的表。


视图与表不同,它是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义操作与视图 相关联的基本表。视图一经定义后,就可以像表一样被查询、修改、删除和更新。 使用视图具有便于数据共享,简化用户权限管理和屏蔽数据库的复杂性等优点。


例如,对于以上所述学生数据库,可创建“学生选课”视图,该视图包含字段 为学号、姓名、课程号、课程名、学分和成绩。


常用SQL命令

SELECT查询是SQL语言的核心,功能强大,与SQL子句结合,可完成各类 复杂的查询操作。在数据库应用中,最常用的操作是查询,同时查询还是数据库的 其他操作(如统计、插入、删除及修改)的基础。

select * from Table where a = 'a';

INSERT

insert into Table values();
insert into Table() values();

UPDATE

update Table set a = 'a' where ... ;

DELETE

delete from Table where ... ;


Qt操作数据库实例

Qt提供的QtSql模块实现了对数据库的访问,同时提供了一套与平台和具体所 用数据库均无关的调用接口。此模块为不同层次的用户提供了不同丰富的数据库操 作类。例如,对于习惯使用SQL语法的用户,QSqlQuery类提供了直接执行任意 SQL语句并处理返回结果的方法;而对于习惯使用较高层数据库接口避免使用SQL 语句的用户,QSqlTable Model和QSqlRelationalTableModel类则提供了合适的抽象。


除此之外,此模型还支持常用的数据库模式,如主从视图(master-detail views) 和向下钻取(drill-down)模式。


这个模块由不同Qt类支撑的三部分组成,具体QtSqL模块层次结构见下表。


QtSql模块层次结构

层 次 描 述
驱动层 实现了特定数据库与SQL接口的底层桥接,包括的支持类有QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin 和 QSqlResult
SQL接口层 QSqlDatabase类提供了数据库访问类、数据库连接操作,QSqlQucry类 提供了与数据库的交互操作,其他支持类还包括QSqlError、QSqlField、 QSqlTableModel 和 QSqlRecord
用户接口层 提供从数据库数据到用于数据表示的窗体的映射,包括的支持类有 QSqlQueryModel> QSqlTableModel 和 QSqlRelationalTableModel,这些类均 依具Qt的模型/视图结构设计


注意

该部分例子会在日常模块中展示,请关注日常模块的更新

相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
目录
相关文章
|
Oracle 关系型数据库 MySQL
Qt数据库开发的一些冷知识
Qt数据库开发的一些冷知识
|
存储 设计模式 Cloud Native
C++QT SqlLite数据库简单使用
C++QT SqlLite数据库简单使用
|
存储 SQL 关系型数据库
linux系统中使用QT来实现数据库的调用方法
linux系统中使用QT来实现数据库的调用方法
105 0
|
SQL 数据库连接 数据库
Qt实用技巧:Qt连接SQL Server数据库(需要配置ODBC)
Qt实用技巧:Qt连接SQL Server数据库(需要配置ODBC)
|
3月前
|
数据库 数据库管理
qt对sqlite数据库多线程的操作
本文总结了在Qt中进行SQLite数据库多线程操作时应注意的四个关键问题,包括数据库驱动加载、加锁、数据库的打开与关闭,以及QsqlQuery变量的使用。
180 1
|
6月前
|
数据库 数据安全/隐私保护 数据库管理
QT中sqlite数据库数据加密/混淆---MD5/SHA1/SHA2/SHA3
QT中sqlite数据库数据加密/混淆---MD5/SHA1/SHA2/SHA3
|
6月前
|
关系型数据库 MySQL 数据库
Qt 无法连接MySQL数据库
Qt 无法连接MySQL数据库
|
7月前
|
关系型数据库 MySQL 编译器
【Qt 数据库 】qt使用mysql的准备工作
【Qt 数据库 】qt使用mysql的准备工作
198 1
|
SQL 数据库 数据库管理
Qt操作Sqlite类封装,及命令行导入csv文件到Sqlite数据库
Qt操作Sqlite类封装,及命令行导入csv文件到Sqlite数据库
|
数据库 数据库管理
如何在Qt中使用数据库Sqlite保存和提取图片
如何在Qt中使用数据库Sqlite保存和提取图片
864 0