1. 

关注“一猿小讲”的伙伴们都清楚,Java 那小子带着心爱的 Python 菇凉,去了一趟浪漫的土耳其,然后一起又去了东京和巴黎,接着 Python 菇凉自己又去了云南的大理。

就在昨天,Python 菇凉好奇的问:“亲爱的,好记性不如烂笔头,你能否把这些旅游的记忆,帮我存储下来啊?”

这个问题,当然难不倒在技术竞技场摸爬滚打、填坑无数的 Java 那小子。Java 那小子自信的说:“你已经熟练使用 IDEA;也能够写 HelloWorld 程序;也带你灭过 Bug。已经是个名副其实的程序媛啦,是时候教给你真正的技术啦,也是时候介绍我的好朋友 MySQL 给你认识认识啦。”

“MySQL?MySQL 是谁?”Python菇凉好奇的问。

恰巧,MySQL 步履蹒跚的径直朝 Java 那小子 & Python 菇凉的方向走来。

“你好,美丽的 Python 菇凉。我是 MySQL,我擅长关系型数据存储,大家都叫我宰相,因为我肚子特能装(哈哈),以后有需要帮帮的,别见外,尽管说。”MySQL 笑眯眯的说道。

Java 那小子用期望的眼神盯着 MySQL,并说道:“巧了,MySQL 兄弟,我女票正考虑,如何把近期旅游的经历,存储一下,不知道你能否帮忙解决?"

“兄弟的事,当然两肋插刀,在所不辞,更何况是我擅长的事情。不过今天 DB 界进行选秀,我就不陪着你们实现了,不过我这有一个操作手册,你照着做就能帮助 Python 实现愿望了。”MySQL 爽快的说道。

2. 

说时迟,那时快。只见 Java 那小子照着 MySQL 给的手册,已经操作猛如虎了。

第一步:打开黑布隆冬的控制台窗口,并输入连接数据库服务器的命令:

mysql -u root -p

如上图所示提示输入数据库密码,输入密码成功后,成功打入 MySQL 内部。

第二步:你需要创建个数据库,可以起个数据库的名字,咱们不妨就叫 travel 吧,命令如下。

create database travel;

然后选择刚刚创建的数据库 travel,命令如下:

use travel;

第三步:你需要在 travel 下创建一个 memories 表,专门存放 Python 菇凉的旅行回忆。

CREATE TABLE memories (
id INT unsigned NOT NULL AUTO_INCREMENT,
city VARCHAR(64) NOT NULL,
scenic_spots VARCHAR(64) NOT NULL,
image_path VARCHAR(128) NOT NULL,
travel_date DATE NOT NULL,
PRIMARY KEY (id)
);

第四步:此时就可以把 Python 菇凉的旅行经历全部记录写进回忆里。

insert into memories values(1,'土耳其','卡帕多奇亚','kpdqy.png','9012-07-02');
insert into memories values(2,'东京','异国情调街区','ygqdjq.png','9012-07-03');
insert into memories values(3,'巴黎','塞纳河','snh.png','9012-07-03');
insert into memories values(4,'云南','天涯海角','tyhj.png','9012-07-04');

好了,到这一步 Python 菇凉的愿望也就达成了,旅行回忆在 MySQL 的帮助下已经完全得到了存储。

“关键是怎么查询呢?”Python疑惑的问道。

只见 MySQL 给的手册上有这么一句话,若想查询记录,可以通过如下命令进行查询,不妨一试。

select * from memories;

“哎呦,MySQL 他也太厉害了,快成我偶像了,佩服!!但是我发现第 2 条的景点的写错了,能不能更新一下啊?”Python菇凉抱有期望的问道。

只见 MySQL 给的手册上清晰的记录着如下命令,Java 那小子迫不及待的想试一下。

update memories set scenic_spots = '秋叶原' where id = 2;

Python 菇凉看到查询效果,惊喜的笑了。但是考虑到云南天涯海角,因为只有 Python 菇凉自己去了,没有 Java 那小子的世界,感觉不完美,所以不应该永久留存,应该删除。于是根据 MySQL 给的手册指示输入了如下命令:

delete from memories where id = 4;

看到最后这个效果,Python 菇凉甚是高兴,感觉爱情之旅回忆满满,幸福感爆棚。

“哎呀,我突然发现这么一来,咱们也可以设计一张记账订单表,来管咱们家的鸡毛蒜皮的账啦(捂嘴笑)。”Python 菇凉惊奇的说道。

3. 

故事讲完啦,接下来把 MySQL 给的手册未提到的咱们也稍微提一嘴吧。

显示所有数据库:show databases;
显示所有的表:show tables;
显示表结构:desc memories;
删除表:drop table memories;

  

经验分享一箩筐:

ERROR 1366 (HY000): Incorrect string value: '\xCD\xC1\xB6\xFA\xC6\xE4' for column 'city' at row 1

解决:查看创建数据的编码是否为 utf8,如果是直接在控制台 set names gbk 就可以解决。

经验分享一麻袋:

查询 city 是北京的旅游经历,发现全部查询出来了,小伙伴们问题出在了哪儿呢?后面文章会重点说这个问题的攻防,敬请期待。

select * from memories where city='北京' or '1=1';

好了,今天的分享到这就结束了。谨以此篇,写给身边那些需要的朋友们。

【Java技术系列】爱情36技之记忆永存的更多相关文章

  1. 【Java技术系列】爱情36技之暗送秋波的技术

    1. 这篇文章想分享已经很久了,苦于皱巴巴的技术比较生涩难懂,迟迟没有找到好的分享方式,今天结合爱情中暗送秋波的故事的形式,尝试分享一下. 以后如果再有人问你们:能否在加载类的时候,对字节码进行修改? ...

  2. 【Java技术系列】爱情36技之追美妹的技术

    1. 在古老的非洲大陆上,有个原始人无意中抬头仰望星空,凝视的时间稍微长了一些,超过了外星人设置的阈值,立刻拉响了人类即将产生文明的警报.因为外星人认为,人类已经产生了对宇宙的好奇心,文明的产生,科技 ...

  3. 【Java技术系列】爱情36技之Bug大战

    1. 鲁迅先生说:程序员,天不怕地不怕,就怕小虫儿爬呀爬,爬呀爬. 随着时间的推移,鲁迅先生又说:真正勇猛的程序员,敢于让虫子面对惨淡的虫生. 虫子在程序员心中是啥东西?虫子的学名为 Bug,是多少入 ...

  4. Java基础系列(36)- 数组三种初始化及内存分析

    内存分析 数组三种初始化 静态初始化 int[] a = {1,2,3}; Man[] mans = {new Man(1,1),new Man(2,2)} 动态初始化 int[] a = new i ...

  5. 8.Java 加解密技术系列之 PBE

    Java 加解密技术系列之 PBE 序 概念 原理 代码实现 结束语 序 前 边的几篇文章,已经讲了几个对称加密的算法了,今天这篇文章再介绍最后一种对称加密算法 — — PBE,这种加密算法,对我的认 ...

  6. 1.Java 加解密技术系列之 BASE64

    Java 加解密技术系列之 BASE64 序号 背景 正文 总结 序 这段时间,工作中 用到了 Java 的加解密技术,本着学习的态度,打算从这篇文章开始,详细的研究一番 Java 在加解密技术上有什 ...

  7. Java 加解密技术系列文章

    Java 加解密技术系列之 总结 Java 加解密技术系列之 DH Java 加解密技术系列之 RSA Java 加解密技术系列之 PBE Java 加解密技术系列之 AES Java 加解密技术系列 ...

  8. Tomcat系列之Java技术详解

    一.概述 1.前言 在前面几篇博客中,我们和大家说了负载均衡器服务器.Web服务器.反向代理服务器.缓存服务器,从这篇博客开始我们和大家说说应用程序服务器,对于上述内容不了解的博友可以去参考一下我们前 ...

  9. 11.Java 加解密技术系列之 总结

    Java 加解密技术系列之 总结 序 背景 分类 常用算法 原理 关于代码 结束语 序 上一篇文章中简单的介绍了第二种非对称加密算法 — — DH,这种算法也经常被叫做密钥交换协议,它主要是针对密钥的 ...

随机推荐

  1. fork他人仓库文件及修改整合

    1.首先使用浏览器打开自己的GitHub地址,并打开即将fork的文件地址(别人的文件地址),在其右上方找到fork选项并点击即可 2.在自己的电脑上创建一个文件夹后使用git bush here的C ...

  2. JavaScript对象(三)

    序列化对象: 对象序列化:对象的状态转化为字符串,也可以将字符串还原为对象.方法:JSON.stringify(),用来序列化,JSON.parse(),用来还原对象. JSON(JavaScript ...

  3. JS反爬绕过思路之--谷歌学术镜像网链接抓取

    首先,从问题出发: http://ac.scmor.com/ 在谷歌学术镜像网收集着多个谷歌镜像的链接.我们目标就是要把这些链接拿到手. F12查看源码可以发现,对应的a标签并不是我们想要的链接,而是 ...

  4. 手机抓包app在python中使用

    使用python+airtesr+无线模式控制手机 官方文档中,在airtest.readthedocs.io/zh_CN/lates…有一段介绍如何连接安卓手机的例子: 但是这个线接模板,无线模式的 ...

  5. 关于OSS不再维护的一些讨论

    FUSE for macOS 将不再维护 Fuse 是一款针对Mac OS的文件系统所开发的一款开源软件. 用于MacOS的FUSE软件包提供了多个API,用于为OS X 10.9至macOS 10. ...

  6. 使用StreamHttpResponse和FileResponse下载文件的注意事项及文件私有化

    为什么需要编写下载视图方法? 你或许知道,我们上传的文件默认放在media文件夹中的,且Django会为每个上传的静态文件分配一个静态url.在模板中,你可以使用{{ mymodel.file.url ...

  7. postgresql自增字段初始值的设定

    在实际开发中会有这样的需求,想要自己设置表中自增字段的初始值. 比如:有一个your_table表中有一个自增字段id,我们知道,插入数据后,默认是从1开始自增的. 但是假如现在有一个需求,是要求id ...

  8. ajax上传文件,通过FromData把数据传给后端

    前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  9. LeetCode#232-Implement Queue using Stacks-用栈实现队列

    一.题目 使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部. pop() -- 从队列首部移除元素. peek() -- 返回队列首部的元素. empty() -- 返回队列 ...

  10. Python基础 | 数据文件的读写

    目录 txt txt的读入 txt的写出 csv xls\xlsx 在线网页数据 常用的工具 爬虫的步骤 pdf pdfrw PyPDF2 提取文档信息 word文档 其他统计软件生成文件 本文总结使 ...