QT 数据库学习笔记数据库基本概念

Posted 火山上的企鹅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT 数据库学习笔记数据库基本概念相关的知识,希望对你有一定的参考价值。


QT 其它文章请点击这里:     QT 学习笔记


一、概念

● 数据库 DB(DataBase)

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

● 数据库管理系统 DBMS(DataBase Management System)

它是位于用户应用程序和操作系统之间的数据库管理系统软件,其主要功能是组织、存储和管理数据,高效地访问和维护数据,常用的DBMS有Oracle、Microsoft SQL Server和mysql等。

● 什么是SQL语言?

    结构化查询语言(Structured Query Language,SQL)是用于关系数据库操作的标准语言,

● SQL 三部分的组成

1)、数据定义语言(Data Description Language,DDL),数据定义语言DDL用来创建、删除、修改数据库中的各种对象-----表、视图、索引、同义词、聚簇等

Create database : 创建数据库
Alter database : 修改数据库
Create table :   创建新表
Alter table :    变更(改变)数据库表
Drop table :     删除表
Create index :   创建索引(搜索键)
Drop index :      删除索引

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

Select :		从数据库表中获取数据
Update :		更新数据库中的数据
Delete :		从数据库表中删除数据
Insert into :	向数据库中插入数据

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

① 授权

GRANT:  授权

② 回滚

ROLLBACK [WORK] TO [SAVEPOINT]:  回退到某一点。

SQL>ROLLBACK;    					回滚命令使数据库状态回到上次最后提交的状态。

③ 提交

COMMIT [WORK]:提交。

● 显式提交,用COMMIT命令直接完成的提交为显式提交。
SQL>COMMIT;

● 隐式提交,用SQL命令间接完成的提交为隐式提交。
ALTER,AUDIT,COMMENTCONNECTCREATE,DISCONNECT,DROPEXITGRANT,NOAUDIT,QUIT,REVOKERENAME。

● 自动提交,若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后, 系统将自动进行提交,这就是自动提交。
SQL>SET AUTOCOMMIT ON

● 数据库表

一个数据库通常包含一个或多个表。每个表有一个名字标识,表包含带有数据的记录(行),如下:

● QtSql模块层次结构

● Qt5数据库驱动

Qt SQL模块使用数据库驱动来和不同的数据库接口进行通信。由于Qt的SQL模型的接口是独立于数据库的,所以所有数据库特定的代码都包含在了这些驱动中。Qt现在支持的数据库驱动如下图所示。

二、数据操纵语言DML(增删查改)

1. 增(INSERT)

● INSERT 语法

语法1:

INSERT INTO target [IN externaldatabase] (fields_list)		
DEFAULT VALUES|VALUESDEFAULT|expression_list)		    

语法2:

INSERT INTO target [IN externaldatabase] fields_list
SELECT|EXECUTE

● 实例

insert into teacher values(,’allen’,'大连一中’,'1976-10-10);
insert into student values(1,'张三',21)

2. 删(DELETE)

● DELETE 语法

DELETE FROM table_names
[WHERE]

● 实例

① 从 students 表中删除姓名为 “罗亮” 的记录:

DELETE FROM students WHERE name = '罗亮'

② 从 students 表中删除ID为 “3” 的记录:

delete from students where id = 3

3. 查(SELECT )

● 完整的SELECT语法

SELECT [DISTINCT] [别名.]字段名或表达式 [AS 列标题]   /* 指定要选择的列或行及其限定 */				
FROM  table_source                                 /* FROM子句,指定表或视图 */
[ WHERE  search_condition ]                	       /* WHERE子句,指定查询条件 */
[ GROUP BY group_by_expression ]                   /* GROUP BY子句,指定分组表达式 */
[ ORDER BY order_expression [ ASC | DESC ]]        /* ORDER BY子句,指定排序表达式和顺序 */

● 实例

① 查询Student数据库。查询 students 表中各个同学的姓名和总学分。

USE Student SELECT name,totalscore FROM students

② 查询表中所有记录。查询students表中各个同学的所有信息,用得最多

SELECT * FROM students

③ 条件查询。查询students表中总学分大于等于120的同学的情况。

SELECT * FROM students WHERE totalscore >=  120

④ 条件查询&获取院系名字和总分。查询students表中总学分大于等于120的同学的情况。

SELECT department,name,totalscore FROM students WHERE totalscore >=  120

⑤ 多重条件查询。查询students表中所在系为“计算机”且总学分大于等于120的同学的情况。

SELECT * FROM students WHERE department='计算机' AND totalscore >= 120

⑥ 使用LIKE谓词进行模式匹配。查询students表中姓“王”且单名的学生情况。

SELECT * FROM students WHERE name LIKE '王_'

4. 改(UPDATE)

● UPDATE 语法

UPDATE table_name
SET Field_1=expression_1[,Field_2=expression_2…]
[FROM table1_name|view1_name[,table2_name|view2_name…]]
[WHERE]

其中,Field 是需要更新的字段,expression 表示要更新字段的新值表达式。

● 实例

① 将计算机系学生的总分增加10:

UPDATE students 
SET totalscore = totalscore + 10 
WHERE department = '计算机'

② 将ID为2的学生的名字改为 “小明”:

update students 
SET name = '小明' 
WHERE id = 2

QT 其它文章请点击这里:     QT 学习笔记

参考: QT/C++基础与提高系列之QT中级篇系列视频课程

以上是关于QT 数据库学习笔记数据库基本概念的主要内容,如果未能解决你的问题,请参考以下文章

QT 数据库学习笔记数据库基本概念

QT 数据库学习笔记QT操作SQLite数据库

QT 数据库学习笔记QT操作SQLite数据库

QT 数据库学习笔记QT操作SQLite数据库

Qt 学习笔记 4. QByteArray

数据结构与算法学习笔记:数据结构基本概念