还未设置个性签名
成为VIP会员 享9项特权: 开通会员

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

面试官考点之索引是什么?

数据分析与开发 来源:数据分析与开发 作者:数据分析与开发 2021-03-05 10:37 次阅读

前言

有位朋友去阿里面试,他说面试官给了几条查询SQL,问:需要执行几次树搜索操作?我朋友当时是有点懵的,后来冷静思考,才发现就是考索引的几个基础知识点~~ 本文我们分九个索引知识点,一起来探讨一下

一、面试官考点之索引是什么?

索引是一种能提高数据库查询效率的数据结构。它可以比作一本字典的目录,可以帮你快速找到对应的记录。

索引一般存储在磁盘的文件中,它是占用物理空间的。

正所谓水能载舟,也能覆舟。适当的索引能提高查询效率,过多的索引会影响数据库表的插入和更新功能。

二、索引有哪些类型类型

数据结构维度

B+树索引:所有数据存储在叶子节点,复杂度为O(logn),适合范围查询。

哈希索引: 适合等值查询,检索效率高,一次到位。

全文索引:MyISAM和InnoDB中都支持使用全文索引,一般在文本类型char,text,varchar类型上创建。

R-Tree索引: 用来对GIS数据类型创建SPATIAL索引

物理存储维度

聚集索引:聚集索引就是以主键创建的索引,在叶子节点存储的是表中的数据。

非聚集索引:非聚集索引就是以非主键创建的索引,在叶子节点存储的是主键和索引列。

逻辑维度

主键索引:一种特殊的唯一索引,不允许有空值。

普通索引:MySQL中基本索引类型,允许空值和重复值。

联合索引:多个字段创建的索引,使用时遵循最左前缀原则。

唯一索引:索引列中的值必须是唯一的,但是允许为空值。

空间索引:MySQL5.7之后支持空间索引,在空间索引这方面遵循OpenGIS几何数据模型规则。

三、面试官考点之为什么选择B+树作为索引结构

可以从几个维度去看这个问题,查询是否够快,效率是否稳定,存储数据多少,以及查找磁盘次数等等。为什么不是哈希结构?为什么不是二叉树,为什么不是平衡二叉树,为什么不是B树,而偏偏是B+树呢?

我们写业务SQL查询时,大多数情况下,都是范围查询的,如一下SQL

select*fromemployeewhereagebetween18and28;

为什么不使用哈希结构?

我们知道哈希结构,类似k-v结构,也就是,key和value是一对一关系。它用于等值查询还可以,但是范围查询它是无能为力的哦。

为什么不使用二叉树呢?

先回忆下二叉树相关知识啦~ 所谓二叉树,特点如下:

每个结点最多两个子树,分别称为左子树和右子树。

左子节点的值小于当前节点的值,当前节点值小于右子节点值

顶端的节点称为跟节点,没有子节点的节点值称为叶子节点。

我们脑海中,很容易就浮现出这种二叉树结构图:

但是呢,有些特殊二叉树,它可能这样的哦:

如果二叉树特殊化为一个链表,相当于全表扫描。那么还要索引干嘛呀?因此,一般二叉树不适合作为索引结构。

为什么不使用平衡二叉树呢?

平衡二叉树特点:它也是一颗二叉查找树,任何节点的两个子树高度最大差为1。所以就不会出现特殊化一个链表的情况啦。

但是呢:

平衡二叉树插入或者更新是,需要左旋右旋维持平衡,维护代价大

如果数量多的话,树的高度会很高。因为数据是存在磁盘的,以它作为索引结构,每次从磁盘读取一个节点,操作IO的次数就多啦。

为什么不使用B树呢?

数据量大的话,平衡二叉树的高度会很高,会增加IO嘛。那为什么不选择同样数据量,高度更矮的B树呢?

B树相对于平衡二叉树,就可以存储更多的数据,高度更低。但是最后为甚选择B+树呢?因为B+树是B树的升级版:

B+树非叶子节点上是不存储数据的,仅存储键值,而B树节点中不仅存储键值,也会存储数据。innodb中页的默认大小是16KB,如果不存储数据,那么就会存储更多的键值,相应的树的阶数(节点的子节点树)就会更大,树就会更矮更胖,如此一来我们查找数据进行磁盘的IO次数有会再次减少,数据查询的效率也会更快。

B+树索引的所有数据均存储在叶子节点,而且数据是按照顺序排列的,链表连着的。那么B+树使得范围查找,排序查找,分组查找以及去重查找变得异常简单。

四、面试官考点之一次B+树索引搜索过程

面试官:假设有以下表结构,并且有这几条数据

CREATETABLE`employee`( `id`int(11)NOTNULL, `name`varchar(255)DEFAULTNULL, `age`int(11)DEFAULTNULL, `date`datetimeDEFAULTNULL, `sex`int(1)DEFAULTNULL, PRIMARYKEY(`id`), KEY`idx_age`(`age`)USINGBTREE )ENGINE=InnoDBDEFAULTCHARSET=utf8; insertintoemployeevalues(100,'小伦',43,'2021-01-20','0'); insertintoemployeevalues(200,'俊杰',48,'2021-01-21','0'); insertintoemployeevalues(300,'紫琪',36,'2020-01-21','1'); insertintoemployeevalues(400,'立红',32,'2020-01-21','0'); insertintoemployeevalues(500,'易迅',37,'2020-01-21','1'); insertintoemployeevalues(600,'小军',49,'2021-01-21','0'); insertintoemployeevalues(700,'小燕',28,'2021-01-21','1');

面试官:如果执行以下的查询SQL,需要执行几次的树搜索操作?可以画下对应的索引结构图~

select*fromTemployeewhereage=32;

解析:其实这个,面试官就是考察候选人是否熟悉B+树索引结构图。可以像酱紫回答~

先画出idx_age索引的索引结构图,大概如下:

77259210-7b71-11eb-8b86-12bb97331649.png

再画出id主键索引,我们先画出聚族索引结构图,如下:

775005d6-7b71-11eb-8b86-12bb97331649.png

因此,这条 SQL 查询语句执行大概流程就是酱紫:

搜索idx_age索引树,将磁盘块1加载到内存,由于32<37,搜索左路分支,到磁盘寻址磁盘块2。

将磁盘块2加载到内存中,在内存继续遍历,找到age=32的记录,取得id = 400.

拿到id=400后,回到id主键索引树。

搜索id主键索引树,将磁盘块1加载内存,在内存遍历,找到了400,但是B+树索引非叶子节点是不保存数据的。索引会继续搜索400的右分支,到磁盘寻址磁盘块3.

将磁盘块3加载内存,在内存遍历,找到id=400的记录,拿到R4这一行的数据,好的,大功告成。

因此,这个SQL查询,执行了几次树的搜索操作,是不是一步了然了呀。特别的,在idx_age二级索引树找到主键id后,回到id主键索引搜索的过程,就称为回表。

什么是回表?拿到主键再回到主键索引查询的过程,就叫做回表

五、面试官考点之覆盖索引

面试官:如果不用select *, 而是使用select id,age,以上的题目执行了几次树搜索操作呢?

解析:这个问题,主要考察候选人的覆盖索引知识点。回到idx_age索引树,你可以发现查询选项id和age都在叶子节点上了。因此,可以直接提供查询结果啦,根本就不需要再回表了~

覆盖索引:在查询的数据列里面,不需要回表去查,直接从索引列就能取到想要的结果。换句话说,你SQL用到的索引列数据,覆盖了查询结果的列,就算上覆盖索引了。

所以,相对于上个问题,就是省去了回表的树搜索操作。

六、面试官考点之索引失效

面试官:如果我现在给name字段加上普通索引,然后用个like模糊搜索,那会执行多少次查询呢?SQL如下:

select*fromemployeewherenamelike'%杰伦%';

解析:这里考察的知识点就是,like是否会导致不走索引,看先该SQL的explain执行计划吧。其实like 模糊搜索,会导致不走索引的,如下:

因此,这条SQL最后就全表扫描啦~日常开发中,这几种骚操作都可能会导致索引失效,如下:

查询条件包含or,可能导致索引失效

如何字段类型是字符串,where时一定用引号括起来,否则索引失效

like通配符可能导致索引失效。

联合索引,查询时的条件列不是联合索引中的第一个列,索引失效。

在索引列上使用mysql的内置函数,索引失效。

对索引列运算(如,+、-、*、/),索引失效。

索引字段上使用(!= 或者 < >,not in)时,可能会导致索引失效。

索引字段上使用is null, is not null,可能导致索引失效。

左连接查询或者右连接查询查询关联的字段编码格式不一样,可能导致索引失效。

mysql估计使用全表扫描要比使用索引快,则不使用索引。

七、面试官考点联合索引之最左前缀原则

面试官:如果我现在给name,age字段加上联合索引索引,以下SQL执行多少次树搜索呢?先画下索引树?

select*fromemployeewherenamelike'小%'orderbyagedesc;

解析:这里考察联合索引的最左前缀原则以及like是否中索引的知识点。组合索引树示意图大概如下:

联合索引项是先按姓名name从小到大排序,如果名字name相同,则按年龄age从小到大排序。面试官要求查所有名字第一个字是“小”的人,SQL的like '小%'是可以用上idx_name_age联合索引的。

该查询会沿着idx_name_age索引树,找到第一个字是小的索引值,因此依次找到小军、小伦、小燕、,分别拿到Id=600、100、700,然后回三次表,去找对应的记录。这里面的最左前缀小,就是字符串索引的最左M个字符。实际上,

这个最左前缀可以是联合索引的最左N个字段。比如组合索引(a,b,c)可以相当于建了(a),(a,b),(a,b,c)三个索引,大大提高了索引复用能力。

最左前缀也可以是字符串索引的最左M个字符。

八、面试官考点之索引下推

面试官:我们还是居于组合索引 idx_name_age,以下这个SQL执行几次树搜索呢?

select*fromemployeewherenamelike'小%'andage=28andsex='0';

解析:这里考察索引下推的知识点,如果是Mysql5.6之前,在idx_name_age索引树,找出所有名字第一个字是“小”的人,拿到它们的主键id,然后回表找出数据行,再去对比年龄和性别等其他字段。如图:

有些朋友可能觉得奇怪,(name,age)不是联合索引嘛?为什么选出包含“小”字后,不再顺便看下年龄age再回表呢,不是更高效嘛?所以呀,MySQL 5.6 就引入了索引下推优化,可以在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数。

因此,MySQL5.6版本之后,选出包含“小”字后,顺表过滤age=28,,所以就只需一次回表。

九、 面试官考点之大表添加索引

面试官:如果一张表数据量级是千万级别以上的,那么,给这张表添加索引,你需要怎么做呢?

解析:我们需要知道一点,给表添加索引的时候,是会对表加锁的。如果不谨慎操作,有可能出现生产事故的。可以参考以下方法:

1.先创建一张跟原表A数据结构相同的新表B。

2.在新表B添加需要加上的新索引。

3.把原表A数据导到新表B

4.rename新表B为原表的表名A,原表A换别的表名;

总结与练习

本文主要讲解了索引的9大关键知识点,希望对大家有帮助。接下来呢,给大家出一道,有关于我最近业务开发遇到的加索引SQL,看下大家是怎么回答的,题目如下:

select*fromAwheretype='1'andstatus='s'orderbycreate_timedesc;

假设type有9种类型,区分度性还算可以,status的区分度不高(有3种类型),那么你是如何加索引呢?

是给type加单索引

还是(type,status,create_time)联合索引

还是(type,create_time)联合索引呢?

责任编辑:lq

  • SQL
    SQL
    +关注

    关注

    1

    文章

    383

    浏览量

    41170
  • 二叉树
    +关注

    关注

    0

    文章

    51

    浏览量

    11286
  • 索引
    +关注

    关注

    0

    文章

    41

    浏览量

    9755
收藏 人收藏

    评论

    相关推荐

    什么是pergroups呢,它的作用是什么?

    PostgreSQL9.5版本引入了group by的分组集合功能,提供了GROUPING SETS....
    的头像 十亿少男的梦 发表于 08-11 15:43 169次 阅读
    什么是pergroups呢,它的作用是什么?

    嵌入式数据库扩展医疗设备的功能并提高安全性

      通过减少大量的软件开发工作,与没有数据库库的相同应用程序相比,使用真正的关系嵌入式数据库的医疗应....
    的头像 星星科技指导员 发表于 08-11 15:24 103次 阅读

    一些行之有效的,优化接口性能的办法

    而用户名称、性别、等级、头像在用户服务中,积分在积分服务中,成长值在成长值服务中。为了汇总这些数据统....
    的头像 city_prolove 发表于 08-08 11:11 88次 阅读

    Apache Impala Guide资料分享

    mpala直接对存储在HDFS、HBase或数据库中的Apache Hadoop数据提供快速、交互式....
    发表于 08-05 14:59 8次 阅读

    二叉树的统一迭代法

    我们以中序遍历为例,在二叉树:听说递归能做的,栈也能做!中提到说使用栈的话,无法同时解决访问节点(遍....
    发表于 08-03 11:22 55次 阅读

    SPL的实际应用效果如何呢?

    由于 SPL 采用了新的理论模型,在市面上根本没有其他产品可以借鉴,更不可能有现成的开源代码可以“借....
    的头像 程序员cxuan 发表于 08-01 15:12 86次 阅读

    浅谈SQLite最新的SQL功能

    SQLite 是一个被大家低估的数据库,但有些人认为它是一个不适合生产环境使用的玩具数据库。事实上,....
    的头像 Android编程精选 发表于 07-30 11:27 93次 阅读

    关于10个中级到高级SQL概念

    随着数据量持续增长,对合格数据专业人员的需求也会增长。具体而言,对SQL流利的专业人士的需求日益增长....
    发表于 07-29 15:02 51次 阅读

    二叉树的最大深度

    精简之后的代码根本看不出是哪种遍历方式,也看不出递归三部曲的步骤,所以如果对二叉树的操作还不熟练,尽....
    的头像 算法与数据结构 发表于 07-26 11:28 104次 阅读

    用迭代法编写二叉树的前后中序遍历案例

    递归的实现就是:每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中,然后递归返回的时....
    发表于 07-25 15:40 56次 阅读

    为什么可以用迭代法来实现二叉树的前后中序遍历呢

    我们在栈与队列:匹配问题都是栈的强项中提到了,递归的实现就是:每一次递归调用都会把函数的局部变量、参....
    的头像 算法与数据结构 发表于 07-19 11:50 336次 阅读

    怎么就能构造成二叉树呢?

    一直跟着公众号学算法的录友 应该知道,我在二叉树:构造二叉树登场!,已经讲过,只有 中序与后序 和 ....
    的头像 算法与数据结构 发表于 07-14 11:20 230次 阅读

    如何求递归算法的时间复杂度

    相信很多同学对递归算法的时间复杂度都很模糊,那么这篇Carl来给大家通透的讲一讲。
    的头像 算法与数据结构 发表于 07-13 11:33 254次 阅读

    索引主板REV03开源项目

    电子发烧友网站提供《索引主板REV03开源项目.zip》资料免费下载
    发表于 07-12 10:05 28次 阅读
    索引主板REV03开源项目

    基于二叉树的多层的液晶菜单界面设计

    以前用单片机做用户交互的菜单的时候,都比较痛苦,如何写一个复用性高,方便维护,可扩展性高的GUI框架....
    的头像 硬件攻城狮 发表于 07-08 14:27 295次 阅读

    高频系列:单词拆分问题

    现在给你一个不包含重复单词的单词列表wordDict和一个字符串s,请你判断是否可以从wordDic....
    的头像 算法与数据结构 发表于 07-07 09:25 121次 阅读

    Group By高级用法Groupings Sets语句的功能和底层实现

    SQL 中 Group By 语句大家都很熟悉,根据指定的规则对数据进行分组,常常和聚合函数一起使用....
    的头像 元闰子的邀请 发表于 07-04 10:26 204次 阅读

    SQL优化经历:从30248.271s到0.001s

    快了3w多倍,大大缩短了查询时间,看来索引能极大程度的提高查询效率,建索引很有必要,很多时候都忘记建....
    的头像 马哥Linux运维 发表于 06-29 10:32 152次 阅读

    pllua-ng为PostgreSQL数据库嵌入Lua

    ./oschina_soft/pllua-ng.zip
    发表于 06-24 10:59 97次 阅读
    pllua-ng为PostgreSQL数据库嵌入Lua

    SequoiaSQL分布式SQL存储引擎

    ./oschina_soft/sequoiasql-mysql.zip
    发表于 06-23 10:34 26次 阅读
    SequoiaSQL分布式SQL存储引擎

    Pg_Partman PostgreSQL的分区管理扩展插件

    ./oschina_soft/pg_partman.zip
    发表于 06-23 10:23 20次 阅读
    Pg_Partman PostgreSQL的分区管理扩展插件

    ZetaSQL SQL的分析框架

    ./oschina_soft/zetasql.zip
    发表于 06-22 10:27 23次 阅读
    ZetaSQL SQL的分析框架

    WalMiner PostgreSQL WAL日志解析工具

    ./oschina_soft/gitee-XLogMiner.zip
    发表于 06-21 14:20 34次 阅读
    WalMiner PostgreSQL WAL日志解析工具

    pg_lightool PostgresSQL数据坏块修复工具

    ./oschina_soft/gitee-pg_lightool.zip
    发表于 06-21 11:15 33次 阅读
    pg_lightool PostgresSQL数据坏块修复工具

    openLooKeng高性能数据虚拟化引擎

    ./oschina_soft/gitee-hetu-core.zip
    发表于 06-21 11:06 28次 阅读
    openLooKeng高性能数据虚拟化引擎

    MySQL用limit为什么会影响性能

    有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查....
    的头像 Linux爱好者 发表于 06-20 16:31 326次 阅读

    何时使用SQL,何时使用NoSQL

    一、何时使用 SQL? 在处理相关数据时,SQL 是一个不错的选择。关系数据库高效、灵活且易于被任何....
    的头像 深圳市恒讯科技有限公司 发表于 06-20 16:20 243次 阅读

    GreatSQL面向金融级应用的数据库

    ./oschina_soft/gitee-GreatSQL.zip
    发表于 06-17 15:00 30次 阅读
    GreatSQL面向金融级应用的数据库

    Apache AGE提供图数据库功能的PostgreSQL扩展

    ./oschina_soft/incubator-age.zip
    发表于 06-17 14:56 33次 阅读
    Apache AGE提供图数据库功能的PostgreSQL扩展

    pgmoneta PostgreSQL备份/恢复解决方案

    ./oschina_soft/pgmoneta.zip
    发表于 06-17 11:36 24次 阅读
    pgmoneta PostgreSQL备份/恢复解决方案

    QuestDB高性能时序数据库

    ./oschina_soft/questdb.zip
    发表于 06-17 11:04 31次 阅读
    QuestDB高性能时序数据库

    ZNbase NewSQL分布式数据库

    ./oschina_soft/gitee-zn-kvs.zip
    发表于 06-17 10:09 30次 阅读
    ZNbase NewSQL分布式数据库

    pglogical PostgreSQL扩展组件

    ./oschina_soft/pglogical.zip
    发表于 06-17 09:33 30次 阅读
    pglogical PostgreSQL扩展组件

    PL/R可加载过程语言

    ./oschina_soft/plr.zip
    发表于 06-17 09:20 45次 阅读
    PL/R可加载过程语言

    SQL:数据库的规范与介绍

    数据库的规范与介绍
    发表于 06-16 14:12 26次 阅读

    SQL/JAVA/mybatisplus数据脱敏实现原理

    MYSQL(电话号码,身份证)数据脱敏的实现
    的头像 Android编程精选 发表于 06-14 17:09 726次 阅读

    OPCUA转数据库-通过智能网关读取OPCUA标签,数据转存到数据库

            本文是通过智能网关模块连接OPCUA服务端,读取服务端的标签数值,将数据转存到MyS...
    发表于 06-14 14:42 9881次 阅读

    dbVisitor全功能数据库访问工具

    ./oschina_soft/gitee-dbvisitor.zip
    发表于 06-14 09:40 35次 阅读
    dbVisitor全功能数据库访问工具

    Mybatis-Plus Mybatis增强工具包

    ./oschina_soft/gitee-mybatis-plus.zip
    发表于 06-13 11:34 37次 阅读
    Mybatis-Plus Mybatis增强工具包

    HStreamDB EMQ流数据库

    ./oschina_soft/hstream.zip
    发表于 06-13 11:17 25次 阅读
    HStreamDB EMQ流数据库

    sqlstream将SQL复制事件流传输到Apache Kafka

    ./oschina_soft/sqlstream.zip
    发表于 06-13 09:30 20次 阅读
    sqlstream将SQL复制事件流传输到Apache Kafka

    TCODE论坛社区

    ./oschina_soft/gitee-tcode.zip
    发表于 06-10 10:16 38次 阅读
    TCODE论坛社区

    Icarus基于Python3.6和Vue.js的社区系统

    ./oschina_soft/Icarus.zip
    发表于 06-10 10:06 31次 阅读
    Icarus基于Python3.6和Vue.js的社区系统

    利用JAVA向Mysql插入一亿数量级数据—效率测评

    所以通过随机生成人的姓名、年龄、性别、电话、email、地址 ,向mysql数据库大量插入数据,便于....
    的头像 Android编程精选 发表于 05-24 11:13 1919次 阅读

    ObjectiveSQL IntelliJ IDEA Plugin是对ObjectiveSQL框架在IDEA开发必备工具

    ./oschina_soft/ob<x>jectiveSql-IntelliJ-Plugin.zip
    发表于 05-18 14:20 37次 阅读
    ObjectiveSQL IntelliJ IDEA Plugin是对ObjectiveSQL框架在IDEA开发必备工具

    SQL优化经历:从30248.271s到0.001s

    正常情况下是先join再进行where过滤,但是我们这里的情况,如果先join,将会有70w条数据发....
    的头像 数据分析与开发 发表于 05-16 15:25 415次 阅读

    Kubegres部署和维护PostgreSQL集群的Kubernetes Operator

    ./oschina_soft/kubegres.zip
    发表于 05-16 10:17 21次 阅读
    Kubegres部署和维护PostgreSQL集群的Kubernetes Operator

    Siddhi云原生流处理器

    ./oschina_soft/siddhi.zip
    发表于 05-16 10:10 55次 阅读
    Siddhi云原生流处理器

    SQL优化的一般步骤与案例分析

    在应用开发的早期,数据量少,开发人员开发功能时更重视功能上的实现,随着生产数据的增长,很多 SQL ....
    的头像 数据分析与开发 发表于 05-13 14:56 278次 阅读

    MatrixOne云端原生大数据引擎

    ./oschina_soft/matrixone.zip
    发表于 05-13 09:38 84次 阅读
    MatrixOne云端原生大数据引擎

    数据库单表行数最大多大?

    因为record们被分成好多份,放到好多页里了,为了唯一标识具体是哪一页,那就需要引入页号(其实是一....
    的头像 数据分析与开发 发表于 05-12 10:18 567次 阅读

    for循环耗时太长,请大佬帮忙

    两个数据库A、B都有产品序列号关联起来,我想检索并显示数据库A中有记录,而在数据库B中没有记录的信息。目前的程序也可以...
    发表于 04-29 16:21 11605次 阅读

    嵌入式SQL语句与主语言之间的通信

    嵌入式SQL                        嵌入...
    发表于 12-22 07:44 1199次 阅读

    SQL编程技术的特点有哪些

    SQL编程技术可以有效的克服SQL语言实现复杂应用方面的不足,提高应用系统和数据管理系统间的互操作性。SQL的特点之一是...
    发表于 12-22 07:04 1069次 阅读

    求一种突破sql功能局限的方案

    sql功能虽然强大,但是还是有很多的要求无法达到例如:突破sql局限的方案:1、利用高级语言的表达能力:嵌入式sql2、扩展sql语言...
    发表于 12-22 06:13 1098次 阅读

    嵌入式SQL语言概述

    嵌入式SQL概述嵌入式SQL语言将SQL语言嵌入到某一种高级语言中使用这种高级语言,如C/C++, Java, PowerBuilder等,...
    发表于 12-21 06:55 922次 阅读

    如何去使用嵌入式SQL呢

    文章目录 第十二章 使用嵌入式SQL(四)SQL游标`DECLARE`游标声明OPEN游标声明`FETCH`游标声明CLOSE...
    发表于 12-15 09:01 297次 阅读

    嵌入式SQL程序是由什么组成的

    概念一个嵌入式SQL程序由一种普通编程语言编写的代码(这里是C)和位于特殊标记小节中的SQL命令混合组成。要构建该程序,...
    发表于 12-15 07:26 657次 阅读

    C语言中使用嵌入式SQL访问Oracle数据库的方法

    使用C语言开发Oracle应用程序通常有两种方法。一是利用嵌入式SQL语言,将SQL作为子语言嵌入到C语言中,借助C语言访问O...
    发表于 12-15 06:35 648次 阅读

    使用SQL语句操作数据库

    第一步:Linux开发环境搭建第二步:安装sqlite数据库第三步:sqlite数据库使用1.sqlite部分命令2.使用SQL语句操作数据库(1)...
    发表于 11-04 06:23 676次 阅读