数据库
数据库分类
网络型数据库:类似于云存储
层级型数据库:
关系型数据库:
关系表:二维表
关系集合:操作数据库SQL语句
完整性约束:表内约束,表间约束
--显示所有的数据库
SHOW DATABASES;
--进入某一个指定的数据库
USE emp;
--新建表结构
CREATE TABLE emp(
emp_id int(4) PRIMARY key,
emp_name VARCHAR(255),
dept_id int(4) DEFAULT 100,
emp_sex enum('男','女')
);
--查询表结构
DESC emp;
--查询表的创建语句
SHOW CREATE TABLE emp;
--修改表结构
主键 PRIMARY key(不能为空 不能重复)
ALTER TABLE emp add PRIMARY key(emp_id);
唯一键 UNIQUE key(可以为空 不能重复)
ALTER TABLE emp add UNIQUE key(emp_name);
add 增加字段
ALTER TABLE emp add emp_addr VARCHAR(255);
drop 删除表中字段
ALTER TABLE emp drop emp_addr;
modify 修改表中字段的属性
ALTER TABLE emp modify emp_name CHAR(255) not null;
change 修改表中字段的名字
ALTER TABLE emp change emp_name emp_Name CHAR(255) not null;
--插入表中数据
语法:INSERT into 表名 values(相应字段的内容)
--按照表定义的顺序插入所有数据
INSERT into emp VALUES(1001,"Tom",2001,'男');
--插入指定字段的数据
INSERT into emp(emp_id,emp_name) VALUES(1001,"Tom");
--删除表中数据
语法:DELETE from 表名 where 条件
DELETE from emp where emp_id = 1001 and emp_sex = '男';
--修改表中数据
语法:UPDATE 表名 set 内容 where 条件
UPDATE emp set emp_id = 1017 where emp_id = 1001;
--查询表中数据
语法:SELECT 字段 from 表名 where 条件 group by 分组 having 条件 order by 排序 limit 分页
--查看表中所有的数据
SELECT * from stu_course;
SELECT函数
count 计数
max 求最大值
sum 求和
avg 求平均值
--where条件 比较运算符
between...and
where emp_id between 1001 and 1004;
in
where emp_id in(1001,1004);
where emp_id not in(1001,1004);
like
where emp_name like "smith";
s+任意字符
where emp_name like "s%";
s+1个字符
where emp_name like "s_";
s+4个字符
where emp_name like "s____";
--多表连接查询
1笛卡尔积
SELECT * from emp,dept;(表1*表2)
2交叉连接 CROSS JOIN
SELECT * from emp CROSS JOIN dept;(表1*表2)
3联合查询 UNION
SELECT emp_no from emp ORDER UNION SELECT dept_no from dept;(表1+表2,默认会去重,不去重加all)
4内连接
1等值连接
SELECT e.emp_no,e.emp_name,e.deptno,d.dept_loc from emp as e,dept as d
where d.dept_loc = "NEW YORK" and e.deptno = d.deptno;
2自连接
SELECT e.emp_name,m.emp_name from emp e,emp m where e.mgr = m.emp_no
3内连接 INNER JOIN
5外连接
按照某一张表作为主表(最终数据都会保留)
1左外连接 left join(左表为主表,需要全部显示)
2右外连接 right join(右表为主表,需要全部显示)
--数据库链接
#include <QtSql/QSqlDatabase>
#include <QSqlQuery>
QSqlDatabase database = QSqlDatabase::addDatabase("QMYSQL");
database.setHostName("10.170.41.153");
database.setUserName("zhai.zhy");
database.setPassWord("13322492579");
database.setDatabaseName("my_stu");
database.open();
QSqlQuery query(database);
Qstring select = Qstring ("select course_name from stu_course where mystu_id = '%1'").arg(str);
query.exec(select);
query.next();
Qstring name = query.value(0).toString();
QT
--时间显示
QTimer *timer = new QTimer;
connect(timer, SIGNAL(timeout()), this, SLOT(updata())); //连接
timer->start(1000); //开始
timer->stop(); //停止
--自定义槽函数
connect(timer, SIGNAL(timeout()), this, SLOT(updata()));
//1、timer 发起信号的部件
//2、timeout 发起什么样的信号
//3、this 接受信号的窗口或者部件
//4、updata 自定义的槽函数
--随机数
第一步:初始化 qsrand()
第二步: 产生随机数 rand()
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
int rand = qrand();
--显示图片
1相对路径
../RandDemo/2.jpg ../代表上一级
ui->label->setPixmap(QString("../RandDemo/2.jpg"));
2绝对路径
当前计算机中存储的完整路径
D:/workspace/RandDemo/2.jpg
ui->label->setPixmap(QString("D:/workspace/RandDemo/2.jpg"));
--图片自适应大小
ui->label->setScaledContents(true);