sqlite3——基本命令语句与应用

简介: sqlite3——基本命令语句与应用

Linux下学习数据库


1 安装数据库软件(DBMS)


安装语句:SQLite3 sudo apt install sqlite3


SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统, 它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项 目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了 它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就 够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够 跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接 口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统 来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年 5月。 至2020年已经有20个年头,SQLite也迎来了一个版本 SQLite 3已经 发布。


2 SQLite3常用命令


sqlite3 xxx.db


.database


.exit


.help


.show


.schema tablename


3 SQLite3常用数据类型


NULL 值是一个NULL值


INTEGER 值是一个带符号的整数, 根据值的大小存储在1, 2, 3, 4, 6或8字 节中


REAL 值是一个浮点值, 存储为8字节的IEEE浮点数字


TEXT 值是一个文本字符串, 使用数据编码(UTF-8, YTF-16B或UTF-16LE) 存储


4 SQLite3的SQL语句


 创建数据库 sqlite3 testDB.db 
 创建表 create table tablename( column1 datatype, column2 datatype, column3 datatype); 
 删除表 drop table tablename; 
 添加数据到表 insert into tablename [(colnum1, colnum2, colnum3, colnum4.......)] values(value1, value2, value3, value4.......); insert into tablename values(value1, value2, value3, value4.......); 
 查询表数据 select * from tablename;
where表达式 select * from tablename where colnum1 = value1; 
更新表数据 update tablename set colnum1 = value1 where colnum2 = value2 
删除表数据 delete from tablename where colnum1 = value1; 
like表达式 select * from where colnum1 like '%_' 


5.案例


注意:


  1. gcc main.c之后要加上 -lsqlite3(-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名)


  1. 运行a.out时候后面要加上传入的数据库名称



/*************************************************************************
    > File Name: main.c
    > Author: 杨永利
    > Mail: 1795018360@qq.com 
    > Created Time: 2020年07月27日 星期一 22时13分59秒
 ************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlite3.h>
int main(int argc, char* argv[]){
    // 判断是否有两个参数,否则不知道打开哪个数据库
    if(argc != 2)
        exit(1);
    //设置一个数据库指针为空
    sqlite3 *db=NULL;
    // 设置错误信息提示指针
    char *errorstr;
    // 判断打开这个数据库是否成功
    if(sqlite3_open(argv[1],&db))
    {
        //如果失败就提示错误信息并关闭数据库推出程序
        printf("sqlite3_open() 函数打开数据库失败!\n");
        sqlite3_close(db); 
        exit(1);
    }
    else{
        //如果打开成功则提示该数据库下所有的表 
        printf("该数据库下所有的表:\n");
        // 数据库查询语句
        char sql[100] = "select * from sqlite_master;";
        //接收数据返回值的char**类型 
        char** buf; 
        //接收表的列数和行数
        int row,col;
        //从表中获取数据函数 sqlite3_get_table() 
        //第一个参数为数据库指针 
        //第二个参数为sql语句 
        //第三个参数用来接收查询语句的数据返回值 
        //第四个参数用来接收该数据有多少行 
        //第五个参数用来接收该数据有多少列 
        //第六个参数用来接收错误信息
        if(sqlite3_get_table(db, sql, &buf, &row, &col, &errorstr))
        {
            //如果函数调用失败则显示错误信息并关闭数据库退出程序 
            printf("sqlite3_get_table()函数获取表失败!\n"); 
            sqlite3_close(db); 
            exit(1);
        }
        // 开启for循环用于显示所有数据表
        int i=0;
        int now_col=0;                  //检索到的当前行
        for(i;i<(row+1)*col;i++)        //i<(row+1)*col 是
        {
            printf("%s",buf[i]);
            // 当前列不是倒数第一列就输出 |
            if(now_col!=col-1){
                printf("|");
            }
            // 如果是就输出换行,并且初始化为0
            if(now_col==col-1){
                now_col=0;
                printf("\n");
            }else  // 否则就 列数+1  换成下一列
                now_col++;
        }
    }
    // 如果执行到这一步就说明用户已经看到了数据表
    // 开启while循环让用户去查询每个表的数据
    while(1)
    {
        // 询问用户所要查询的表
        printf("\n请输入您想要查询的表......\n输入Q(q)来退出程序\n\n");
        // 定义一个char数组来接受表明
        char tablename[100];
        // 定义好查询语句
        char sql[100]="select *from ";
        // 获取用户输入的表面
        fgets(tablename,sizeof(tablename),stdin);
        // 判断是否退出程序
        if(!strcmp(tablename, "q\n") || !strcmp(tablename, "Q\n"))
            exit(1);
        strcat(sql,tablename);      // 拼接字符串
        //设置表名最后一个字符为零
        tablename[strlen(tablename)-1]='\0';
        // 接受数据的返回值 char**类型
        char **buf;
        //接收表的列数和行数 
        int row, col;
        if(sqlite3_get_table(db, sql, &buf, &row, &col, &errorstr)){
             //如果函数调用失败则显示错误信息并关闭数据库退出程序 
              printf("sqlite3_get_table()函数获取表失败!\n"); 
              sqlite3_close(db);
              exit(1);
        }
        //开启for循环显示该表的数据 
        int i = 0; 
        int now_col = 0;
        if(row*col==0)
        {
            printf("\n表%s中无数据\n",tablename);
            continue;
        }
        // 有数据就执行下面语句显示所有数据
        printf("\n表 %s 下所有的数据:\n", tablename);
        for(i = col; i < (row + 1) * col; i++){
            printf("%s", buf[i]); 
            if(now_col != col - 1) 
                printf("|");
            if(now_col == col - 1){ 
                now_col = 0; 
                printf("\n"); 
            }else
                now_col++;
        }
    }
    return 0;
}


相关文章
|
3月前
|
存储 关系型数据库 MySQL
SQLite的应用场景有哪些?
【8月更文挑战第21天】SQLite的应用场景有哪些?
221 3
|
4月前
|
SQL 存储 数据挖掘
深入了解SQLite3命令:小巧强大的数据库工具
SQLite3是轻量级数据库工具,适用于嵌入式设备和数据分析。它提供交互式shell,无需服务器,易于部署。常用命令如`.schema`显示表结构,`.mode`设置输出格式。示例包括创建数据库`mydatabase.db`,创建表`users`,插入数据并查询。注意动态类型系统、性能限制及SQL注入安全。适合轻量级数据存储和管理。
|
6月前
|
存储 关系型数据库 数据库
利用Python与SQLite构建轻量级数据库应用
在当今日益增长的数据处理需求下,数据库成为存储、检索和管理数据的关键技术。然而,对于小型项目或快速原型开发,大型数据库系统可能显得过于庞大和复杂。本文将介绍如何利用Python编程语言与SQLite轻量级数据库,快速搭建一个功能齐全、易于维护的数据库应用。我们将探讨SQLite数据库的特点、Python对SQLite的支持,并通过一个实际案例展示如何构建一个简单的数据库应用,为读者提供一种高效、灵活的解决方案。
|
6月前
|
关系型数据库 数据库 C++
嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++)
嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++)
|
6月前
|
SQL 关系型数据库 Shell
嵌入式数据库sqlite3基本命令操作基础(05)
嵌入式数据库sqlite3基本命令操作基础(05)
151 1
|
6月前
|
SQL Dart 数据库
Flutter笔记: 在Flutter应用中使用SQLite数据库
Flutter笔记: 在Flutter应用中使用SQLite数据库
974 0
|
6月前
|
SQL 关系型数据库 MySQL
mysql转sqlite3实战+部署sqlite3应用
mysql转sqlite3实战+部署sqlite3应用
461 0
|
数据库 Android开发 数据库管理
【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )
【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )
780 0
【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )
|
SQL 数据库 数据库管理
sqlite3——sqlite3应用相关函数
sqlite3——sqlite3应用相关函数
278 0
|
数据库 图形学 数据库管理
下一篇
无影云桌面