当前位置: 首页 > news >正文

什么int类型里面能插入文字,还不能改字段类型--SQLite 五脏俱全系列 (2)

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共3400人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6 7 8群已经爆满 9群 300+,开10群PolarDB专业学习群110+ 针对 SQLite 我们将建立一个新的群sqlite的群,如果需要请加群的时候单独告知)

去年SQLlite的几个文章爆火,我都没有想到几万的阅读量。今年我们也新开一个系列叫SQLite知多少,我们继续深入到SQLite的使用问题的探究中.

SQLite需要初始化参数,怎么调优-- SQLite 五脏俱全系列 (1)

SQLite 开发中的数据库开发规范 --如何提升业务系统性能避免基础BUG

基于SQLite如何设计应用程序,拆散,散,还的散!

SQLite3 打败了 PostgreSQL 终究还是没能挽回--世界最大装机量是真的

果不其然,SQLite的研究引来一堆人的关注,上一篇爆了

我们此次选择的版本是3.45.3,这个版本在适应的系统的广泛性都要比新的版本要好,并且一些我们需要的核心技术的更新也都做了,BUG的FIX也做了。所以这个版本将作为我们的研究和使用的核心版本。

上期我们回顾了SQLite的一些关键信息,本期我们开始从语法开始,这些语法是针对开发人员,这里有一个小问题,就是对应版本的安装问题,这里我们使用的是编译的方式,通过下载源代码的方式来进行安装

https://sqlite.org/src/info/6b21cccdeec92db9,下载源代码后,直接进行./configure make make install 的方式即可

今天我们先建立一张自增的表并围绕这个表来进行日常语句语法的学习

sqlite> CREATE TABLE test (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT); sqlite> INSERT INTO test (name) VALUES ('张三'); sqlite> INSERT INTO test (name) VALUES ('李四'); sqlite> select * from test; 1|张三 2|李四 sqlite>

重命名表

ALTER TABLE members RENAME TO users;,将表名从 members 改为 users

重命名列

ALTER TABLE users RENAME COLUMN name TO full_name;,将 name 字段改为 full_name

添加新列

ALTER TABLE users ADD COLUMN email TEXT;,末尾追加 email 字段

删除列

ALTER TABLE users DROP COLUMN age;,删除 age 字段 (需 SQLite 3.35.0+)

下面我们做一个复杂的带外键的情况下,禁用外键的标创建修改数据插入的语法

-- 1. 禁用外键检查 PRAGMA foreign_keys=OFF;

-- 2. 开启事务 BEGIN TRANSACTION;

-- 3. 创建具有目标结构的新表 CREATE TABLE users_new ( user_id INTEGER PRIMARY KEY AUTOINCREMENT, -- 修改了主键逻辑 full_name TEXT, email TEXT DEFAULT 'N/A' );

-- 4. 从旧表迁移数据 INSERT INTO users_new(full_name, email) SELECT full_name, email FROM users;

-- 5. 删除旧表 DROP TABLE users;

-- 6. 将新表重命名为原名 ALTER TABLE users_new RENAME TO users;

-- 7. 提交事务并重新开启外键 COMMIT; PRAGMA foreign_keys=ON;

字段类型SQLite不支持修改

如果要修改SQLite的字段类型,正确的方案是

1 创建新标

2 迁移数据到新表

INSERT INTO table_new SELECT * FROM table_old;

3 删除旧表

DROP TABLE table_old;

4 重命名新表

ALTER TABLE table_new RENAME TO table_old;

这里有一个问题,如果是大表,那么会导致磁盘IO明显,数据库操作会被锁定,引起生产事故。

在SQLite中,重命名表,和列以及添加删除列都是很快,(需要新版本),修改类型,约束,逐渐都只能删除旧表,创建新表的方式来进行。

这里还有一个问题,表字段类型可以 乱存数据的问题,数字类型存储 字符类型的值在3.37版本之前是可以的。

所以数据库的版本必须是3.37后的版本,这样可以在建立表的时候加上strict

CREATE TABLE users ( id INTEGER PRIMARY KEY, age INTEGER, email TEXT ) STRICT;

是什么类型就是什么类型,下面我们做一个练习看看

sqlite> sqlite> CREATE TABLE test ( id INTEGER PRIMARY KEY, age INTEGER, email TEXT ); CREATE TABLE test_strict( id INTEGER PRIMARY KEY, age INTEGER, email TEXT ) STRICT;(x1...> (x1...> (x1...> (x1...> sqlite> sqlite> (x1...> (x1...> (x1...> (x1...> sqlite> sqlite> sqlite> .tables test test_strict sqlite> INSERT INTO test (id,age,email) VALUES ('1','not_a_number',222); sqlite> select * from test; 1|not_a_number|222 sqlite> sqlite> sqlite> sqlite> INSERT INTO test_strict (id,age,email) VALUES ('1','not_a_number',222); Runtime error: cannot store TEXT value in INTEGER column test_strict.age (19) sqlite>
sqlite 字段类型

所以,今天就说到这里,下期咱们继续 ,今天总结

1 SQLite 不能修改字段类型

2 SQLite 需要严格数据类型表,否则什么值都能插入到不对应的字段类型中

http://www.jsqmd.com/news/657644/

相关文章:

  • ComfyUI Impact Pack终极指南:5步掌握AI图像增强完整方案
  • 别再死记硬背了!用Python的SciPy和NumPy库,5分钟搞懂三大抽样分布(卡方、t、F)
  • 数据结构复习(第五章):树与二叉树
  • 科捷智能以一站式方案破解汽配行业厂内运输难题
  • 【限时解密】GitHub Copilot Enterprise未公开的3项性能开关:启用后P99延迟下降63%,仅限前500名开发者获取配置清单
  • websoket测试工具WsBroadcaster
  • 130万对像素级对齐:SOMA-1M如何打通遥感多模态数据的“最后一公里“
  • 图片批量微调原创工具:18种图像处理+4种EXIF修改,完整功能解析
  • AI硬件洗牌,录音笔逆势升温!谁能在这场竞争中脱颖而出?
  • 英雄联盟智能工具箱:重新定义你的游戏体验
  • 2026沈阳GEO本地营销推广平台强势来袭:新私域助力企业破局AI搜索困局 - 品牌策略主理人
  • 贾子逆算子(KIO):面向大语言模型的主动式幻觉抑制与逻辑校准元算子
  • 别再乱用‘jet’了!用Matplotlib做数据可视化,这5个Colormaps选择技巧让你图表更专业
  • APK加固效果验证指南:如何判断防破解方案靠不靠谱?
  • 告别C语言硬编码!用lvglpp在ESP32上快速构建嵌入式GUI(附完整项目配置)
  • OpenClaw如何安装?2026年4月阿里云1分钟超简单云端搭建及百炼Coding Plan教程
  • Arduino IDE串口调试工具终极指南:5分钟掌握实时数据交互技巧
  • 无感定位筑基空间计算,镜像视界打造数字孪生视频孪生全场景方案
  • 科学图像分析难题破解:3个步骤让Fiji成为你的得力助手
  • 别再傻傻点图标了!用CMD启动mstsc远程桌面,这5个参数让你效率翻倍
  • apache httpd 后缀解析
  • GRBL移植实战(一):从AVR到ARM的引脚映射与平台适配
  • 保姆级教程:用YOLOv8-seg和DeepSORT在Windows上实现车辆计数与轨迹追踪
  • 告别Tesseract-OCR配置陷阱:从“tesseract is not installed”到“Error opening data file”的实战排错指南
  • 明日方舟游戏自动化助手终极指南:10分钟实现一键日常
  • 如何快速掌握缠论可视化分析:通达信插件终极指南
  • 如何通过游戏化编程轻松掌握Python与JavaScript:CodeCombat终极指南
  • 免费音频转换器终极指南:如何在5分钟内完成跨平台音频格式转换
  • 3分钟掌握Windows窗口置顶技巧:AlwaysOnTop提升多任务效率200%
  • 2026年口碑好的临安农家乐推荐榜单:临安民宿、临安农家乐吃住、临安农家乐、临安农家乐吃住、临安浙西大峡谷农家乐、临安浙西大龙湾农家乐、临安龙井峡漂流农家乐选择指南 - 海棠依旧大