SurrealDB 管理的数据可以分隔在命名空间还有数据库里,Namespace,就是命名空间, 一个命名空间的下面可以包含多个数据库,你可以把一个命名空间想成是一个目录,在这个目录的下面,可以包含多个数据库。作为管理员,我们可以指定用户在命名空间还有数据库上的权限。
之前在请求 sql 这个接口的时候,在请求的头部里设置了 NS 还有 DB 这两个头部,NS 指的就是 Namespace ,命名空间,它的值现在是 ninghao。DB 指的是 Database,意思是数据库,它的值现在是 xuanwu。
也就是请求这个 sql 接口影响的就是在 ninghao 这个命名空间下面的 xuanwu 这个数据库里的数据。
列出内容
执行一条查询,获取到 post 表里的数据,这里有一条数据记录,目前这个数据存储的地方 ninghao 命名空间下的 xuanwu 这个数据库里。
我们把 NS 这个命名空间的值改成 xiaoxue,再发送一下请求,提示没有 post 数据,因为 xiaoxue 这个命名空间下的 xuanwu 这个数据库里还没有数据。
USE NS
在执行查询之前,可以用 USE 设置要使用的命名空间。在这个 SELECT 声明的上面,用 USE NS 把要使用的命名空间设置成 ninghao。
执行一下查询,这次再查询 post 表里的数据的时候就有值了。注释掉这行 USE NS 语句。
在请求头部里,把 xiaoxue 再改成 ninghao ,然后改一下 DB 这个头部的值。改成 zhuque,再发送一下请求,在响应里并没有 post 数据,因为 ninghao 这个命名空间下的 zhuque 这个数据库里并没有数据。
USE DB
使用 USE DB 可以设置要使用的数据库,在执行 SELECT 语句的上面,用 USE DB 把要使用的数据库设置成 xuanwu。再发送一下请求。
这回在响应的数据里面又会出现一条 post 数据记录。因为这次查询的就是 ninghao 命名空间下面的 xuanwu 这个数据库里的 post 这个数据表里的数据。
注意这里我们之所以可以使用 USE NS 或者 USE DB,是因为当前的身份是 root,管理员拥有全部的权限。如果用普通用户的身份执行查询,surrealdb 会检查这个用户在命名空间,数据库,或者数据表上的权限。
最后再把请求头部里的 DB 改成 xuanwu。