forked from opengaussexamples/examples
add select
This commit is contained in:
parent
ddb4978a32
commit
e9475c0507
|
|
@ -4,16 +4,13 @@
|
|||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="d8d12963-4777-48e3-9669-309cf5e41d60" name="更改" comment="add todolist">
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/Parser/AST/Select/SelectEndNode.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/Parser/AST/Select/SelectNode.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/Parser/AST/Select/SelectObjNode.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/Parser/AST/Select/SelectOptionNode.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/Parser/AST/Select/SelectTableNode.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/Parser/AST/Select/SelectUnionNode.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/Parser/AST/Select/SelectWhereClauseNode.java" afterDir="false" />
|
||||
<list default="true" id="d8d12963-4777-48e3-9669-309cf5e41d60" name="更改" comment="add select">
|
||||
<change afterPath="$PROJECT_DIR$/src/main/java/Document/Insert statement in Oracle" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/Document/Select statement in Oracle" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Document/Select statement in Oracle" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/Document/Todolist" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Document/Todolist" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/Lexer/OracleLexer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Lexer/OracleLexer.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/Parser/AST/Select/SelectObjNode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Parser/AST/Select/SelectObjNode.java" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
|
@ -279,7 +276,14 @@
|
|||
<option name="project" value="LOCAL" />
|
||||
<updated>1725896687932</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="25" />
|
||||
<task id="LOCAL-00025" summary="add select">
|
||||
<created>1725937361130</created>
|
||||
<option name="number" value="00025" />
|
||||
<option name="presentableId" value="LOCAL-00025" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1725937361130</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="26" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
|
|
@ -306,7 +310,8 @@
|
|||
<MESSAGE value="finish the framework of sqltranslate (createTab sql is now being supported!)" />
|
||||
<MESSAGE value="add insert sql" />
|
||||
<MESSAGE value="add todolist" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="add todolist" />
|
||||
<MESSAGE value="add select" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="add select" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<watches-manager>
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
DROP TABLE _table (CASCADE CONSTRAINTS)?
|
||||
|
|
@ -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');
|
||||
|
|
@ -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');
|
||||
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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -9,11 +9,24 @@ public class SelectObjNode extends ASTNode {
|
|||
public SelectObjNode(List<Token> 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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue