3 releases
0.0.2 | Jul 12, 2024 |
---|---|
0.0.1 | Sep 20, 2022 |
0.0.0 | Feb 27, 2022 |
#261 in Database interfaces
525KB
13K
SLoC
rrdb
Rust-based RDB
not complete
설치
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
기본 사용법
Server
# 스토리지 초기화
cargo run --bin rrdb init
# 서버 실행
cargo run --bin rrdb run
Client
psql -U rrdb -p 22208 --host 0.0.0.0
Syntax
- 키워드는 대소문자를 구별하지 않습니다.
- 문자열은 작은 따옴표(')로 구분되며, 따옴표를 포함시킬 때는 2개를 겹칩니다.
- 식별자는 단순 텍스트르로 구성해도 되고, 큰 따옴표(")로 구분해도 됩니다.
Database
# 데이터베이스 리스트업
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";
Table
# 테이블 목록 조회
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
INSERT INTO table_name ( column_name [, ...] )
{
VALUES ( { expression | DEFAULT } [, ...] ) [, ...]
|
select_query
}
[, ...] ]
Select
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
UPDATE table_name
SET { column_name = { expression } } [, ...]
[ WHERE condition ]
Delete
DELETE FROM table_name
[ WHERE condition ]
Dependencies
~12–26MB
~315K SLoC