如何命令行进入sqlite

打开数据库:sqlite3 ~/Documents/mydatabase.db 显示表:.tables 查询数据:SELECT FROM users; 创建表:CREATE TABLE products(id INTEGER PRIMARY KEY,name TEXT,price REAL); 输出:.exit
实用提醒:记得加点执行SQLite命令。

mysql中escape用法

天哪,当我刚接触 MySQL 时,这个 ESCAPE 关键字是一个陷阱。
我记得那是2 008 年,我在北京的一家小公司做一个项目。
数据库包含用户上传的文件的名称。
我的朋友在使用LIKE查询时总是出错。

他编写了 SQL 来搜索带百分号的文件名,但没有找到。
当我查看时,它说“LIKE 'filenameLIKE%' ESCAPE”。
我当时很困惑。
这种写作方式太奇怪了。
后来我提醒他ESCAPE后面必须跟一个转义字符并且紧跟在字符串之后。
我将其更改为 LIKE 'filenameLIKE%' ESCAPE' 并且它是正确的。
当时我们还在使用MySQL 5 .0版本。

再举一个例子,我们的客户数据中有报价,但当我们将它们保存到数据库时,报价被破坏了。
我们教'Hello,“World”'ESCAPE'使用ESCAPE进行转义,这样我们就可以正常连接了。
但是,转义字符必须是单个字符,而不是空格或多个字符。
我的一个同事犯了这个错误:他写了ESCAPE'',导致执行SQL时报错。

还有另一个陷阱:ESCAPE 的范围。
转义字符仅对紧邻的字符串有效,对字符串的其余部分没有影响。
记得有一次我写了很久的查询,发现转义不起作用,因为ESCAPE放错了地方。
我真的很失望。

总的来说,正确使用ESCAPE关键字实际上可以解决很多问题。
然而,如果你使用得不好,它很容易出现错误。
因此,在写SQL的时候一定要注意细节,尤其是ESCAPE的使用。
一开始不要像我一样惊慌。

MySQL中替换函数使用 REPLACE在字符串修改中的案例

说实话,当我第一次拿到旧系统时,我曾经成功过很多次。
当时的数据质量参差不齐,各种不同类型、格式的现象屡见不鲜。

以直接字符串替换为例。
我曾经遇到过一种情况,整个站点上所有“mysq”文章都改为“mysql”。
使用一个简单的示例,例如 RETURN('helloworld', 'world', 'mysql')。
实际操作中,你要把第一个选择写出来,然后打印出来看看效果,这样才不会做出错误的修改。
我记得我忘记回忆那次之后的事情了。
幸运的是,除了无尽的烦恼之外,还有很多乐趣。

有趣的是使用存储准备更新的场景。
例如,有一个用户帐户,其中所有电子邮件字段都是旧域名。
更新我写了 USER SET email = RETURN (email, 'oldcompany.com', 'newcompany.com') WHERE email like '%oldcompany.com%'。
这里有一个经验陷阱:有一个客户的电子邮件地址是“test@oldcompany.com”,我忘记添加where条件。
结果我扫描了整个表,把所有用户的域名都改了。
幸运的是,我发现它滚动得又早又快。

替换时间显示结果非常容易。
当我以前做报告时,我经常读到,name,replace (email, 'oldcompany.com', 'newcompany.com') AS new_email FROM uBi 用户,如电子邮件 '%oldcompany.com%'。
这样,用户在结束前的显示会感到舒服,并且数据库中的原始数据将保持完整。
客户的报告问我是否真的更改了数据,以便他可以给我一个REPAIR帐户。

清理特殊字符就是体力恢复。
请记住,当您减少日志表时,这些行将被馈送并且车辆将恢复到疯狂状态。
我将 UPDATE 写为 SET message = REPLACE (replace (message, 'r', ''), 'n', '') WHERE message I WANT '%r%' OR message I WANT '%n%'。
区别如下:首先替​​换回车符r,换行符n。
如果顺序相反,则省略。
有一位同事曾经犯过这样的错误,把整个块改成了长块。

最具技术性的证据是嵌套的。
这是一个文档表,其内容混合了制表符、新字符和多余的空格。
我写了 UPDATE 文档内容 = RESTORE (RESTORE (content, 't', ''), 'n', ''), '', '') WHERE REXP CONTENT [tn]'。
这个REGEXP一开始就写错了,导致替换效率很低,卡住了十几分钟。
后来我发现改变正则表达式可以更准确地自定义返回。

使用RECOVERY时最担心的是忘记添加VBI条件。
有一次,我帮助客户清理了描述中多余的空格,并使用 SET description = REPLACE(description, '','') WHEREDESCRIPTION %' 直接更新产品。
结果整个桌子都变成了只有和弦的空格——那个场景,啧啧。
之后我为团队设定了一条规则:任何带有 RESTORE 的 UPDATE 都必须首先运行 SELECT 来确认目标。

其实在MySQL 8 .0之后REGEXP_REPLACE更加灵活,但是我仍然维护很多旧系统,仍然更换列。
我记得上次使用 REGEXP_REPLACE 清理导出的 PDF 文本。
那些全宽的空格和线裂都处理的很完美,比巢穴更容易成功。

归根结底,BACK是一个好工具,但如果使用不当,它就是一个定时炸弹。
特别是,全表数据表的类型将讨论三遍。
我建议在操作之前使用EXPLORE检查计划的执行情况。
您可以阅读该表两次来确认。
对于大表,最好测试前 1 % 的数据。
当我用 RESTORE 将其置于升级位置后,我完全意识到了这一教训。