{{ it.name }}
{{ it.text }}
MySQL SHELL 对关系型数据库的操作涉及到三个组件:
MySQL:传统 mysql,操作比较简单,除了写法有些差异外,基本上等同于 SQL 操作。
MySQL X:基于 X DEV 协议操作 mysql,其中包含很多类,除了可以操作文档数据,也可以操作关系表。
SHELL:包含了以上两个组件,可以随意切换,重点在于如何选择连接协议。
我们来依次看看各个组件对关系表的常用检索方式。
一、mysql 组件
连接数据库:mysql.get_session 或者 mysql.get_classic_session
可以用如下传统拼串方式连接数据库:
也可以用字典的方式连接数据库:
接下来可以用 ClassicSession 类提供的各种方法对关系表进行相关操作,所有的操作都可以直接用函数 run_sql 来执行:
对表 city 查询:
对表 city 插入:
对表 city 删除:
关闭连接:
二、mysqlx 组件
MySQL X 组件包含了很多类,下面我来举几个常用的例子:
依然是先连接数据库 world:X 协议端口 33060 或者 X SOCKET(用 mysqlx.get_session 方法)。
比如找出人口小于800的城市并且列出对应的国家名字:
2.1 SQLRESULT 类:类似于 mysql 游标用法
获取前两行:默认不带字段名
获取带字段名的记录:
2.2 SqlExecute 类:类似于 prepare 语句用法
比如把之前的人口判断条件替换为绑定变量(?或者变量(:a)),这样可以方便多个条件一起查询。
给定两个不同的人口条件:
2.3 Table 类:获取当前连接数据库下单张表,可以对这张表进行任何 DML 操作。(获取 Table 类之前,得先获取 Schema 类)
2.4 Table 类包含几个子类:TableSelect、TableInsert、TableUpdate、TableDelete。
1)TableSelect:保存查询结果
之前查找人口小于 800 的记录结果即为 TableSelect,可以基于此类来后续操作。
只拿出部分字段:
2)TableInsert:执行插入语句
插入一行:
插入多行:有两种方法。
多 VALUES 形式:
3)TableUpdate:执行更新语句
4)TableDelete:执行删除语句
三、SHELL 组件
SHELL 组件可以在 MySQL 和 MySQL X 间随意切换,并且连接后,包含了一个默认数据库类 “db” ,db 等价于 ytt_cnx1.get_current_schema()
依然还是操作表 city,
之后的操作和之前 mysqlx 的一样。
所以如果用 MySQL SHELL 来操作 mysql 关系表,推荐用 SHELL 组件的方式,非常灵活。