SQLite语句

SQL的使用

1.  DDL数据定义语言
2.  DML数据操作语言
3. DQL数据查询语言

注意:
1.  SQL语句在执行时不区分大小写,为了书写规范一律大写
2. 表格名,字段名不能和关键词同名
3. 每一个SQL语句都以;结尾

DDL语句

创建表格 CREATE TABLE
CREATE TABLE 表格名 (字段1 字段1的类型, 字段2 字段2的类型, 字段3 字段3的类型, ...);
CREATE TABLE student (name text, age integer, height float);

删除表格 DROP TABLE

DROP TABLE 表格名
DROP TABLE student

DML语句

插入 INSERT INTO

INSERT INTO 表格名(字段1, 字段2, 字段3, ...) VALUES(数值1, 数值2, 数值3, ...);
INSERT INTO Student(name, age, height) VALUES('ljp', 25, 167);

删除 DELETE

DELETE FROM 表格名
DELETE FROM STUDENT

带筛选条件的删除用where, and或者or连接多个筛选条件

DELETE FROM 表格名 WHERE 筛选条件 AND 筛选条件;
DELETE FROM Student age>=20 AND height<160;

修改 UPDATE SET

不加筛选条件的修改默认修改所有数据的值

UPDATE 表格名 SET 字段名=修改后的值;

修改多个字段,用逗号隔开

UPDATE 表格名 SET 字段名=值,字段名=值;

带筛选条件,只筛选符合条件的数据的值

UPDATE 表格名 SET 字段名=修改后的值 WHERE 筛选条件;

DQL语句

查询 SELECT

查询某个表格中的数据,可用筛选条件,若要查询所有字段,可以用通配符*代替
SELECT 字段1,字段2,字段3 FROM 表格名 WHERE 查询条件;
排序查询结果,关键字ORDER BY,ASC升序 DESC降序
SELECT * FROM 表格名 ORDER BY DESC; 

模糊查询关键词LIKE,用于text类型的数据
SELECT * FROM 表格名 WHERE 字段 LIKE '模糊查询条件,%代表任意字符'
设置查询显示的数量

从第x条数据开始显示y条数据

SELECT * FROM 表格名 LIMIT x,y;

约束

在创建表格设定字段时给字段添加的约束条件

简单约束

不为空 NOT NULL

该字段对应的值不能为空

CREATE TALALE 表格名 (字段1 字段类型 NOT NULL,...);
唯一性 UNIQUE

该字段对应的值不能重复,具有唯一性

CREATE TALALE 表格名 (字段1 字段类型 UNIQUE,...);
默认值

在字段没有设置值的时候自动生成的值

CREATE TALALE 表格名 (age integer DEFAULT 18, name text DEFAULT '小明'...);

主键约束 PRIMARY KEY

主键约束用于区分表中不同数据的一个编码,具有唯一性,遵循以下设计原则:
1.  主键应对用户无意义
2. 主键的值一旦设定无法更改
3. 主键的值应由系统自动生成
4. 一个数据表中最多只能有一个主键

eg:

CREATE TALALE 表格名 (字段1 字段类型 PRIMARY KEY,...);
自动增长 AUTOINCREMENT
CREATE TALALE 表格名 (字段1 字段类型 PRIMARY KEY AUTOINCREMENT,...);

外键约束 REFERENCES

使用REFERENCE能够绑定外键关联,一般绑定另一个表格中的主键.并且插入外键约束的值时必须再关联表格中存在唯一的对应值

CREATE TALALE director (id integer PRIMARY KEY,...);
CREATE TALALE movie (id integer PRIMARY KEY,direcor_id integer REFERENCES director(id));

多表联查 JOIN

在有外键关联的情况下需要同时获取两个表格中的数据,使用多表联查

SELECT * FROM 表格1 JOIN 表格2 ON 表格1中的字段=相对应的表格2中的字段

eg:

SELECT * FROM movie JOIN director ON movie.director_id=director.id;

可以再表格名后边用简化名对表格名进行替代 movie M

SELECT * FROM movie M JOIN director D ON M.director_id=D.id;
Qt 中可以使用 QSqlQuery 类来执行 SQLite 数据库的 SQL 语句。下面是一些常用的 SQLite 语句及其 Qt 实现: 1. 创建表 ```sql CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, ..... ); ``` ```c++ QSqlQuery query; query.exec("CREATE TABLE table_name (" "column1 datatype," "column2 datatype," "column3 datatype," "....." ")"); ``` 2. 插入数据 ```sql INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); ``` ```c++ QSqlQuery query; query.prepare("INSERT INTO table_name (column1, column2, column3, ...) VALUES (?, ?, ?, ...)"); query.addBindValue(value1); query.addBindValue(value2); query.addBindValue(value3); // ... query.exec(); ``` 3. 查询数据 ```sql SELECT column1, column2, column3, ... FROM table_name WHERE condition; ``` ```c++ QSqlQuery query; query.exec("SELECT column1, column2, column3, ... FROM table_name WHERE condition"); while(query.next()) { QString column1 = query.value(0).toString(); QString column2 = query.value(1).toString(); QString column3 = query.value(2).toString(); // ... } ``` 4. 更新数据 ```sql UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; ``` ```c++ QSqlQuery query; query.prepare("UPDATE table_name SET column1 = ?, column2 = ?, ... WHERE condition"); query.addBindValue(value1); query.addBindValue(value2); // ... query.exec(); ``` 5. 删除数据 ```sql DELETE FROM table_name WHERE condition; ``` ```c++ QSqlQuery query; query.exec("DELETE FROM table_name WHERE condition"); ``` 以上就是一些常用的 SQLite 语句及其在 Qt 中的实现方式。需要注意的是,在执行 SQL 语句时,应该使用 prepare 和 addBindValue 函数来避免 SQL 注入攻击。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值