查询:
SQLQUERY;
sqlQuery.exec("SELECT * FROM optic_life_time_new");
QStringList headerText;
headerText<<QString("Type")<<QString("Index")<<QString("Color")<<QString("Limit Hours")<<QString("Used Hours")<<QString("Alarm Percent");
model = new QStandardItemModel(sqlQuery.size(),headerText.size(),this);
selection = new QItemSelectionModel(model);
ui->tbv_LifeTime->setModel(model);
ui->tbv_LifeTime->setSelectionModel(selection);
ui->tbv_LifeTime->setSelectionMode(QAbstractItemView::ExtendedSelection);
ui->tbv_LifeTime->setSelectionBehavior(QAbstractItemView::SelectItems);
model->setRowCount(sqlQuery.size());
model->setHorizontalHeaderLabels(headerText);
QStandardItem* item = nullptr;
int i = 0;
while (sqlQuery.next())
{
QStringList lines;
lines<<sqlQuery.value(0).toString();
lines<<sqlQuery.value(1).toString();
lines<<sqlQuery.value(2).toString();
lines<<sqlQuery.value(3).toString();
lines<<sqlQuery.value(5).toString();
lines<<sqlQuery.value(4).toString();
for(int j = 0 ; j < lines.size() ; j++)
{
item = new QStandardItem(lines.at(j));
model->setItem(i,j,item);
item->setEditable(false);
}
i++;
}
更新表:
sqlQuery.exec(QString("UPDATE optic_life_time_new SET Used_Hours='%1',arm_Percent='%2' WHERE Light_Index='%3' AND Light_Type='%4' AND Light_Color='%5'").arg(userdHours).arg(alarmPercent).arg(curIndex).arg(curType).arg(curColor));
sqlQuery.exec(QString("UPDATE optic_life_time_new SET Used_Hours='%1',Last_Used_Time='%2' WHERE Light_Type='TDIFront' AND Light_Index=0 AND Light_Color='Green'").arg(usedTime).arg(currentDateTime.toString("yyyy-MM-dd hh:mm:ss")));
当需要根据多个条件来更新数据库中的数据时,可以使用AND或OR运算符来组合多个条件。
例如,假设有一个名为"customers"的表,包含以下列:id、name、age和city。现在要将名为"John"且年龄为25岁的客户的城市更新为"New York",可以使用以下SQL语句:
UPDATE customers
SET city = 'New York'
WHERE name = 'John' AND age = 25;
这条SQL语句将会在"customers"表中找到满足条件name = 'John'和age = 25的记录,并将它们的city更新为"New York"。
另外,如果需要根据多个条件更新不同的字段,可以在SET子句中指定多个字段和对应的值。例如,要将名为"John"且年龄为25岁的客户的城市更新为"New York",并将名字更新为"John Smith",可以使用以下SQL语句:
UPDATE customers
SET city = 'New York', name = 'John Smith'
WHERE name = 'John' AND age = 25;
这条SQL语句将会在"customers"表中找到满足条件name = 'John'和age = 25的记录,并将它们的city更新为"New York",同时将它们的name更新为"John Smith"。
使用sql语句如何判断一张数据表是否存在:
在SQL中,可以使用以下语句来判断一张数据表是否存在:
```sql
SELECT *
FROM information_schema.tables
WHERE table_schema = 'your_database_name' AND table_name = 'your_table_name';
```
在上述语句中,将`your_database_name`替换为你的数据库名,将`your_table_name`替换为你要判断的表名。执行以上语句后,如果查询结果返回了数据,则表示该表存在;如果查询结果为空,则表示该表不存在。
使用sql语句创建数据表:
要在SQL中创建数据表,可以使用以下语句:
```sql
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
...
);
```
在上述语句中,将`table_name`替换为你要创建的表名。然后,为每列指定列名、数据类型和约束条件。每个列的定义之间用逗号分隔。
以下是一个示例,创建一个名为`customers`的表,包含`id`、`name`和`email`三列:
```sql
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(50) UNIQUE
);
```
在上述示例中,`id`列具有主键约束,`name`列没有任何约束,`email`列具有唯一约束。
注意:具体的数据类型和约束条件可能因不同的数据库管理系统而有所差异。上述示例中使用的是一些常见的数据类型和约束条件,你可以根据自己的需求进行调整。
sql语句插入新的字段:
要插入新的字段,可以使用ALTER TABLE语句的ADD COLUMN子句。以下是一个示例:
```sql
ALTER TABLE 表名
ADD COLUMN 新字段名 数据类型;
```
例如,如果要在名为"customers"的表中添加一个名为"email"的新字段,数据类型为VARCHAR(50),可以使用以下语句:
```sql
ALTER TABLE customers
ADD COLUMN email VARCHAR(50);
```
这将在"customers"表中添加一个名为"email"的新字段,数据类型为VARCHAR(50)。
sql插入数据表示例:
要插入数据,可以使用INSERT INTO语句。以下是一个示例:
```sql
INSERT INTO 表名 (字段1, 字段2, ...)
VALUES (值1, 值2, ...);
```
例如,如果要将一条新的客户记录插入到名为"customers"的表中,可以使用以下语句:
```sql
INSERT INTO customers (first_name, last_name, email)
VALUES ('John', 'Doe', 'johndoe@example.com');
```
这将在"customers"表中插入一条数据,其中"first_name"字段的值为"John","last_name"字段的值为"Doe","email"字段的值为"johndoe@example.com"。
如果要插入多条数据,可以使用INSERT INTO语句的多个VALUES子句。例如:
```sql
INSERT INTO customers (first_name, last_name, email)
VALUES ('John', 'Doe', 'johndoe@example.com'),
('Jane', 'Smith', 'janesmith@example.com'),
('Mike', 'Johnson', 'mikejohnson@example.com');
```
这将在"customers"表中插入三条数据。每个VALUES子句对应一条记录。
SQL语句如何更新表格结构添加新的字段?:
要更新表格结构并添加新的字段,可以使用ALTER TABLE语句。
以下是一个示例:
```sql
ALTER TABLE 表名
ADD 列名 数据类型;
```
例如,如果要在名为"customers"的表中添加一个名为"phone_number"的新字段,可以使用以下语句:
```sql
ALTER TABLE customers
ADD phone_number VARCHAR(20);
```
这将在"customers"表中添加一个新的"phone_number"字段,其数据类型为VARCHAR(20)。可以根据需要更改数据类型,例如使用INT或DATE等。
如果要添加多个字段,可以在同一个ALTER TABLE语句中添加多个ADD子句,如下所示:
```sql
ALTER TABLE customers
ADD column1 数据类型,
ADD column2 数据类型,
ADD column3 数据类型;
```
这将在"customers"表中同时添加多个新字段。
注意:在添加新字段之后,如果有现有的数据,可能需要使用UPDATE语句来更新新字段的值。
创建数据库:create database 数据库名 [库选项];
创建以GBK为字符集的数据库:create database 数据库名 charset gbk;
显示所有的数据库:show databases;
查看以my开头的数据库:show database like 'my%'
选择数据库:use 数据库名;
修改数据库字符集:alter database 数据库名 charset 字符集;
删除数据库:drop database lhq01;
创建数据表:
create table 表名(字段名 字段类型 [字段属性],......) [表选项] 例如:create table class(name varchar(10));
显示所有表:show tables;
匹配显示表:show tables like '匹配模式';
例:show tables like 's%';
显示表结构:
本质含义:显示表中所包含的字段信息(名字,类型,属性等)
Describe 表名
Desc 表名
show columns from 表名;
显示表创建语句:show create table 表名;
设置表属性:
表属性是指表选项:engine,charset和collate
基本语法:alter table 表名 表选项 [=] 值
例如:alter table student charset gbk;
查看: show create table student\G;
修改表名:rename table student to my_student;
新增字段:alter table 表名 add [columns] 新字段名 列类型 [列属性,如int] [位置 first/after 字段名];
例如增加age字段:alter table my_student add column age int;
将位置放在首段:alter table my_student add column id int first;
删除字段:alter table my_student drop name;
删除表结构:drop table 表名1,表名2,...
数据库的插入:
将数据以SQL的形式存储到指定数据表(字段)
insert into 表名 [(字段列表)] values(对应字段列表)
例如:insert into my_student (name,age) values('jack',30);
values要与前面的对齐,类型也要一致。
查询操作:
查询表中全部数据:select * from 表名;从这个表中把所有的字段所对应的数据都取出来。
例如在my_student里面只查找name:select name from my_student;
简单条件查询:select 字段列表/* from 表名 where 字段名 = 值;
例如:select name from my_student where age = 50;//查找my_student数据表中age=50的所有的name
删除操作:delete from 表名 [where 条件];//如果没有where会删除所有数据
例如:delete from my_student where age=30;
更新操作:将数据进行修改(通常是修改部分字段数据)
基本语法:update 表名 set 字段名 = 新值 [where 条件];
例如:date my_student set age = 28 where name = 'Han';
设置字符集规则为GBK:set names gbk;//为了方便服务端与客户端进行字符集转换
查看系统保存的三种关系处理字符集:
show variables like 'character_set%';
修改变量:
set character_set_client = gbk;//为了让服务器识别客户端传来的数据
set character_set_results = gbk;//为了告诉客户端服务端所有的返回的数据字符集
set character_set_connection = gbk;//为了更好的帮助客户端与服务端之间进行字符集转换
列类型(字段类型):
整数类型:
Tinyint:迷你整形(1byte)
Smallint(2byte)
Mediumint(3byte)
int(4byte)
Bigint(8byte)
显示程长度:可以显示多少位。
定点数(decimal):能够保证数据精确的小数(小数部分可能不精确,会四舍五入,整数部分一定精确)
日期类型:
data(3byte)格式为:YYYY-mm-dd,能表示的范围:1000-01-01到9999-12-12,初始值为0000-00-00
时间类型:time(3byte):能够表示某个指定的时间,格式为:HH:ii:ss,表示-838:59:59~838:59:59
日期时间类型:datatime(8byte):将data和time合并起来,格式为YYYY-mm-dd HH:ii:ss。
时间戳:
timestamp:YYYY-mm-dd HH:ii:ss。
year:1900-2155
字符串类型:
char(定长字符):指定长度之后系统一定会分配指定的空间用于存储数据
基本语法:char(L),L代表字符数(中文与英文字母一样),L长度为0到255
varchar(变长字符):指定长度之后,系统会根据实际存储的数据来计算长度来分配合适的长度。基本语法:varchar(L)L:0-65535
text(文本类型)
enum(枚举类型):在数据插入之前先设定几个项,这几个项就是可能最终出现的数据结果。enum(数据值1,数据值2,...)
set(集合):是一种将多个数据选项可以同时保存的数据类型,本质是将指定的项按照对应的二进制位来进行控制:1表示该选项被选中,0表示该选项没有被选中。
基本语法:set('值1','值2','值3',...)系统为set提供了多个字节进行保存,但系统会自动计算来选则具体的存储单元:1子节:只能有8个选项。2字节:只能有16个选项。8字节:只能有64个选项。
列属性:
null:代表字段为空,如果对应的值为YES表示该字段可以为null。
默认值:当字段被设计的时候,如果允许默认条件下,用户不进行数据的插入,那么就可以使用实现。default关键字的另外一层使用,显示的告知字段使用默认值,在进行数据插入的时候,对字段直接使用default。
列描述(comment):专门用于给开发人员进行维护的一个注释说明。基本语法:comment '字段描述';查看comment必须通过查看表创建语句。
主键(primary key):在一张表中,有且只要一个字段,里面的值具有唯一性。
创建主键:
随表创建:
系统提供两种增加主键的方式:
1、直接在需要当作主键的字段之后,增加primary key 属性来确定主键
2、在所有字段之后增加primary key选项,primary key(字段信息)。
--在字段后增加主键属性
create table my_pri1(
username varchar(10) primary key
)charset utf8;
create table my_pri2(
username varchar(10),
primary key(username)
)charset utf8;
表后增加:
基本语法:alter table 表名 add primary key(字段);
create table my_pri3(
username varchar(10)
)charset utf8;
--增加主键
alter table my_pri3 add primary key(username);
删除主键:
alter table drop 表名 drop primary key;
主键约束:主键一旦增加,那么对应的字段有数据要求:当前字段对应的数据不能为空以及如何重复。
主键分类:根据业务意义可分为:业务主键和逻辑主键。
自动增长:auto increment,当给定某个字段该属性之后,该列的数据在没有提供确定数据到时候,系统会根据之前已经存在的数据进行自动增加后,填充数据。
唯一键(unique key):用来保证对应字段中的数据唯一的。
表关系:表与表之间(实体)有什么样的关系,每种关系应该如何设计表结构。
一对一:一张表中的一条记录与另外一张表中最多有一条明确的关系:通常此设计方案保证两张表中使用同样的主键即可。
一对多
多对多
新增数据
多数据插入:只写一次insert指令,但是可以直接插入多条记录
基本语法:insert into 表名 [(字段列表)] values (值列表);
insert into my_student values('张三'),('李四');
主键冲突:在有的表中,使用的是业务主键(字段有业务含义),但是往往在进行数据插入的时候,又不确定数据表中是否已经存在对应的主键。
create table student(
stu_id varchar(10) primary key comment '主键,学生id',
stu_name varchar(10) not null comment '学生姓名'
)charset utf8;
insert into student values
('stu0001','张三');
('stu0002','李四'),
('stu0003','王二'),
('stu0004','麻子');
更新数据
注意:1、在更新数据的时候,通常一定是跟随条件更新 update 表名 set 字段名 = 新值 where 判断条件;
2、如果没有条件,是全表更新数据。但是可以使用limit来显示更新的数量:
update 表名 set 字段名 = 新值 [where 判断条件] limit 数量;
例如:update my_simple set name = 'e' where name = 'a' limit 4;
查询数据
select 选项 字段列表 from 数据源 where 条件 group by 分组 having 条件 order by 排序 limit 限制;
选项:系统该如何对待查询得到的结果
select distict(去重) * from