3个版本

0.0.2 2024年7月12日
0.0.1 2022年9月20日
0.0.0 2022年2月27日

358 in 数据库接口

Download history 45/week @ 2024-07-06 38/week @ 2024-07-13 2/week @ 2024-07-20 2/week @ 2024-07-27

每月下载量87次

MIT许可证

525KB
13K SLoC

rrdb

GitHub license

Rust基于RDB

未完成


安装

使用cargo。

cargo install rrdb
  • 平台初始化(Linux)

创建符号链接并执行初始化。

sudo ln -s /home/$USER/.cargo/bin/rrdb /usr/bin/rrdb
sudo rrdb init
  • 平台初始化(MacOS)

创建符号链接并执行初始化。

sudo ln -s /home/$USER/.cargo/bin/rrdb /usr/local/bin/rrdb
sudo rrdb init
  • 平台初始化(Windows)

以管理员权限运行powershell并执行以下命令。

mkdir 'C:\Program Files\rrdb'
cp ~/.cargo/bin/rrdb.exe 'C:\Program Files\rrdb\'
'C:\Program Files\rrdb\rrdb.exe' init

基本用法

服务器

# 스토리지 초기화
cargo run --bin rrdb init
# 서버 실행
cargo run --bin rrdb run

客户端

psql -U rrdb -p 22208 --host 0.0.0.0

语法

  1. 关键字不区分大小写。
  2. 字符串由小括号(')分隔,包含括号时使用两个括号。
  3. 标识符可以由纯文本组成,也可以由大括号(")分隔。

数据库

# 데이터베이스 리스트업
SHOW DATABASES;
# 데이터베이스 생성
CREATE DATABASE "database name";
# 데이터베이스 삭제
DROP DATABASE "database name";
# 데이터베이스 변경
ALTER DATABASE "from name" rename to "to name";
# 데이터베이스 변경
USE "database name";
or
\c "database name";

# 테이블 목록 조회
SHOW TABLES
# 테이블 상세정보 조회
DESC "table name"
# 테이블 생성
# (table_constraint는 차후 추가할 예정입니다.)
CREATE TABLE [ IF NOT EXISTS ] "table name"
(
    [
        {
            "column name" data_type  [ column_constraint [ ... ] ]
        }
        [, ... ]
    ]
)

# column_constraint는 아래 형태 중 하나입니다.
# (CONSTRAINT나 CHECK, UNIQUE, REFERENCES 등은 차후 추가할 예정입니다.)
{
    NOT NULL |
    NULL |
    DEFAULT default_expr |
    PRIMARY KEY index_parameters
}
# 테이블 수정

1. ALTER TABLE [ IF EXISTS ] name
    action
2. ALTER TABLE [ IF EXISTS ] name
    RENAME [ COLUMN ] column_name TO new_column_name
3. ALTER TABLE [ IF EXISTS ] name
    RENAME TO new_name

# action은 다음 중 하나입니다.

1. ADD [ COLUMN ] column_name data_type [ column_constraint [ ... ] ] # 향후 [IF NOT EXISTS] 신택스 추가 필요
2. DROP [ COLUMN ]  column_name # 향후 [ IF EXISTS ] 신택스 추가 필요
3. ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
4. ALTER [ COLUMN ] column_name SET DEFAULT expression
5. ALTER [ COLUMN ] column_name DROP DEFAULT
6. ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL

插入

INSERT INTO table_name ( column_name [, ...] )
{
    VALUES ( { expression | DEFAULT } [, ...] ) [, ...]
    |
    select_query
}
[, ...] ]

选择

SELECT
    [ * | expression [ [ AS ] output_name ] [, ...] ]
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY grouping_element [, ...] ]
[ HAVING condition ]
[ ORDER BY expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] ]
[ LIMIT limit_number ]
[ OFFSET offset_number ]

from_item은 다음 중 하나입니다.
1. table_name  [ [ AS ] alias ]
2. ( select ) [ AS ] alias

更新

UPDATE table_name
SET { column_name = { expression } } [, ...]
[ WHERE condition ]

删除

DELETE FROM table_name
[ WHERE condition ]

依赖项

~13–24MB
~328K SLoC