Linux学习-数据库

news2025/3/16 19:10:41

数据库软件:
    关系型数据库:
        Mysql   
        Oracle
        SqlServer
        Sqlite  
    非关系型数据库:
        Redis
        NoSQL


1.数组、链表、文件、数据库
    数组、链表: 内存存放数据的方式(代码运行结束、关机数据丢失)
    文件、数据库: 外存存放数据的方式(代码运行结束、关机数据不会丢失)

    文件:数据量很小         处理效率很低
    数据库:数据量很大       处理数据(增删改查)效率高

2.安装sqlite数据库:
    1.让虚拟机能够上网
    2.apt-get工具集配置好
    3.sudo apt-get install sqlite3 
    4.启动sqlite3 
        sqlite3 
    5.输入.quit退出

3.SQL命令:
    1.  .headers on/off 打开/关闭 数据库中列名称
    2. .mode csv/column/html/insert/line/list/tabs/tcl  设置输出模式
    3. .schema 表名称   查看表名称对应的表的格式(有哪几列?每一列类型?)
    4. .width 宽度      设置显示时的数据宽度 
    5..tables          查看数据库文件中的所有表

只能对数据库进行管理

4.SQL语言:
    数据的:增、删、改、查

    1.使用sqlite3打开数据库文件 
      sqlite3 数据库文件名
      sqlite3 ./student.db 


    2.创建表 
      create table 
        drop table 删除表     
      示例:
        sqlite> create table student (id integer primary key asc, name varchar(255), sex varchar(32), age integer, score integer);

    3.插入数据
      insert into 

      示例:
        sqlite> insert into student values (1001, "张三", "男", 19, 80);
        sqlite> insert into student (id, name, score) values (1002, "李四", 100);
        sqlite> insert into student values (1002, "王二", "女", 18, NULL);

    4.查找数据
      select 

      示例:
        sqlite> select * from student;
        sqlite> select name, score from student;

    5.内容匹配
      where 

      示例:

         sqlite> select * from student where name like "张%";

找所有的张某
        sqlite> select * from student where name = "张伟";

张张伟

         sqlite> select * from student where score>=80 and sex = "男";

找符合条件成绩大于80,是男的的人

练习:数据库完成对订单的管理:
    1.创建一张订单表,由 ID, 订单号, 货物信息, 生产厂商, 联系人, 联系电话, 订单时间
                      1    D202403120001
    2.在表中插入随机给定的10条数据
    3.查找 联系人为 "张三" 的所有订单号
      select ordername from order_manager where contactperson="张三";

      查找 订单号为 "D202403120001" 的所有订单信息
      select * from order_manager where ordername="D202403120001";

      查找 订单时间截止到当天的所有订单号及联系人、联系电话
      select ordername,contactperson,contactphone from order_manager where ordertime < "20240310 24:00:00";

      查找 货物信息包含 "手机" 内容的所有订单信息及货物信息
      select ordername,orderinfo from order_manager where orderinfo like "%手机%";

      查找 生产厂商是"华为" 的所有货物信息包含 "平板" 的订单信息  
      select * from order_manager where factoryname="华为" and orderinfo like "%平板%";

    6.主键:
        key:键值 
        内键:在表中唯一标识一条数据称为内键 把id设置为键值,南无id就不可以重复了


        外键:与外部表进行标识的数据称为外键 

sqlite> create table student (id integer primary key asc, name varchar(255), sex varchar(32), age integer, score integer);

    7.删除
        delete from 

        示例:
            delete from student where name="李四";

    8.修改
        update 

        示例:
            update student set sex="男",age=19 where name="王二";

    9.排序
        order by 

        示例:
            select * from order_manager order by ordertime desc;降序,

多表联合查询:
    1.交叉连接
        cross join 

        示例:
        sqlite> select student.name as 学生姓名, lesson.name as 课程名
        ...> from student cross join lesson;
    2.内连接
        inner join 

        示例:
        sqlite> select score.id as 成绩编号, student.name as 学生姓名, score.score as 成绩
        ...> from score inner join student on score.stuid=student.id;
    3.外连接
        outer join 

        示例:
        sqlite> select score.id as 成绩编号, student.name as 学生姓名, score.score as 成绩
        ...> from student left outer join score on score.stuid=student.id;


    示例:
        sqlite> select score.id as 成绩编号, student.name as 学生姓名, score.score as 成绩
        ...> from student left outer join score on score.stuid=student.id
        ...> where name="张三"
        ...> order by 成绩 desc;

1.sqlite3_open
    int sqlite3_open(
        const char *filename,   /* Database filename (UTF-8) */
        sqlite3 **ppDb          /* OUT: SQLite db handle */
    );
    功能:
        打开数据库文件(创建一个数据库连接)
    参数:
        filename:数据库文件路径 
        ppDb:操作数据库指针存放空间的首地址
    返回值:
        成功返回SQLITE_OK
        失败返回错误码

2.sqlite3_close 
    int sqlite3_close(sqlite3*);
    功能:
        关闭数据库连接

3.sqlite3_exec   
    int sqlite3_exec(
        sqlite3*,                                  /* An open database */
        const char *sql,                            /* SQL to be evaluated */
        int (*callback)(void*,int,char**,char**),  /* Callback function */回调函数只有找到该数据的时候才会调用,每次找到一个符合条件的数据,就会他调用一次
        void *,                                    /* 1st argument to callback */
        char **errmsg                              /* Error msg written here */
    );


    功能:
        执行一条SQL语句
    参数:
        sqlite3*: 数据库句柄
        sql: 要执行的SQL语句字符串首地址
        callback: 只有在select时才会使用,其余调用时传递NULL
        void*: 给回调函数的传参
        errmsg:出错信息存放空间首地址(使用完毕后使用sqlite3_free释放空间)
    返回值: 
        成功返回SQLITE_OK
        失败返回错误码 

练习:
    实现将dict.txt文件中的所有单词和含义插入到数据库中

5.调试段错误:
    1.根据给定链接设置系统允许生成core文件
    2.编译代码时加入-g选项
        gcc filename.c -g -lsqlite3 
    3.执行代码让代码产生段错误(会生成一个包含错误信息的core文件)
    4.使用gdb调试core文件
        gdb a.out core 
    5.可以直接看到产生段错误的代码的位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1598218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文掌握 React 开发中的 JavaScript 基础知识

前端开发中JavaScript是基石。在 React 开发中掌握掌握基础的 JavaScript 方法将有助于编写出更加高效、可维护的 React 应用程序。 在 React 开发中使用 ES6 语法可以带来更简洁、可读性更强、功能更丰富,以及更好性能和社区支持等诸多好处。这有助于提高开发效率,并构建出更…

MongoDB 索引全攻略

目录 一、索引介绍 1.1 单字段索引 1.2 复合索引 1.3 多键索引 1.4 主键索引 1.5 TTL 索引 1.6 地理空间索引 1.7 哈希索引 1.8 创建索引时注意事项 1.9 索引效果查看 二、索引实现原理 2.1 为什么使用 B-Tree 三、执行计划 一、索引介绍 任何数据库都有索引这一核心功能&…

Centos7.6部署minikube

1、什么是minikube ? Minikube是由Kubernetes社区维护的单机版的Kubernetes集群&#xff0c;支持macOS, Linux, and Windows等多种操作系统平台&#xff0c;使用最新的官方stable版本&#xff0c;并支持Kubernetes的大部分功能&#xff0c;从基础的容器编排管理&#xff0c;到…

基于AutoCAD的WMTS服务加载方法与应用研究

"针对在AutoCAD中加载地图存在数据定位操作复杂、数据渲染效率低、无法接入第三方地理信息服务的问题&#xff0c;提出了在AutoCAD中加载OGC标准的网络地图分块服务方法。基于ObjectARX二次开发插件&#xff0c;实现在AutoCAD中加载WMTS服务&#xff0c;兼容了第三方地理信…

基于Springboot的旅游管理系统

基于SpringbootVue的旅游管理系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页展示 旅游方案展示 旅游资讯 后台管理员登录 后台管理页面首页 用户管理 …

【自动驾驶】贝叶斯算法在机器学习中的应用研究

目录 第一章&#xff1a;引言 1.1 贝叶斯算法在机器学习中的重要性 1.2 研究背景 1.3 研究目的 1.4 论文结构 第二章&#xff1a;贝叶斯算法概述 2.1 贝叶斯定理 2.2 贝叶斯算法分类 第三章&#xff1a;贝叶斯算法在机器学习中的应用 3.1 贝叶斯分类器 3.2 贝叶斯回…

SpringSecurity源码分析3--UserDetail部分

UserDetailsService.class DaoAuthenticationProvider.class AbstractUserDetailsAuthenticationProvider.class 一个允许子类重写和处理UserDetails对象的基AuthenticationProvider。该类旨在响应UsernamePasswordAuthenticationToken身份验证请求。 AuthenticationProvider…

Gartner 《2024安全和风险管理技术路线图》:高价值技术 DSP 进入广泛部署阶段

近期&#xff0c;Gartner 发布《2024年技术采用路线图&#xff1a;安全与风险管理》&#xff08;以下简称&#xff1a;《路线图》&#xff09;&#xff0c;该信息图表识别了全球企业正在采用的 44 种与安全相关的技术&#xff0c;并根据采用阶段、部署风险和企业价值进行了映射…

python中的列表、元组、字典、集合(字典篇)

数据类型定义符号访问元素是否可变是否重复是否有序列表 [ ]索引可变可重复有序元组&#xff08;&#xff09;索引不可变可重复有序字典{key&#xff1a;value}键可变可重复无序集合{ }可变不可重复无序 字典概念 在python语言中&#xff0c;字典属于内置容器类&#xff0c;其…

什么是云安全

云安全和网络安全有所不同&#xff0c;因为云安全一词 比网络安全更涵盖整个企业基础设施。一般来说&#xff0c;当人们提到云安全时&#xff0c;指的是第三方服务提供商提供的 IaaS 云环境。在这种情况下&#xff0c;云安全不仅包括网络安全工具&#xff0c;还包括服务器、容器…

C#基础|数据类型、变量

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 01 数据类型 数据类型是为了方便存储数据的&#xff0c;为了将数据按照不同的分类存储&#xff0c;所以引入数据类型。这个在PLC中已经很熟悉了。 数据类型的作用&#xff1a;就是为了更好地管理内存&#xff0c;为…

[C++][算法基础]求最小生成树(Prim)

给定一个 n 个点 m 条边的无向图&#xff0c;图中可能存在重边和自环&#xff0c;边权可能为负数。 求最小生成树的树边权重之和&#xff0c;如果最小生成树不存在则输出 impossible。 给定一张边带权的无向图 G(V,E)&#xff0c;其中 V 表示图中点的集合&#xff0c;E 表示图…

【深度学习】AI修图——DragGAN原理解析

1、前言 上一篇&#xff0c;我们讲述了StyleGAN2。这一篇&#xff0c;我们就来讲一个把StyleGAN2作为基底架构的DragGAN。DragGAN的作用主要是对图片进行编辑&#xff0c;说厉害点&#xff0c;可能和AI修图差不多。这篇论文比较新&#xff0c;发表自2023年 原论文&#xff1a…

拼多多容器文件修改自动上传

拼多多开放平台php环境是官方的linux容器&#xff0c;不能自己搭建ftp上传文件&#xff0c;每每有文件更新都挺麻烦。 有些功能测试不想每次都打包全部代码上去重新发布一次程序生成新的容器&#xff0c;那样太过麻烦和效率低。 一开始搞了一个php的文件管理工具上去&#xf…

高效解决Visual Studio Code中文乱码问题

文章目录 问题解决步骤 问题 Visual Studio Code新建一个文件编码方式总是默认GBK&#xff0c;如果我不修改成默认UTF-8&#xff0c;那么每次运行&#xff0c;如果有中文需要输出就会乱码&#xff01; 解决步骤 之后我会持续更新&#xff0c;如果喜欢我的文章&#xff0c;请记…

Apache DolphinScheduler 社区 3 月月报

各位热爱 DolphinScheduler 的小伙伴们&#xff0c;DolphinScheduler 社区月报开始更新啦&#xff01;这里将记录 DolphinScheduler 社区每月的重要更新。 社区为 DolphinScheduler 3.2.x 版本做了诸多功能改进和 bug 修复 DolphinScheduler 月度 Merge Stars 感谢以下小伙伴 …

腾讯云轻量应用服务器端口怎么打开?

腾讯云轻量应用服务器端口怎么打开&#xff1f;在轻量应用服务器控制台的防火墙中开启端口&#xff0c;本文腾讯云百科txybk.com以80端口为例&#xff0c;来详细说下轻量应用服务器端口打开教程&#xff0c;另外可以在腾讯云百科 txy.wiki 查看当前轻量服务器最新的优惠券和配置…

LSTM 循环神经网络原理深度解读与网络结构精细剖析

长短期记忆网络&#xff08;Long Short-Term Memory, LSTM&#xff09;是一种特殊的循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;&#xff0c;设计用于解决长期依赖问题&#xff0c;特别是在处理时间序列数据时。 循环神经网络&#xff08;RNN&#xf…

jenkins(docker)安装及应用

jenkins Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具&#xff0c;起源于Hudson&#xff08;Hudson是商用的&#xff09;&#xff0c;主要用于持续、自动的构建/测试软件项目、监控外部任务的运行&#xff08;这个比较抽象&#xff0c;暂且写上&#xff0c;不做解…

【InternLM】LMDeploy部署实践

1. LMDeploy基本介绍 LMDeploy提供一站式的大模型压缩、部署和服务&#xff0c;其主要特点包括&#xff1a; 高效的推理速度。通过引入持久批处理(即连续批处理)、阻塞 KV 缓存、动态拆分与融合、张量并行、高性能 CUDA 内核等关键特性&#xff0c;提供了比 vLLM 高1.8倍的请…