❶ 怎样在navicat for mysql 中的数据表中增添一列
传统情况
我们先回顾一下,在没有 "立刻加列" 功能时,加列操作是怎么完成的。我们也借此来熟悉一下本期的图例:
扩展思考题:是否能设计其他的数据格式,取代instant标志位和"列数"字段,使得 加列/删列 操作都能 "立刻完成" ?(提示:考虑 加列- 删列- 再加列 的情况)
使用限制
在了解原理之后,我们来看看"立刻加列"的使用限制,就很容易能理解其中的前两项:
"立刻加列"的加列位置只能在表的最后,而不能加在其他列之间
在元数据中,只记录了 数据行 应有多少列,而没有记录 这些列 应出现的位置。所以无法实现指定列的位置
"立刻加列"不能添加主键列
加列 不能涉及聚簇索引的变更,否则就变成了 "重建" 操作,不是 "立刻" 完成了
"立刻加列"不支持压缩的表格式
按照 WL 的说法:"COMPRESSED is no need to supported"(没必要支持不怎么用的格式)
总结回顾
我们总结一下上面的讨论:
"立刻加列" 之所以高效的原因是:
在执行 "立刻加列" 时,不变更数据行的结构
读取 "旧" 数据时,"伪造"新增的列,使结果正确
写入 "新" 数据时,使用了新的数据格式(增加了instant 标志位和 "列数" 字段),以区分新旧数据
读取 "新" 数据时,可以如实读取数据
"立刻加列"的 "伪造" 手法,不能一直维持下去。当发生与 "立刻加列" 操作不兼容的 DDL时,表数据就会发生重建
回到之前遗留的两个问题:
"立刻加列" 是如何工作的 ?
我们已经解答了这个问题
所谓 "立刻加列" 是否完全不影响业务,是否是真正的 "立刻" 完成 ?
可以看到:就算是 "立刻加列",也需要变更 数据字典,那么 该上的锁还是逃不掉的。也就是说 这里的 "立刻" 指的是 "不变更数据行的结构",而并非指 "零成本地完成任务"
❷ 数据库必备技能:Navicat如何使用Excel建表、导入数据
在处理新的项目任务时,我遇到了需要从保密的国企Excel文件导入数据的情况。了解到Navicat具备Excel建表导入功能,我决定分享一下这个实用技巧,帮助有需要的朋友们提高工作效率。
首先,打开Navicat,找到你想要操作的表,右键点击,选择"导入向导"选项:
你可以选择一次导入多个表格,通常情况下,系统会自动进行初步配置。但是,为了确保数据的准确性,尤其是Oracle数据库,你需要进一步调整。在"导入向导"中,确保为需要的列设置主键,因为系统识别的类型可能不准确,可能需要手动修改。
根据数据的具体需求,你可以选择是否创建新表或使用现有表,然后配置相应的表结构。切记,对于不正确的数据类型,可能需要清除数据才能进行修改。
导入过程完成后,就是这些基本步骤了。如果你在操作过程中遇到其他问题,我会及时更新更详细的指导。感谢你的关注,如果你觉得这篇文章有价值,请给予支持,我是老白,期待下次与你相见。