pRes=xdb_exec(pConn,"CREATE TABLE IF NOT EXISTS student (id INT PRIMARY KEY, name CHAR(16), age INT, class CHAR(16), score FLOAT, info CHAR(255))");XDB_RESCHK(pRes,printf("Can't create table student\n");gotoerror;);pRes=xdb_exec(pConn,"CREATE TABLE IF NOT EXISTS teacher (id INT PRIMARY KEY, name CHAR(16), age INT, info CHAR(255), INDEX (name))");XDB_RESCHK(pRes,printf("Can't create table teacher\n");gotoerror;);pRes=xdb_exec(pConn,"CREATE TABLE IF NOT EXISTS book (id INT PRIMARY KEY, name CHAR(64), author CHAR(32), count INT, INDEX (name))");XDB_RESCHK(pRes,printf("Can't create table book\n");gotoerror;);
pRes=xdb_exec(pConn,"INSERT INTO student (id,name,age,class,score) VALUES (1,'jack',10,'3-1',90),(2,'tom',11,'2-5',91),(3,'jack',11,'1-6',92),(4,'rose',10,'4-2',90),(5,'tim',10,'3-1',95)");XDB_RESCHK(pRes,printf("Can't insert table student\n");gotoerror;);pRes=xdb_pexec(pConn,"INSERT INTO student (id,name,age,class,score,info) VALUES (6,'Tony',10,'3-1',95,'%s')","He is a boy.\nHe likes playing football.\nWe all like him!");XDB_RESCHK(pRes,printf("Can't insert table student\n");gotoerror;);pRes=xdb_pexec(pConn,"INSERT INTO student (id,name,age,class,score,info) VALUES (7,'Wendy',10,'3-1',95,'%s')","She is a girl.\nShe likes cooking.\nWe all love her!");XDB_RESCHK(pRes,printf("Can't insert table student\n");gotoerror;);pRes=xdb_exec(pConn,"INSERT INTO teacher (id,name,age) VALUES (1,'Tomas',40),(2,'Steven',50),(3,'Bill',31),(4,'Lucy',29)");XDB_RESCHK(pRes,printf("Can't insert table teacher\n");gotoerror;);pRes=xdb_exec(pConn,"INSERT INTO book (id,name,author,count) VALUES (1,'Romeo and Juliet','Shakespeare',10),(2,'Pride and Prejudice','Austen',5),(3,'Great Expectations','Dickens',8),(4,'Sorrows of Young Werther','Von Goethe',4)");XDB_RESCHK(pRes,printf("Can't insert table book\n");gotoerror;);
pRes=xdb_exec(pConn,"SELECT * from student");printf("=== Select all %d rows\n",(int)pRes->row_count);while(NULL!=(pRow=xdb_fetch_row(pRes))){xdb_print_row(pRes->col_meta,pRow,0);printf("\n");}xdb_free_result(pRes);
printf("\n=== Update age = 9 for id = 2\n");pRes=xdb_exec(pConn,"UPDATE student set age=9 WHERE id = 2");XDB_RESCHK(pRes,printf("Can't update id=%d\n",2);gotoerror;);pRes=xdb_exec(pConn,"SELECT id,name,age,class,score from student WHERE id = 2");printf(" select %d rows\n ",(int)pRes->row_count);while(NULL!=(pRow=xdb_fetch_row(pRes))){xdb_print_row(pRes->col_meta,pRow,0);printf("\n");}xdb_free_result(pRes);
printf("\n=== Delete id = 3\n");pRes=xdb_exec(pConn,"DELETE FROM student WHERE id = 3");XDB_RESCHK(pRes,printf("Can't delete id=%d\n",3);gotoerror;);pRes=xdb_exec(pConn,"SELECT * from student WHERE id = 3");printf(" select %d rows\n",(int)pRes->row_count);while(NULL!=(pRow=xdb_fetch_row(pRes))){xdb_print_row(pRes->col_meta,pRow,0);printf("\n");}xdb_free_result(pRes);
printf("\n=== Rollback\n");xdb_begin(pConn);printf(" update age=15 for id = 2\n");pRes=xdb_exec(pConn,"UPDATE student set age=15 WHERE id = 2");pRes=xdb_exec(pConn,"SELECT id,name,age from student WHERE id = 2");printf(" select %d rows: ",(int)pRes->row_count);if(NULL!=(pRow=xdb_fetch_row(pRes))){xdb_print_row(pRes->col_meta,pRow,0);printf("\n");}xdb_free_result(pRes);printf(" -- rollback\n");xdb_rollback(pConn);pRes=xdb_exec(pConn,"SELECT id,name,age from student WHERE id = 2");printf(" select %d rows: ",(int)pRes->row_count);if(NULL!=(pRow=xdb_fetch_row(pRes))){xdb_print_row(pRes->col_meta,pRow,0);printf("\n");}xdb_free_result(pRes);
printf("\n=== Commit\n");xdb_begin(pConn);printf(" update age=15 for id = 2\n");pRes=xdb_exec(pConn,"UPDATE student set age=15 WHERE id = 2");pRes=xdb_exec(pConn,"SELECT * from student WHERE id = 2");printf(" select %d rows: ",(int)pRes->row_count);if(NULL!=(pRow=xdb_fetch_row(pRes))){xdb_print_row(pRes->col_meta,pRow,0);printf("\n");}xdb_free_result(pRes);printf(" -- commit\n");xdb_commit(pConn);pRes=xdb_exec(pConn,"SELECT * from student WHERE id = 2");printf(" select %d rows: ",(int)pRes->row_count);if(NULL!=(pRow=xdb_fetch_row(pRes))){xdb_print_row(pRes->col_meta,pRow,0);printf("\n");}xdb_free_result(pRes);
crossdb$makeexample===Selectall7rows
id=1name='jack'age=10class='3-1'score=90.000000info=''id=2name='tom'age=11class='2-5'score=91.000000info=''id=3name='jack'age=11class='1-6'score=92.000000info=''id=4name='rose'age=10class='4-2'score=90.000000info=''id=5name='tim'age=10class='3-1'score=95.000000info=''id=6name='Tony'age=10class='3-1'score=95.000000info='He is a boy.He likes playing football.We all like him!'id=7name='Wendy'age=10class='3-1'score=95.000000info='She is a girl.She likes cooking.We all love her!'===Updateage=9forid=2select1rows
id=2name='tom'age=9class='2-5'score=91.000000
id=2name='tom'age=9class='2-5'score=91.000000
id=2name='tom'age=9class='2-5'score=91.000000
===Deleteid=3select0rows===AGGCOUNT,MIN,MAX,SUM,AVG
---select1rows
COUNT(*)=6MIN(score)=90.000000MAX(score)=95.000000SUM(score)=556.000000AVG(score)=92.666667
COUNT(*)=6MIN(score)=90.000000MAX(score)=95.000000SUM(score)=556.000000AVG(score)=92.666667
COUNT(*)=6MIN(score)=90.000000MAX(score)=95.000000SUM(score)=556.000000AVG(score)=92.666667
===Rollback
updateage=15forid=2select1rows:id=2name='tom'age=15--rollback
select1rows:id=2name='tom'age=9===Commit
updateage=15forid=2select1rows:id=2name='tom'age=15class='2-5'score=91.000000info=''--commit
select1rows:id=2name='tom'age=15class='2-5'score=91.000000info=''===Muti-Statements
--1stresult:COUNT(*)=6--2ndresult:id=2name='tom'===Enterinteractiveembeddedshell
_______________
/____||__\|_\ _||_
||____________|||||_)||__||||'__/_\/__/__||||_<|_|||____|||(_)\__\__\ |__|||_)|0.8.0
\_____|_|\___/|___/___/_____/|____/crossdb.org
============WelcometoCrossDBShell============<help>:HelpInfo<F1>:Shortcuts
<exit>:Exitshell<TAB>:Autocompletion
XDB>exit