MySQL是什么不多介绍了,在5.7之后,MySQL很“识时务”地引入了JSON字段,这是要抢MongoDB的饭碗么?不过对我们来说是个大好事,不用手动转换的存放了,而且支持原生的读取查询,世界从此变得好美丽!
Ubuntu14.04因为是LTS版本,各大云主机商都支持这个版本,而且我也习惯使用了这个版本,只不过毕竟是两年前的东西,MySQL 5.7在官方源中自然不会出现,怎么办呢?山人自有妙计,且跟我来!
wget http://dev.mysql.com/get/mysql-apt-config_0.3.5-1ubuntu14.04_all.deb sudo dpkg -i mysql-apt-config_0.3.5-1ubuntu14.04_all.deb sudo apt-get update sudo apt-get install mysql-server-5.7
接下来就不用我教了,选择Server后选5.7,然后Apply就好了,和之前安装一样样的。
可以享用美味的MySQL 5.7了。
顺便安利一下MySQL 5.7中JSON的用法吧~
mysql> CREATE TABLE t1 (jdoc JSON); Query OK, 0 rows affected (0.20 sec) mysql> INSERT INTO t1 VALUES('{"key1": "value1", "key2": "value2"}'); Query OK, 1 row affected (0.01 sec) mysql> SELECT JSON_ARRAY('a', 1, NOW()); +----------------------------------------+ | JSON_ARRAY('a', 1, NOW()) | +----------------------------------------+ | ["a", 1, "2015-07-27 09:43:47.000000"] | +----------------------------------------+ mysql> SELECT JSON_OBJECT('key1', 1, 'key2', 'abc'); +---------------------------------------+ | JSON_OBJECT('key1', 1, 'key2', 'abc') | +---------------------------------------+ | {"key1": 1, "key2": "abc"} | +---------------------------------------+ mysql> SELECT JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name'); +---------------------------------------------------------+ | JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name') | +---------------------------------------------------------+ | "Aztalan" | +---------------------------------------------------------+
JSON_EXTRACT中’$.name’的语法是这样的,“$”就是JOSN本身,“.”后面就是引用,其实和JavaScript也很类似,举个例子:
[3, {“a”: [5, 6], “b”: 10}, [99, 100]]
那么
- $[0] 就是 3.
- $[1] 就是 {“a”: [5, 6], “b”: 10}.
- $[2] 就是 [99, 100].
- $[3] 就是 NULL .
- $[1].a 就是 [5, 6].
- $[1].a[1] 就是 6.
- $[1].b 就是 10.
- $[2][0] 就是 99.
在MySQL 5.7.9之后,还可以不用麻烦的JSON_EXTRACT而使用->符号,比如user->’$[1].a’,然后,JSON_EXTRACT出来的值,是可以直接参与where比较的!在加上虚字段,真是黑科技呀……
wow
好文章!666,学习了