sqlite常用操作
sqlite常用操作
- 一、数据库简介
- 二、Sqlite数据库
- 三、创建数据表
- 四、删除数据表
- 五、向数据表插入数据
- 六、从数据表中删除数据
- 七、修改数据表中已存在的数据
- 八、查询数据表中的数据
- 九、Qt应用程序中使用Sqlite数据
- 练习:QT中使用Sqlite学生管理系统
一、数据库简介
概念
数据库是以一定方式存储在一起、能为多个用户共享、具有尽可能小的冗余特性,是与应用程序彼此独立的数据集合。相关术语
DB:数据库(database)
DBA:数据库管理员
RDB:关系式数据库
DBMS:数据库管理系统常见的数据库
甲骨文的Oracle
IBM的DB2
微软的Sqlserver
Sun的Mysql
开源的Sqlite
数据库操作语言(SQL)
二、Sqlite数据库
- 常用的sqlite自身配置和格式显示相关指令
命令 | 含义 |
---|---|
.help | //查看这些指令的帮助信息 |
.exit或.quit | //退出数据库回到控制终端 |
.open testDB.db | //打开testDB.db数据库文件 |
.database | //查看数据库名字和对应的文件名 |
.table | //查看数据库中数据表的名字 |
.mode MODE | //设置数据表显示模式,MODE:list(默认)/column/tab/html… |
.header on | //显示数据表的表头(列名) |
.schema | //查看数据表创建时的详细信息 |
.nullvalue “NULL” | //设置数据表空白位置显示"NULL" |
注意:清屏"ctrl+L"执行"SELECT * FROM company;"可以查看company数据中所有的数据**可以将上述指令写入配置文件中**,将来重新进入数据库界面时会自动执行。vim /home/tarena/.sqliterc .mode tab.header on.nullvalue "NULL"
三、创建数据表
语法:
CREATE TABLE 表名 (列名1 数据类型 [约束],列名2 数据类型 [约束],…)
常用数据类型:INT(整型数) TEXT(字符串) REAL(浮点数)
常用约束:
NOT NULL:非空约束,表示该类数据不能为空
PRIMARY KEY:主键约束,表示该列数据唯一,可以加快对数据的访问
sqlite> CREATE TABLE student (...> id INT NOT NULL PRIMARY KEY,...> name TEXT NOT NULL,...> score REAL NOT NULL );sqlite> .table //查看已存在数据表名字company student
四、删除数据表
语法:
DROP TABLE 表名;
注:
慎用,数据表一旦删除,里面所包含的数据也将随之消失!
eg:
sqlite> .tablecompany studentsqlite> DROP TABLE student;sqlite> .tablecompany
五、向数据表插入数据
语法:
INSERT INTO 表名 (列名1,列名2,…) VALUES(数值1,数值2,…);
eg:
sqlite> INSERT INTO company...> (id,name,age,address,salary)...> VALUES(10018,'貂蝉',22,'山东',13000.5);sqlite> SELECT * FROM company; sqlite> INSERT INTO company...> (name,id,age,salary)...> VALUES('小乔',10019,21,12000);sqlite> INSERT INTO company...> VALUES(10021,'孙尚香',26,'江南',9000);
六、从数据表中删除数据
语法:
DELETE FROM 表名 WHERE 条件表达式; //删除满足条件的若干条数据
DELETE FROM 表名 WHERE 条件1 and 条件2;//删除同时满足两个条件的数据
DELETE FROM 表名 WHERE 条件1 or 条件2;//删除满足条件或条件2的数据
注:如果有多个条件可以使用逻辑与(and)或者逻辑或(or)连接
eg:
sqlite> DELETE FROM company...> WHERE id = 10029;sqlite> DELETE FROM company...> WHERE age>25 and address='江南';
七、修改数据表中已存在的数据
语法:
UPDATE 表名 SET 列名1=新数值,列名2=新数值,… WHERE 条件表达式;
eg:
sqlite> UPDATE company ...> SET age = 22...> WHERE id=10012;sqlite> UPDATE company...> SET salary=salary+2000...> WHERE age>=28 and age<=35;
八、查询数据表中的数据
语句:
SELECT 列名1,列名2,… FROM 表名;
SELECT 列名1,列名2,… FROM 表名 WHERE 条件表达式;
SELECT 列名1,列名2,… FROM 表名 WHERE 条件表达式 ORDER BY 列名 排序方式;
注:排序方式关键字ASC(升序) DESC(降序)
eg:
sqlite> SELECT salary,name FROM company;
sqlite> SELECT * FROM company
…> WHERE salary<5000 or salary>10000;
sqlite> SELECT * FROM company
…> WHERE salary<5000 or salary>10000
…> ORDER BY salary DESC;
创建一个学生成绩的数据表(stduent),里面包含列的字段依次是学号(ID),姓名(Name),成绩(Score),依次完成下面操作:
1)向数据表插入以下数据
ID Name Score
10001 游成伟 88
10002 闵卫 90.5
10005 Jerry 100
10004 孟健 59.5
10003 Tom 99
insert into student (id,name,sorce)values(10001,'张三',88),(10002,'李四',99),(10003,'闵卫',100),(10004,'游成为',59.5);
INSERT INTO Student (. . .) VALUES(. . . );
2)删除Jerry一条数据
3)修改孟健成绩: 59.5–>95.5
4)排序查询
九、Qt应用程序中使用Sqlite数据
建立Qt应用程序和数据库连接 QSqlDatabase
添加数据库驱动
QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”);设置数据库名字(对于sqlite就是数据库文件名)
db.setDatabaseName(“testDB.db”);打开数据库
bool ok = db.open();执行SQL语句 QSqlQuery
创建QSqlQuery对象
QSqlQuery query;
**准备要执行的SQL语句字符串**QString str = QString("SQL语句");**执行sql语句**query.exec(str);
- 保存查询结果集 QSqlQueryModel
**创建QSqlQueryModel对象**QSqlQueryModel *model = new QSqlQueryModel;
执行SELECT语句并保存结果集到model
model->setQuery(“SELECT语句”);
将model保存结果显示图形控件(QTableView)上
QTableView *view = new QTableView;
view->setModel(model);
view->show();
练习:QT中使用Sqlite学生管理系统
添加 sql
添加两个Combo Box和一个pushbutton ,双击combo box 可以编辑
添加 table view 和 三个line edit ,三个label标签,三个pushbutton
三个line edit命名为:idEdit 、nameEdit、scoreEdit
三个button命名为:insertButton 、deleteButton、updateButton
(1)布局可以自由布局:这些选择上面和最低三个做水平布局
(2)学号姓名成绩输入栏右加弹簧,之后选择做栅格布局
(3)做好整体做一个垂直布局
添加槽函数
四个槽函数 插入 删除 修改 排序
选择默认的clicked()
测试
代码:studentdialog.h 、studentdialog.cpp
代码1:studentdialog.h
#ifndef STUDENTDIALOG_H
#define STUDENTDIALOG_H#include <QDialog>
//工程文件需要添加QT +=sql
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QSqlError>
#include <QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class StudentDialog; }
QT_END_NAMESPACEclass StudentDialog : public QDialog
{Q_OBJECTpublic:StudentDialog(QWidget *parent = nullptr);~StudentDialog();
private://创建或连接sqlite数据库void createDB();//创建学生成绩数据库void createTable();//查询和显示数据表的内容void queryTable();private slots://插入void on_insertButton_clicked();//删除void on_deleteButton_clicked();//修改void on_updateButton_clicked();//排序void on_sortButton_clicked();private:Ui::StudentDialog *ui;QSqlDatabase db; //建立应用程序和数据库连接QSqlQueryModel model; //保存查询的结果集
};
#endif // STUDENTDIALOG_H
代码2:studentdialog.cpp
#include "studentdialog.h"
#include "ui_studentdialog.h"StudentDialog::StudentDialog(QWidget *parent): QDialog(parent), ui(new Ui::StudentDialog)
{ui->setupUi(this);createDB();createTable();queryTable();
}StudentDialog::~StudentDialog()
{delete ui;
}//创建或连接sqlite数据库
void StudentDialog::createDB()
{//添加sqlite数据驱动db = QSqlDatabase::addDatabase("QSQLITE");//设置数据库名字,如果 student.db 不存在会自动创建db.setDatabaseName("student.db");//打开数据库if(db.open()== false){qDebug()<<db.lastError().text();}else{qDebug()<<"创建或连接数据库成功!";}
}
//创建学生成绩数据库
void StudentDialog::createTable()
{//准备创建数据表sql语句的字符串QString str = QString("CREATE TABLE student(""id INT PRIMARY KEY NOT NULL,""name TEXT NOT NULL,""score REAL NOT NULL)");//QSqlQuery query;if(query.exec(str) == false){qDebug()<<str;}else{qDebug()<<"创建数据表成功!";}
}
//查询和显示数据表的内容
void StudentDialog::queryTable()
{//准备查询的sql语句字符串QString str = QString("SELECT *FROM student");//执行查询语句并保存结果集到model对象model.setQuery(str);//将结果集显示到界面ui->tableView->setModel(&model);
}//插入
void StudentDialog::on_insertButton_clicked()
{//准备插入操作的sql语句字符串int id =ui->idEdit->text().toInt(); //学生学号QString name = ui->nameEdit->text();//学生姓名double score = ui->scoreEdit->text().toDouble(); // 学生成绩QString str = QString("INSERT INTO student VALUES(%1,'%2',%3)").arg(id).arg(name).arg(score);//执行sql语句QSqlQuery query;if(query.exec(str) == false){qDebug()<<str;}else{qDebug()<<"插入数据成功!";queryTable();}
}//删除:根据ID删除一条数据
void StudentDialog::on_deleteButton_clicked()
{//准备删除操作的sql语句字符串int id =ui->idEdit->text().toInt(); //学生学号QString str = QString("DELETE FROM student WHERE id =%1").arg(id);//执行sql语句QSqlQuery query;if(query.exec(str) == false){qDebug()<<str;}else{qDebug()<<"删除数据成功!";queryTable();}
}//修改根据ID修改成绩
void StudentDialog::on_updateButton_clicked()
{//准备修改操作的sql语句字符串int id =ui->idEdit->text().toInt(); //学生学号double score = ui->scoreEdit->text().toDouble(); // 学生成绩QString str = QString("UPDATE student SET score=%1 WHERE ID=%2").arg(score).arg(id);//执行sql语句QSqlQuery query;if(query.exec(str) == false){qDebug()<<str;}else{qDebug()<<"修改数据成功!";queryTable();}
}//排序
void StudentDialog::on_sortButton_clicked()
{//准备的sql语句字符串QString value = ui->valuecomboBox->currentText(); //获取排序列名QString condition; //排序方式:升序(0)/降序(1)if(ui->condcomboBox->currentIndex() == 0){condition = "ASC";}else{condition = "DESC";}QString str = QString("SELECT *FROM student ORDER BY %1 %2").arg(value).arg(condition);//执行查询语句并保存结果集到model对象model.setQuery(str);//将结果集显示到界面ui->tableView->setModel(&model);
}
sqlite常用操作相关推荐
- 【sqlite常用操作SQL语句】
目录 1.创建一个新的数据表 2.在已有的数据表中增加一个新的字段(列) 3. 在已有的数据表中增加一条新的记录(行) 1.创建一个新的数据表 "create table user(id i ...
- 【node】Sequelize常用操作、基本增删改查
[node]Sequelize常用操作.基本增删改查 sequelize初始化 先初始化一个数据库实例 再初始化一个model实例 sequelize的数据类型 基本增删改查的写法 SELECT * ...
- Android内部自带的SQLite数据库操作dos命令
1:什么叫做SQLite数据库 Android系统内核是Linux系统,Android系统很特殊,他自带了一个SQLite数据库,轻量型的一款嵌入式的数据库 它占用资源非常的低,在嵌入式设备中,可能只 ...
- C# SQLite 数据库操作语句与文件视图管理器
//sqlite数据库视图管理器 SQLiteSpy是一款专业的SQLite数据库管理,主要用于读取sqlite数据库,建立新的SQL查询,视图,复制和删除表.编辑单元格,以及查看索引,触发器和排序规 ...
- sqlite+php+函数大全,Sqlite 常用函数 推荐
Sqlite 常用函数 推荐 更新时间:2009年09月25日 23:21:57 作者: Sqlite 常用函数,在实际开发中,经常遇的到. 1 .打开数据库: 说明:打开一个数据库,文件名不一定 ...
- TensorFlow常用操作:代码示例
1,定义矩阵代码示例: import tensorflow as tftf.zeros([3,4]) #定义3行4列元素均为0的矩阵tensor=tf.constant([1,2,3,4])#定义一维 ...
- Ubuntu 常用操作
Ubuntu常用操作 外观操作 修改应用icon图标 终端美化 内存管理 内存查询 分区管理 日志清理 操作执行 自动执行多条命令 外观操作 修改应用icon图标 在/usr/share/applic ...
- IOS沙盒Files目录说明和常用操作
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...
- 用Python轻松搞定Excel中的20个常用操作
来源 |早起Python(ID: zaoqi-python) Excel与Python都是数据分析中常用的工具,本文将使用动态图(Excel)+代码(Python)的方式来演示这两种工具是如何实现数据 ...
最新文章
- Linux执行df -h等操作卡住问题
- HDU 4628 Pieces(DP + 状态压缩)
- android 在xml文件中引用自定义View
- 项目经理的十二条规则
- 2018年高教社杯全国大学生数学建模竞赛题目问题B 智能RGV的动态调度策略
- wxWidgets:实时传输时间RTTI
- 李宏毅机器学习课程1~~~Introduction Regression
- 服务器ios文件,ios 文件到服务器
- 2.5 结构化程序设计的方法
- C#重绘TabControl控件的源码(转)
- 安装Discuz论坛
- html标签属性值拼接,js拼接url以及为html某标签属性赋值
- 时间定位表达式-用于时间的加、减调整
- 基于JSP+SERVLET的新闻发布系统(一)
- ie8加载js太慢_ie8加载不了javascript怎么办?
- ubuntu16.04版本系统清理和美化
- 编码器的集电极输出、电压输出、互补输出和线性驱动输出
- 搭建Hadoop集群后一直使用的start-all.sh到底是个什么操作
- Boot(重点SCSS☆☆☆☆☆)(day03)
- UE4 让材质的UV动起来