1.数据库简介

1)定义

数据库是指以一定方式存储在一起,能为多个用户共享,具有尽可能小的冗余的特点,是与应用程序彼此独立的数据集合。

2)和数据库相关的术语

DB 数据库

DBMS数据库管理系统

DBA数据库管理员

RDB关系型数据库

RDBMS 关系型数据库管理系统

3)数据库分类

层次式数据库

网络式数据库

关系型数据库(普通使用)

4)常见数据库

甲骨文:Oracle,50%

IBM:DB2,20%

微软:sqlServer,15%

Sun公司的Mysql(属于Oracle)

开源的SQLite,轻量级的嵌入式关系型数据库

......

5)数据库操作语言(SQL)

2.Sqlite数据库

1)ubuntu安装Sqlite3

在线安装:sudo apt-get install sqlite3

离线安装:

//ubuntu12.04 64位

dpkg -i sqlite3_3.7.9-2ubuntu1.2_amd64.deb

//ubuntu12.04 32位

dpkg -i sqlite3_3.7.9-2ubuntu1_i386.deb

2)测试,在终端输入"sqlite3",进入sqlite命令行界面

SQLite version 3.7.9 2011-11-01 00:52:41

Enter ".help" for instructions

Enter SQL statements terminated with a ";"

sqlite> //可以输入sqlite自身指令,以"."开头

sqlite> .help //查看sqlite自身指令帮助信息

sqlite> .exit/.quit //退出

sqlite> Ctrl+L //清屏

sqlite> //可以输入sql语句,以";"结束

3.sqlite常用的指令(了解)

在终端输入:sqlite3 testDB.db,进入sqlite命令行界面

1).database 查看当前数据库信息

2).table 查看数据表的名字

3).schema 查看数据表的创建的信息

4)查看表中数据的sql语句

select * from company;

5).separator "分隔符" 设置分隔符(.mode list有效)

6).header on/off 显示/关闭表头

7).mode list/column 设置模式

8).width num1 num2 .. 设置每个字段的域宽

9).show 查询当前设置的值

10).nullvalue "string" 设置空白字段显示的字符串

11).read sqlfile 执行sqlfile文件中的语句

4 使用SQL语句操作数据库

1)创建数据表

语法:

CREATE TABLE table_name(

column1 datatype [约束],

column2 datatype [约束],

column3 datatype [约束],

...

column4 datatype [约束]

);

CREATE TABLE IF NOT EXISTS student(id INT PRIMARY KEY,name TEXT NOT NULL,score INT);

datatype(字段类型):

-->INT 整形数

-->TEXT 文本字符串

-->REAL 浮点数

注:表示字符串用 ''或""

约束:

-->PRIMARY KEY 主键约束,列字段值唯一,不可以位空,、可以加快数据访问。

-->NOT NULL 非空约束,列字段值不能为空

-->UNIQUE 唯一约束,列字段值唯一

2)删除数据表

语法:

DROP TABLE table_name;

注:删除数据表以后数据也将一起被删除

3)插入数据

语法:

INSERT INTO table_name

(column1,column2,column3,...)

VALUES(value1,value2,value3,...)

eg:

sqlite> INSERT INTO company

...> (id,age,name,address,salary)

...> VALUES(10018,30,"武松","阳谷县",800.5);

sqlite> INSERT INTO company

...> (id,age,name,salary)

...> VALUES(10019,36,"宋江",700.5);

4)删除数据

语法:

DELETE FROM table_name WHERE [condition];

eg:

//删除工资在1200--1300之间的所有数据

DELETE FROM company WHERE salary>=1200 and salary <=1300;

5)查询语句

语法:

SELECT column1,column2,... FROM table_name;

SELECT column1,column2,...

FROM table_name WHERE [condition];

SELECT column1,column2,...

FROM table_name WHERE [condition]

ORDER BY column ASC|DESC;

注:ASC升序,DESC降序

eg:

SELECT * FROM company; 

SELECT name,salary FROM company;

6)修改数据

UPDATE table_name

SET column1=value1,column2=value,..

WHERE [contiditon];

eg:将age在30到35的数据,salary加1000

UPDATE company SET salary=salary+1000

WHERE age>=30 and age<=35;

练习:

1)创建一个"menu.db"的数据库文件,

建立学生成绩表(student)

列的字段依次为 学号(ID),姓名(Name),年龄(age),成绩(Score)

要求,学号唯一不能为空,姓名和年龄也不能为空,

成绩可以为空。

2)插入以下数据

id name age score

.......

3)删除数据

4)修改

5)排序查询并显示

5 数据库备份和恢复

.output filename //将查询结果导出到指定文本

.backup filename.backup //备份当前数据库

.restore filename.backup //恢复当前的数据库

6 在QT中使用数据库:

QSqlDataBase:建立QT程序和数据的连接

//建立sqlite3与数据库连接

QSqlDatabase db =

QSqlDatabase::addDatabase("QSQLITE");

//设置数据文件名字

db.setDatabaseName("menu.db");

//打开数据库

bool ok = db.open();

db.setHostName("acidalia"); 数据库的主机名

db.setUserName("mojito"); 用户名

db.setPassword("J0a1m8"); 密码

QSqlQuery/QSqlQueryModel:执行SQL语句,遍历查询结果

执行sql语句:

QSqlQuery query;

QString str("sql语句")

query.exec(str);//执行sql语句

《案例》学生成绩管理系统

工程名:SqliteQt

类名:SqliteDialog

需求:

插入操作:获取用户输入“学号”“姓名”“成绩”,拼接插入的sql语句,使用QSqlQuery

删除操作:根据ID删除一条数据

修改操作:根据ID修改成绩

查询操作:每次执行sql语句,自动查询和显示

QSqlQueryModel model;

mode.setQuery("sql语句");

ui->tableView->setModel(&model)

排序查询:获取排序关键字(id/score)和排序条件(升序/降序),构造查询并排序的sql语句,执行

QSqlQueryModel model;

mode.setQuery("排序sql语句");

ui->tableView->setModel(&model);

每天的授课内容:

1. 学生成绩管理系统

2. 多窗口编程

3. QMainWindows串口

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐