-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtest.txt
33 lines (29 loc) · 1.88 KB
/
test.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
create table S(ID int , name char(12) unique, age int, gender char(1), primary key (ID));
insert into S values (12345678,'wy',22,'M');
insert into S values (123456,'stz',20,'M');
insert into S values (456,'lyxt',20,'F');
select * from S;
select * from S where age >= 20 and gender = 'M';
delete from S where age = 20;
delete from S;
drop table S;
简单版(现在的)
create table S(a int , b int, primary key (b));
insert into S values (1, 4);
insert into S values (2, 5);
insert into S values (3, 6);
大概想法就是……
b+树里面只储存 pk : 行数 这对信息,不再存所有的值了
buffer这边支持通过行数查询、删除,所以通过主键的查询/删除可以通过b+树找到行号,指定查/删某一行
如果条件没有主键或者除了主键还有别的,可以使用 _record 系列的函数,就是普通的带条件查找
为了维护b+树,有的函数是返回一些信息的
比如insert_record会返回记录插到了哪一行,这样才能往b+树里面存 pk : 行数
delete_record就会告诉你删了的记录对应的主键,之后就能在b+树里面把他们删了
_line系列的函数是建立在已经从b+树查到行数的基础上的,所以不需要返回行数的信息
具体buffer里面怎么写的倒是不用太管x 主要是index那边的实现需要利用这几个新的函数
都列出来 可能这样好查一些
find_line(table_name: str, line_number: int) 返回找到的记录(一个列表) 例:[201801005, 'zyx', 20, 'M']
find_record(table_name: str, columns: dict, where: list) 返回找到的记录(列表的列表)
delete_line(table_name: str, line_number: int) 无返回值
delete_record(table_name: str, column: dict, where: list) 返回删除记录的主键(列表)
insert_record(table_name: str, record: []) 返回该条记录的行数(int),以便在b+树里储存