SQL基础教程:增删改查操作详解

版权申诉
0 下载量 147 浏览量 更新于2024-06-20 收藏 7.4MB PDF 举报
"常用SQL汇总.pdf" SQL(Structured Query Language)是一种用于管理关系数据库系统的标准语言,主要用于执行数据的增、删、改、查(CRUD)操作。在SQL中,基本的数据存储对象是表(table),表中的数据以行(row)的形式存在,每一行又由多个列(column)或字段(field)组成。 SQL语句通常由多个子句构成,如SELECT语句,它是SQL中最常用的语句,用于从数据库中检索数据。SELECT语句的基本语法如下: ```sql SELECT [DISTINCT] column_name|expression[ALIAS] FROM table_name; ``` - `SELECT`:指定要查询的列或表达式,可以使用`*`通配符代表所有列。 - `[DISTINCT]`:可选,用于去除结果集中的重复行。 - `column_name`:要查询的具体列名。 - `expression`:可以是包含算术运算、函数调用等的表达式。 - `[ALIAS]`:别名,用于为列名提供更易读的名称。 - `FROM`:指定要查询的表。 - `table_name`:表的名称。 例如,以下两个查询示例: - `SELECT * FROM departments;` 查询departments表的所有列。 - `SELECT department_id, manager_id FROM departments;` 只查询departments表的department_id和manager_id两列。 在编写SQL语句时,应注意以下几点: - SQL语句是大小写不敏感的,但为了提高可读性,通常将关键词大写,列名和表名小写。 - 一条SQL语句可以在一行或多行上书写。 - 关键字不能缩写,例如`SELECT`不能写成`SEL`。 - 子句通常单独占一行,这有助于增强代码的可读性和减少错误的可能性。 - 使用缩进也可以提升代码的可读性。 - 每条SQL语句以分号`;`结尾。 SQLPlus是Oracle数据库系统提供的一个命令行客户端工具,用户可以通过它与数据库交互,执行SQL语句和一系列其他管理命令,如`SET LINESIZE`用于设置输出行的宽度,以便更好地显示查询结果。 通过学习和掌握这些基本的SQL知识,你可以更有效地管理和操作数据库,进行数据分析和业务处理。在实际应用中,还会涉及到更复杂的查询,如联接(JOIN)、子查询、聚合函数(GROUP BY)、排序(ORDER BY)以及条件过滤(WHERE)等,这些都是SQL中的重要概念。

// 查询全部数据,这里需要改造一下,我们传入一个空容器,然后,把数据弄出去 void SqOperator::queryTable(QList<QString> &list) { QSqlQuery sqlQuery; sqlQuery.exec("SELECT * FROM idinfo"); if(!sqlQuery.exec()) { qDebug() << "Error: Fail to query table. " << sqlQuery.lastError(); } else { while(sqlQuery.next()) { QString usrname = sqlQuery.value(0).toString(); list.append(usrname); QString usrpass = sqlQuery.value(1).toString(); list.append(usrpass); //qDebug()<<QString("id:%1 name:%2").arg(id).arg(name); } } } // 插入单条数据 bool SqOperator::singleInsertData(info &singledb) { QSqlQuery sqlQuery; sqlQuery.prepare("INSERT INTO idinfo VALUES(:usrname,:usrpass)"); sqlQuery.bindValue(":usrname", singledb.usrname); sqlQuery.bindValue(":usrpass", singledb.usrpass); if(!sqlQuery.exec()) { qDebug() << "Error: Fail to insert data. " << sqlQuery.lastError(); return false; } else { qDebug() <<"insert success."; // do something return true; } } // 插入多条数据 void SqOperator::moreInsertData(QList<info>& moredb) { // 进行多个数据的插入时,可以利用绑定进行批处理 QSqlQuery sqlQuery; sqlQuery.prepare("INSERT INTO idinfo VALUES(?,?,?)"); QVariantList nameList,passList; for(int i=0; i< moredb.size(); i++) { nameList << moredb.at(i).usrname; passList << moredb.at(i).usrpass; } sqlQuery.addBindValue(nameList); sqlQuery.addBindValue(passList); if (!sqlQuery.execBatch()) // 进行批处理,如果出错就输出错误 { qDebug() << sqlQuery.lastError(); } } // 修改数据 void SqOperator::modifyData(QString usrname,QString usrpass) { QSqlQuery sqlQuery; sqlQuery.prepare("UPDATE student SET usrname=?,usrpass=?"); sqlQuery.addBindValue(usrname); sqlQuery.addBindValue(usrpass); if(!sqlQuery.exec()) { qDebug() << sqlQuery.lastError(); } else { qDebug() << "updated data success!"; } } // 删除数据 void SqOperator::deleteData(QString usrname) { QSqlQuery sqlQuery; sqlQuery.exec(QString("DELETE FROM student WHERE id = %1").arg(usrname)); if(!sqlQuery.exec()) { qDebug()<<sqlQuery.lastError(); } else { qDebug()<<"deleted data success!"; } } //删除数据表 void SqOperator::deleteTable(QString& tableName) { QSqlQuery sqlQuery; sqlQuery.exec(QString("DROP TABLE %1").arg(tableName)); if(sqlQuery.exec()) { qDebug() << sqlQuery.lastError(); } else { qDebug() << "deleted table success"; } } void SqOperator::closeDb(void) { database.close(); }用C++语法解释每一行代码,并说明作用

2023-06-10 上传