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]]
那么
在MySQL 5.7.9之后,还可以不用麻烦的JSON_EXTRACT而使用->符号,比如user->’$[1].a’,然后,JSON_EXTRACT出来的值,是可以直接参与where比较的!在加上虚字段,真是黑科技呀……