diff --git a/sqlTranslate/.idea/workspace.xml b/sqlTranslate/.idea/workspace.xml
index fb9ca0c35..b0ee1e813 100644
--- a/sqlTranslate/.idea/workspace.xml
+++ b/sqlTranslate/.idea/workspace.xml
@@ -4,16 +4,13 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -279,7 +276,14 @@
1725896687932
-
+
+ 1725937361130
+
+
+
+ 1725937361130
+
+
@@ -306,7 +310,8 @@
-
+
+
diff --git a/sqlTranslate/src/main/java/Document/DropTable in Oracle b/sqlTranslate/src/main/java/Document/DropTable in Oracle
new file mode 100644
index 000000000..a78f4257a
--- /dev/null
+++ b/sqlTranslate/src/main/java/Document/DropTable in Oracle
@@ -0,0 +1 @@
+DROP TABLE _table (CASCADE CONSTRAINTS)?
\ No newline at end of file
diff --git a/sqlTranslate/src/main/java/Document/Insert statement in Oracle b/sqlTranslate/src/main/java/Document/Insert statement in Oracle
new file mode 100644
index 000000000..d45fb273f
--- /dev/null
+++ b/sqlTranslate/src/main/java/Document/Insert statement in Oracle
@@ -0,0 +1,2 @@
+INSERT INTO employees (first_name, last_name, email) VALUES ('Jane', 'Smith', 'janesm@example.com');
+INSERT INTO employees VALUES ('Jane', 'Smith', 'janesm@example.com');
\ No newline at end of file
diff --git a/sqlTranslate/src/main/java/Document/Select statement in Oracle b/sqlTranslate/src/main/java/Document/Select statement in Oracle
index d45fb273f..562fc9275 100644
--- a/sqlTranslate/src/main/java/Document/Select statement in Oracle
+++ b/sqlTranslate/src/main/java/Document/Select statement in Oracle
@@ -1,2 +1,21 @@
-INSERT INTO employees (first_name, last_name, email) VALUES ('Jane', 'Smith', 'janesm@example.com');
-INSERT INTO employees VALUES ('Jane', 'Smith', 'janesm@example.com');
\ No newline at end of file
+SELECT DISTINCT? select_obj FROM select_tab where_clause? select_option? union_clause? ;
+select_obj = * | column* | function
+select_tab = table join_clause?
+select_option = GROUP BY | ORDER BY | HAVING
+function = COUNT() | SUM() | AVG() | MAX() | MIN()
+
+example:
+ SELECT * FROM employees;
+ SELECT employee_id, first_name, last_name FROM employees;
+ SELECT * FROM employees WHERE department_id = 10;
+ SELECT * FROM employees ORDER BY hire_date DESC;
+ SELECT COUNT(*), AVG(salary) FROM employees;
+ SELECT department_id, COUNT(*) FROM employees GROUP BY department_id;
+ SELECT e.first_name, d.department_name FROM employees e JOIN departments d ON e.department_id = d.department_id;
+ SELECT
+ column1,
+ CASE WHEN column2 > 0 THEN 'Positive' ELSE 'Non-positive' END as status,
+ SUBSTR(column3, 1, 5) as substring_column3
+ FROM table_name;
+ SELECT column1, COUNT(column2) FROM table_name GROUP BY column1 HAVING COUNT(column2) > 10;
+
diff --git a/sqlTranslate/src/main/java/Document/Todolist b/sqlTranslate/src/main/java/Document/Todolist
index e5bafb050..bc134a5ef 100644
--- a/sqlTranslate/src/main/java/Document/Todolist
+++ b/sqlTranslate/src/main/java/Document/Todolist
@@ -8,7 +8,7 @@ Operation
update... set
delete
if... elsif... else... end if
- case... when... then
+ case... when... then 1
loop... end loop
while... loop... end loop
for ... in () loop end loop
diff --git a/sqlTranslate/src/main/java/Lexer/OracleLexer.java b/sqlTranslate/src/main/java/Lexer/OracleLexer.java
index 5d5fe81fb..e0f4ef895 100644
--- a/sqlTranslate/src/main/java/Lexer/OracleLexer.java
+++ b/sqlTranslate/src/main/java/Lexer/OracleLexer.java
@@ -17,7 +17,9 @@ public class OracleLexer {
"NOT NULL", "PRIMARY KEY", "UNIQUE", "CHECK", "REFERENCES", "DEFAULT",
"CONSTRAINT", "FOREIGN KEY"
// keywords of drop table
- ,"DROP", "CASCADE", "CONSTRAINTS"
+ , "DROP", "CASCADE", "CONSTRAINTS"
+ // keywords of select
+ , "DISTINCT", "JOIN", "GROUP BY", "ORDER BY", "HAVING", "UNION", "CASE", "WHEN", "END", "AS"
};
private static final Pattern TOKEN_PATTERN = Pattern.compile(
"(NUMBER\\(.*?\\))|" + // NUMBER() function
diff --git a/sqlTranslate/src/main/java/Parser/AST/Select/SelectObjNode.java b/sqlTranslate/src/main/java/Parser/AST/Select/SelectObjNode.java
index 3ceb5140d..a6e22f9b8 100644
--- a/sqlTranslate/src/main/java/Parser/AST/Select/SelectObjNode.java
+++ b/sqlTranslate/src/main/java/Parser/AST/Select/SelectObjNode.java
@@ -9,11 +9,24 @@ public class SelectObjNode extends ASTNode {
public SelectObjNode(List tokens)
{
super(tokens);
+ this.isDistinct = "";
}
public SelectObjNode(ASTNode node)
{
super(node);
+ this.isDistinct = "";
+ }
+
+ private String isDistinct;
+
+ public String getIsDistinct()
+ {
+ return isDistinct;
+ }
+
+ public void setIsDistinct(String isDistinct) {
+ this.isDistinct = isDistinct + " ";
}
@Override
@@ -33,7 +46,7 @@ public class SelectObjNode extends ASTNode {
@Override
public void visit(ASTNode node, StringBuilder queryString)
{
- queryString.append(toString() + " FROM ");
+ queryString.append(isDistinct + toString() + " FROM ");
for (ASTNode child : getChildren())
{
child.visit(child, queryString);