首先我們的目標(biāo)不是做一個(gè)商業(yè)的數(shù)據(jù)庫谊娇,而是讓一個(gè)軟件開發(fā)的初學(xué)者能自己寫一個(gè)數(shù)據(jù)庫,并能按照自己的想法不斷完善,達(dá)到提升編程能力的目標(biāo)臀防。
相信大部分人看到這個(gè)標(biāo)題的時(shí)候都覺得不可能或這并不簡單略板。為了能更好的說服大家毁枯,我們已經(jīng)完成了一個(gè)很基本數(shù)據(jù)庫原型的搭建MyBase?并且已經(jīng)開源,https://github.com/zhangqhn/mybase?這個(gè)系列文章將會復(fù)盤MyBase的開發(fā)過程叮称,盡量完整的呈現(xiàn)所有的內(nèi)容种玛。
為了達(dá)到讓初學(xué)者能在很短的時(shí)間內(nèi)學(xué)會MyBase藐鹤,在開發(fā)過程中我們盡量以最簡單的邏輯去實(shí)現(xiàn),最后以大約4000行c++代碼完成了整個(gè)項(xiàng)目赂韵,而且代碼簡潔娱节、沒有晦澀的語法。模塊劃分清晰能快速添加新的功能祭示。
雖然肄满,MyBase很簡單、代碼量很低质涛,但是也包含了豐富的功能:
打印幫助信息
help
清屏
clear
退出
eixt
執(zhí)行外部的SQL文件
source <sql-file-path>
顯示所有的表
show tables
顯示指定表的列信息
show columns from <tab-name>
創(chuàng)建表
支持?int, double, string?數(shù)據(jù)類型
create table <tab-name> (<col-name> int|double|string, ...)
刪除表
drop table <tab-name>
插入數(shù)據(jù)
insert into <tab-name> (<col-name-list>) values(<val-list>)
查詢數(shù)據(jù)
支持max,min,sum,avg,count聚合函數(shù)
select <target-list> from <tab-name> [where-expr] [group-by-expr] [limit-expr]
刪除數(shù)據(jù)
delete from <tab-name> [where-expr]
如果你是一個(gè)計(jì)算機(jī)專業(yè)的在校生稠歉,MyBase能讓你將計(jì)算機(jī)基礎(chǔ)課有一個(gè)實(shí)踐的平臺,讓你在課余可以做一些有意思的事汇陆∨ǎ或許,在兩年毡代、三年后阅羹,你能在MyBase上做一個(gè)你自己的數(shù)據(jù)庫。雖然這個(gè)數(shù)據(jù)庫不會成為商業(yè)數(shù)據(jù)庫教寂,但是在你的職業(yè)生涯中想必也是難忘的捏鱼。
動手去做一個(gè)數(shù)據(jù)庫,其實(shí)并不難孝宗。