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;
}


相关文章
|
1月前
|
关系型数据库 数据库 C++
嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++)
嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++)
|
3月前
|
SQL 关系型数据库 Shell
嵌入式数据库sqlite3基本命令操作基础(05)
嵌入式数据库sqlite3基本命令操作基础(05)
114 1
|
SQL 存储 数据库
|
SQL 存储 数据库
sqlite3命令大全
来源:http://www.2cto.com/database/201411/350814.html 1. 查看sqllite的版本信息: 2 创建数据库 3 退出sqlite命令行的方式: sqlite&gt;.quit 或 sqlite&gt;.exit命令 4 列出当前显示格式的配置 5 显示数据库表结构
1638 0
|
Ubuntu Linux 数据库
Sqlite基本命令集合(linux/fedora/ubuntu)
注:fedora自带sqlite3,无需安装,直接输入命令sqlite3即可。 ————————————Ubuntu在命令行输入sqlite3,确认没有安装在进行--- 1、安装sqlite3 ubuntu下安装sqlite3直接在终端运行命令: #apt-get install sqlite3 查看版本信息: #sqlite3 -version ——————
1937 0
|
SQL 数据库 索引
sqlite3命令大全
1.      查看sqllite的版本信息: 2 创建数据库 3 退出sqlite命令行的方式: sqlite&gt;.quit  或   sqlite&gt;.exit命令 4 列出当前显示格式的配置 5 显示数据库表结构 6 向表中插入数据 7 设置导出目标   12 设置显示模式:  .mode  模式 有
1238 0
|
SQL 数据库 数据库管理
SQLite 命令(http://www.w3cschool.cc/sqlite/sqlite-commands.html)
SQLite 命令 本章将向您讲解 SQLite 编程人员所使用的简单却有用的命令。些命令被称为 SQLite 的点命令,这些命令的不同之处在于它们不以分号(;)结束。 让我们在命令提示符下键入一个简单的 sqlite3 命令,在 SQLite 命令提示符下,您可以使用各种 SQLite 命令。 $sqlite3 SQLite version 3.3.6 Enter "
1171 0