SQL to SequoiaDB 映射表

概念和术语

SQLAPI
databasedatabase
tableSpacecollection space
tablecollection
rowdocument / BSON document
columnfield
indexindex
table joinsembedded documents
primary key (指定任何唯一的列作为主键)primary key (在 SequoiaDB 中,primary key 是自动创建到记录的 _id 字段名中)

Create 和 Alter

下表列出了各种 SQL 语句表级别的操作和在 API 中对应的操作:

SQL 语句API 语句
create table student ( id not null, stu_id varchar(50), age number primary key(id) )创建时,集合无需描述结构。在插入文档记录时直接指定字段即可。特别地,集合的主键 _id 字段未指定时会自动添加。db.collectionspace.createCL( "student" )
alter table student add name varchar(50)集合不描述或强制执行文档的结构,即在集合上没有结构的改动操作,但是 update() 方法可以使用 $set 向文档记录添加不存在的字段。db.collectionspace.student.update( { $set: { name: "unknown" } }, {} )
alter table student drop column name集合不描述或强制执行文档的结构,即在集合上没有结构的改动操作,但是 update() 方法可以使用 $unset 向文档记录删除存在的字段。db.collectionspace.student.update( { $unset: { name: "" } }, {} )
create index index_stu_id on student ( stu_id )db.collectionspace.student.createIndex( "index_stu_id", { stu_id: -1 } )
drop table studentdb.collectionspace.dropCL( "student" )

Insert

下表给出了各种 SQL 语句在表级上的插入操作和 API上相应的操作:

SQL 语句API 语句
insert into student( stu_id, age ) values( "01", 20 )db.collectionspace.student.insert( { stu_id: "01", age: 20 } )

Select

下表给出了各种 SQL 语句在表级上的读操作和 API 上相应的操作:

SQL 语句API 语句
select from studentdb.collectionspace.student.find()
select stu_id, age from studentdb.collectionspace.student.find( {},{ stu_id: "01", age: 20 } )
select from student where age > 25db.collectionspace.student.find( { age: { $gt: 25 } } )
select age from student where age = 25 and stu_id= "01"db.collectionspace.student.find( { age: 25, stu_id: "01" }, { age: 25 } )
select count( * ) from studentdb.collectionspace.student.count()
select count( stu_id ) from studentdb.collectionspace.student.count( { stu_id: { $exists: 1 } } )

Update

下表给出了各种 SQL 语句在表级上的更新操作和 API上相应的操作:

SQL 语句API 语句
update student set age = 25 where stu_id = "01"db.collectionspace.student.update( { $set: { age: 25 } }, { stu_id: "01" } )
update student set age = age + 2 where stu_id = "01"db.collectionspace.student.update( { $inc: { age: 2 } }, { stu_id: "01" } )

Delete

下表给出了各种 SQL 语句在表级上的删除记录操作和 API 上相应的操作:

SQL 语句API 语句
delete from student where age = 20db.collectionspace.student.remove( { age: 20 } )
delete from studentdb.collectionspace.student.remove()