体验 Mysql shell 控制台

以前登录Mysql的控制台后,使用SQL语言来操作数据库,如

mysql> select * from tablename;

Mysql 5.7.12 之后有了比较大的变化,支持了JSON文档的操作,同时也提供了全新的数据库操作方式,现在可以不需要SQL的知识,以非常自然的代码方式操作数据库,例如

db.news.insert("create_date", "title")

.values("2016-04-10", "hello");

可以登录 shell 控制台使用,也有新版本的驱动,可以在代码中使用

shell 控制台有 Javascript版本,下面就体验一下新的操作方式

登录 shell控制台

mysqlsh -u root world_x

world_x 是数据库名称,是官方提供的一个测试库

mysql-js>

这个提示说明当前的交互语言是 Javascript

因为Mysql支持了JSON文档,所以操作的对象除了传统的关系数据表外,增加了文档集合

先看下传统表操作有什么变化

查询

mysql-js> db.City.select(["Name", "CountryCode"])

.where("Name like 'Z%'")

select 中的 ["Name", "CountryCode"] 表示只返回这两列的信息,where 中是查询条件

可以对查询条件进行参数绑定

mysql-js> db.City.select(["Name", "CountryCode"])

.where("Name like :name")

.bind("name", "Z%")

排序和限定结果数量

mysql-js> db.Country.select(["Code", "Name"])

.orderBy(["Name desc"]).limit(3)

插入

mysql-js> db.City.insert("ID", "Name", "CountryCode")

.values(1, "Little Falls", "USA")

.values(2, "Happy Valley", "USA")

可以定义多个 value 来插入多条记录

修改

mysql-js> db.City.update( )

.set("Name", "Beijing")

.where("Name = 'Peking'")

删除

mysql-js> db.City.delete( )

.where("Name = 'Olympia'")

可以看到,使用了函数链的方式,很容易理解,对于不熟悉SQL的开发人员也很友好

操作集合

添加文档

执行 CountryInfo 集合的 add 方法,参数是新文档的 JSON 数据

查询

使用 find 方法执行查询操作,由于查询结果太长,下面的示例就不显示结果信息了

(1)列出所有文档

mysql-js> db.CountryInfo.find( )

(2)条件查询

mysql-js> db.CountryInfo.find("_id = '888'")

mysql-js> db.CountryInfo.find("GNP > 50 and demographics.Population < 100")

(3)参数绑定

mysql-js> db.CountryInfo.find("Name = :country")

.bind("country", "Italy")

(4)limit 与 sort

mysql-js> db.CountryInfo.find( )

.sort(["IndepYear desc"])

.limit(8).skip(1)

修改文档

使用集合的 modify 与 set 的方法链来修改文档,modify 参数指明目标文档的查找条件,set 参数中给出修改方案

可以与 modify 配合的不只是 set,还有 unset、arrayAppend、arrayInsert、arrayDelete 等方法

删除文档

(1)删除符合条件的文档

mysql-js> db.CountryInfo.remove("_id = 'SEA'")

(2)先对结果集排序,然后删除第一个

mysql-js> db.CountryInfo.remove( )

.sort(["Name desc"]).limit(1)

这个全新的操作方式降低了开发难度,例如一个开发者熟悉 MongoDB,但不熟悉SQL,那么现在也可以轻松的使用Mysql

原文发布于微信公众号 - 性能与架构(yogoup)

原文发表时间:2016-07-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Esofar 开发日记

[译]RabbitMQ教程C#版 - “Hello World”

RabbitMQ是一个消息中间件:它接收并转发消息。您可以把它想象为一个邮局:当您把需要寄出的邮件投递到邮箱,邮差最终会把邮件送给您的收件人。在这个比喻中,Ra...

13630
来自专栏猫哥学前班

8102 年的程序员不需要 Hosts 和 Fiddler

加入鹅厂之后,我发现团队都在用一款叫做 Whistle 的工具,起初我以为这只是一款类似 Fiddler/Charles 的普通货色。然鹅,发现下面这两种用法之...

49130
来自专栏Porschev[钟慰]的专栏

CodeSmith 创建Ado.Net自定义模版(二)

CodeSmith 创建Ado.Net自定义模版(二) 接第一篇:  CodeSmith 创建Ado.Net自定义模版(一) 建立第二个C# Template:...

19960
来自专栏程序员同行者

redis 优化

40330
来自专栏.NET技术

.net core实践系列之SSO-跨域实现

接着上篇的《.net core实践系列之SSO-同域实现》,这次来聊聊SSO跨域的实现方式。这次虽说是.net core实践,但是核心点使用jquery居多。

16730
来自专栏Esofar 开发日记

[译]RabbitMQ教程C#版 - 工作队列

在第一篇教程中,我们编写了两个程序,用于从一个指定的队列发送和接收消息。在本文中,我们将创建一个工作队列,用于在多个工作线程间分发耗时的任务。

10020
来自专栏Linux驱动

27.Linux-DM9000C网卡移植(详解)

上一节 我们学习了:   网卡驱动介绍以及制作虚拟网卡驱动 接下来本节,学习网卡芯片DM9000C,如何编写移植DM9000C网卡驱动程序。 1.首先来看DM9...

25350
来自专栏java工会

redis面试总结

(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)

28340
来自专栏全栈数据化营销

用python爬取qq空间说说

环境:PyCharm+Chorme+MongoDB Window10 爬虫爬取数据的过程,也类似于普通用户打开网页的过程。所以当我们想要打开浏览器去获取好友空间...

1K130
来自专栏圣杰的专栏

RabbitMQ知多少

1.引言 RabbitMQ——Rabbit Message Queue的简写,但不能仅仅理解其为消息队列,消息代理更合适。RabbitMQ 是一个由 Erlan...

28570

扫码关注云+社区

领取腾讯云代金券