Skip to content

SQL解释器,内存键值对数据库,SQL interpreter,LEX&YACC,FLEX&BISON

Notifications You must be signed in to change notification settings

zerofang/myDBMS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

myDBMS

声明 :

star和fork我这个项目的同学应该都是西电王小兵老师的编译原理课的学生。如果这个大作业没有改要求的话,我这个项目本身是可以通过检查的。但是我不鼓励大家直接照抄,sql.c和.h文件里的中文注释都写挺详细的,建议还是看看搞懂了自己写一下,一般来说不会花很长时间,.h和.c全部自己重写的话两三天差不多能做完。也可以试试在这个基础上改成非内存数据库,用文件存储和读取数据,也可以加上四则运算等更高级的sql语法支持,总之最好别直接抄。

for run :

RE:
WSL(Ubuntu 16.04)
command:
flex sql.l
yacc -d sql.y
gcc sql.c lex.yy.c y.tab.c -o mysql
./mysql

for test :

//测试CREATE DATABASE SHOW DATABASES DROP DATABASE USE DATABASE
CREATE DATABASE XJGL;
CREATE DATABASE JUST_FOR_TEST;
CREATE DATABASE JUST_FOR_TEST;
SHOW DATABASES;
DROP DATABASE JUST_FOR_TEST;
SHOW DATABASES;
USE XJGL;

//测试CREATE TABLE SHOW TABLES DROP TABLE
CREATE TABLE STUDENT(SNAME CHAR(20),SAGE INT,SSEX INT);
CREATE TABLE COURSE(CNAME CHAR(20),CID INT);
CREATE TABLE CS(SNAME CHAR(20),CID INT);
CREATE TABLE TESTTABLE(COL1 CHAR(22),COL2 INT,COL3 CHAR(22));
CREATE TABLE TEST_TABLE(COL1 CHAR(22),COL2 INT,COL3 CHAR(22));
SHOW TABLES;
DROP TABLE TEST_TABLE;
SHOW TABLES;

//测试INSERT INTO VALUES
INSERT INTO STUDENT(SNAME,SAGE,SSEX) VALUES ('ZHANGSAN',22,1);
INSERT INTO STUDENT VALUES ('LISI',23,0);
INSERT INTO STUDENT(SNAME,SAGE) VALUES ('WANGWU',21);
INSERT INTO STUDENT VALUES ('ZHAOLIU',22,1);
INSERT INTO STUDENT VALUES ('XIAOBAI',23,0);
INSERT INTO STUDENT VALUES ('XIAOHEI',19,0);
INSERT INTO COURSE(CNAME,CID) VALUES ('DB',1);
INSERT INTO COURSE (CNAME,CID) VALUES('COMPILER',2);
insert into course (CNAME,CID) VALUES('C',3);
insert into COURSE (CNAME,CID) VALUES('C',3);

//测试单表查询
SELECT * FROM COURSE;
SELECT * FROM STUDENT;
SELECT SNAME,SAGE,SSEX FROM STUDENT;
SELECT SNAME,SAGE FROM STUDENT;
SELECT SNAME,SAGE FROM STUDENT WHERE SAGE=22;
SELECT SNAME,SAGE FROM STUDENT WHERE (((SAGE=21)));
SELECT SNAME,SAGE FROM STUDENT WHERE SAGE>21 AND SSEX=0;
SELECT SNAME,SAGE FROM STUDENT WHERE SAGE>21 OR SSEX=0;
SELECT SNAME,SAGE FROM STUDENT WHERE SAGE>21 OR SSEX=0 AND SNAME = 'LISI';
SELECT SNAME,SAGE FROM STUDENT WHERE (SAGE>21 OR SSEX=0) AND SNAME = 'LISI';
SELECT * FROM STUDENT WHERE SSEX!=1;

// 测试多表查询
SELECT * FROM STUDENT;
SELECT * FROM COURSE;
select * from student,course;
SELECT * FROM STUDENT,COURSE WHERE (SSEX=0) AND (CID=1);

//测试DELETE语句
SELECT * FROM STUDENT;
DELETE FROM STUDENT WHERE (SAGE>21) AND (SSEX=0);
SELECT * FROM STUDENT;

//测试UPDATE
SELECT * FROM STUDENT;
UPDATE STUDENT SET SAGE=21 WHERE SSEX=1;
SELECT * FROM STUDENT;
UPDATE STUDENT SET SAGE=27,SSEX=1 WHERE SNAME='ZHANGSAN';
SELECT * FROM STUDENT;

//再次测试DROP
SHOW TABLES;
DROP TABLE STUDENT;
SHOW TABLES;
DROP TABLE CS;
SHOW TABLES;
DROP TABLE TESTTABLE;
SHOW TABLES;
SHOW DATABASES;
DROP DATABASE XJGL;
SHOW DATABASES;

//正常退出
EXIT;

About

SQL解释器,内存键值对数据库,SQL interpreter,LEX&YACC,FLEX&BISON

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published