57黑马QT笔记之数据库的语句执行–插入
概念:
1)回滚:也就是我们常见的事务回滚;例如当我要删除某个数据库时,我开启了一个事务,然后再弹出一个对话框给你,是否提交事务,或者作出事务的回滚,也就是说取消了这个删除的操作,并不会执行到删除数据库。 下一篇的删除我们就会说到事务的回滚操作了。
2)前提:
前一篇我们说到如何在Qt下连接数据库,当我们使用添加某个数据库函数时,他可以有第二个参数,例如
QSqlDatabase mySql = QSqlDatabase::addDatabase("MYSQL","aa");
QSqQuery query(mySql);
//第二条语句的SQL语句必须加上参数mySql.否则SQL语句无法执行
//但一般只用一个数据时,你没必要使用;或者说你使用多个时也没必要使用,只要你更改相应的数据库,然后执行相应的语句就行。
1 SQL语句在Qt下的执行
1)很简单,只需要定义一个QSqQuery类语句执行的对象即可。例如,
QSqlQuery query1;
query1.exec("create table student(id int primary key auto_increment,name varchar(255),age int,score int);"); //255不能为中括号
query1.exec("insert into student(id,name,age,score) values(2,'关羽',44,0);"); //sql字符串为单引号
query1.exec("truncate student;"); //它与delete只是清除内容,不会删除表
//1)truncate:只删除数据,而不删除表的结构,不能回滚.
//2)delete:加where时可以单独删除(删全部也是循环单独删除,可以回滚) .和1一样,只删除数据,而不删除表的结构.
//3)drop:会删除对应结构,但数据不会被删除,但是变成不可用.
2)下面直接给出数据库的常见增删改查执行语句:
1)数据库的创建和删除;
2)表的创建和删除;
3)表的插入;
4)数据库的更新
5)当前使用哪个数据库;
6)数据库的查询;
7) mysql复制一个表的结构和数据或者创建一个新表全复制旧表的结构(不包含数据);
// 1 创建一个名称为car的数据库 和 删除数据库car
create database car;
drop database car;
// 2 创建表 和 删除brand表
create table brand (id int primary key auto_increment, factory varchar(255), name varchar(255), price int, sum int, sell int, last int); // 其中id设置为主键 唯一id区别行
drop table brand;
// 3 插入数据 (多种变量和值一起插入)
insert into brand(factory,name,price,sum, sell, last) values('一汽大众', '奥迪A6', 36, 50, 8, 42);
insert into brand(factory,name,price,sum, sell, last) values('一汽大众', '捷达', 10, 80, 4, 76);
insert into brand(factory,name,price,sum, sell, last) values('一汽大众', '奔驰', 83, 40, 6, 34);
insert into brand(factory,name,price,sum, sell, last) values('二汽神龙', '毕加索', 39, 50, 6, 44);
insert into brand(factory,name,price,sum, sell, last) values('二汽神龙', '富康', 28, 60, 5, 55);
insert into brand(factory,name,price,sum, sell, last) values('二汽神龙', '标致307',27, 70, 4, 66);
insert into brand(factory,name,price,sum, sell, last) values('上海大众', '桑塔纳', 25, 75, 2, 73);
insert into brand(factory,name,price,sum, sell, last) values('上海大众', '帕萨特', 27, 65, 10, 55);
// 4 更新数据
update brand set sell=5 , last=70 where factory='上海大众' and name='桑塔纳';
update gGlobalUpLevelAwardData set "序列号的字符串" where serverId = 3; // 更新服务器id=3的行的字段gGlobalUpLevelAwardData的数据,gGlobalUpLevelAwardData是个表来的
UPDATE dh_dvrinfo_test SET status = 2 WHERE id = '66';//dh_dvrinfo_test为一个表名
// 5 使用数据库car
use car;
// 6 数据库的查询 非常常用
//SELECT 要查询的列名 FROM 表名 WHERE 限制条件; //关键字忽略大小写
select * from brand where serverId = 3; // 查询所有服务器Id=3的行
select name,age from brand; // 查询表brand的name,age字段(列)
select name,age from brand where age>25; // 查询name,age字段,并且要求该行的age字段大于25.
// 7 mysql复制一个表的结构和数据或者创建一个新表全复制旧表的结构(不包含数据)
// 1)复制表结构和数据(列属性没有复制过去)
CREATE TABLE new_table SELECT * FROM old_table;
// 2)复制表结构,全复制
CREATE TABLE new_table LIKE old_table;
//8 查看数据库下与时间有关的全局变量
show global variables like "%time%";//主要为了查看数据库的最大连接时长,如何处理连接时不做事情,与服务器断开,然后想办法重连