创建数据库创建表的工具有很多,看起来似乎很不一样,但其实里面的知识是通用的,理解了数据库相关的知识和相应操作,就算换个工具,也最多是趁不趁手的问题,所以,如果你是准备自学数据库的话,下面的这些基础知识多多少少总会对你有帮助的。
数据库的作用:
数据库其实在更多时候起的是一个索引的作用,类似于一本书籍里的目录部分,数据库一般不用于储存具体的数据,而更多的是用于储存那些数据相应的路径名,因为数据库储存的数据过多、内存过大的话,容易引发一些问题,具体是什么问题我还不是很清楚
不同的数据库扩展名不同:
1、SQL的就是MDF 。
2、Access数据库的扩展名是.mdb 。
3、MSSql数据库的扩展名是.mdf 。
4、Paradox数据库的扩展名是.DB 。
5、Oracle数据库的扩展名是.DBF。
6、dBase数据库的扩展名是.DBF 。
7、FoxPro数据库的扩展名是.DBF 。
8、MS Works数据库的扩展名是.wdb。
这里涉及到很多东西,在博客里很多大佬都有演示数据库的操作,但是他们弄的数据库文件有些其实是不一样的,推荐的很多工具也不一样,自学没人教又不会的话这些东西不知道的怕不是能把人直接送走(没错,说的就是之前的我)。
例如:
Microsoft SQL Server Management studio是创建SQL数据库用的,创建后的数据库后缀名为.mdf
用这个的话还需要用ODBC创建数据源,然后,嗯…这两个在加上你写代码用的工具就够了(比如QT create、vs什么的,在这些写代码的工具里面是不用进行配置属性等方面的更改的,只需要写代码进行相应的操作,至少在QT里面是这样,其他的我还没试过),可以算是一套。(这个是我用的,但这个似乎用的人比较少,听说是因为操作相对复杂,不是很方便,但这个工具相对比较有趣的一点在于它创建的表除了其他工具都有的数据类型,还有一个image类型,可以直接将图片转化为二进制存入数据库,再将数据库里储存的二进制数据读取出来转换为图片,这里需要提示一下,这个数据类型或许会让你觉得有点好玩,但这里我们需要明白一点,数据库其实在更多时候起的是一个索引的作用,类似于一本书籍里的目录部分,数据库一般不用于储存具体的数据,而更多的是用于储存那些数据相应的路径名,因为数据库储存的数据过多、内存过大的话,容易引发一些问题,具体是什么问题我还不是很清楚)
DB Browser for SQLite是创建Paradox数据库用的,创建后的数据库后缀名为.db,用这个的话大概也是需要用ODBC创建数据源的,然后,嗯…这两个在加上你写代码用的工具就够了,也可以算是一套。(本括号内为废话,可跳过:这个我没有完全用,只用了一点点,纯粹是当初不清楚数据库怎么搞,然后用网上碎碎的各种知识拼凑后因为搞不懂而混用掉进坑里——因为网上有资料说DB Browser for SQLite是打开数据库文件浏览创建表的工具,然后我当时用Microsoft SQL Server Management studio创建了数据库,用ODBC创建了数据源连接数据库,又用代码在这个数据库里创建了表格,然后因为不知道怎么用Microsoft SQL Server Management studio查看数据库里创建的表,就照着网上的讲的下了DB Browser for SQLite,试图用它去查看,然后用DB Browser for SQLite理所应当的没找到我之前数据库文件把我吓得半死然后在坑里躺了好久,当然现在觉得挺傻的,不过之前确实不是很清楚数据库就开始乱搞)
Navicat Premium 15 也是一个用于创建数据库数据表的工具,相对来说适用范围更广,使用者也更多,是当前的主流,如果刚开始自学数据库的话,比较推荐这个,虽然我目前还没用过,但看别人用过,确实相对来说会比其他的好很多。
关于如何在创建数据库的工具里手动创建表:
然后网上说的那些打开数据库里新建的表什么的,不同的数据库文件需要的工具是不一样的,
比如
以.mdf后缀名的数据库文件,它是以Microsoft SQL Server Management studio工具创建的,然后要打开这个数据库文件里创建的表的话也能用这个工具打开进行浏览什么的(如下图);
而以.db为后缀名的数据库文件的是用DB Browser for SQLite 工具创建的,然后要打开这个数据库文件里创建的表的话也能用这个工具打开进行浏览什么的(如下图)。
关于一些创建数据库工具的下载地址(建议自己找):
DB Browser for SQLite下载地址(当然你们也可以自己找):
https://sqlitebrowser.org/dl/
ODBC工具是电脑自带的(一般来说),自己在电脑里搜索找一下就行,不用另外下载
关于数据源与数据库连接的具体操作(如果你想在你的程序里进行数据库的相应操作,这一步是必不可少):
进行这一步的前置工作是——你已经完成了数据库的创建。
首先,打开创建数据库的工具,点开左边对象资源管理器里的数据库,右键单击,点击新建数据库。
给数据库取个名字
然后数据库就算建好了。
接下来要打开ODBC数据源连接刚才你新建的数据库
第一步,打开ODBC数据源,在用户DSN这一栏里,点击添加
然后选择你创建数据库的那个工具,我这里用的是SQL Server,所以选他,选中后点击完成。
然后填写相应信息,前两个你想写啥都行,最后一个服务器名,在你创建数据库那里可以看到,比如我这里的 LAPTOP-NV6N3MMM 就是服务器名,把它填上。
选择用用户登录输入ID和密码,登录ID和密码我设置的跟打开数据库的一样,弄完下一页
把更改默认数据库勾起来,然后选择自己刚才新建的数据库,弄完下一页
这一页对于我这种初学者来说就没有操作的必要了,直接点完成
然后点击测试数据源,点击后显示测试成功就完成了。
现在我们有了数据库和数据源,还差最后一步你们就可以自己的骚操作了。
在写代码的软件里,
pro文件里需要添加
QT += sql
share_variate.h文件
extern QSqlDatabase db; extern bool isOk; extern bool isOpenDatabase;
share_variate.cpp文件
#include"share_variate.h"
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");;
bool isOk=0;
bool isOpenDatabase=0;
attandance_management_dabase.h文件
#ifndef ATTENDANCE_MANAGEMENT_DATABASE_H #define ATTENDANCE_MANAGEMENT_DATABASE_H bool OpenDatabase(); #endif // ATTENDANCE_MANAGEMENT_DATABASE_H
attandance_management_dabase.cpp文件
#include"attendance_management_database.h" #include#include #include #include #include #include"share_variate.h" //attendance_management_odbc_user //attendance_management_odbc_t1.db bool OpenDatabase() { //需要创建的是用户DSN,不能创建系统DSN和文件DSN,创建了后面那两个没用(也可能是我不会用,很大可能) //QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); //这个我是在 share_variate.h里声明,share_variate.cpp里定义的 db = QSqlDatabase::addDatabase("QODBC"); qDebug()<<"ODBC driver?"< 最后就是放到你的cpp文件里进行调用
//创建数据库 OpenDatabase();这只是我的方法,大概给大家看一下怎么弄而已,不必全照着我的来。
完成这一步之后,玩转数据库自然少不了脚本语句。
关于脚本(除了列名和准备填充的内容,其他部分大小写应该不用太过在意,至少在sql server里是这样):
刚开始接触数据库的自学者,大概在网上看到下面这些东西会感到疑惑,毕竟大多数博主都会默认你明白而不会在这方面做详细的讲解介绍(可能是代码类专业的在学校时这些老师都会在课上讲到,我并不清楚,纯属猜测)INSERT INTO Notification_information (Notification_title, Notification_content,date,time)VALUES ('阿发阿女第四个是','安放的故事','2022-01-05','18:33:43')INSERT INTO 就是插入的意思
Notification_information 指的是我创建的一个表的名字
(Notification_title, Notification_content,date,time) 括号里的是我那个表里面的每个列名,附图如下
VALUES (‘阿发阿女第四个是’,‘安放的故事’,‘2022-01-05’,‘18:33:43’) 则是准备赋给表格里的内容,其对应相应的列的名称及数据类型其实这些就是脚本,你可以在写代码用的软件里,用代码去执行它,也可以在创建数据库的工具里执行,脚本的其中一个作用就与这个有关,有时候你在代码里运行时,程序没有报错也没有中断,但数据却没能导入数据库,这时你就应该将你的脚本弄出来进行检查(因为大概率是脚本格式不对,如果你是用多个QString或者多个string之类的相加组成相应脚本的话),比如:
notification_textedit_content_qstr=ui->textEdit->toPlainText(); title_send_lineEdit_qstr=ui->title_write_lineEdit->text(); //获取当前时间 QTime notification_time=QTime::currentTime(); //qDebug()<<"时间time:"<



