this is an oracle sql parser. ref: https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf
| statement | sub statement | yacc | ast | 
|---|---|---|---|
| Alter table | Add column | ✔️ | ✔️ | 
| Alter table | Modify column | ✔️ | ✔️ | 
| Alter table | Drop column | ✔️ | ✔️ | 
| Alter table | Rename column | ✔️ | ✔️ | 
| Alter table | Add constraint | ✔️ | ✔️ | 
| Alter table | Modify constraint | ✔️ | ✔️ | 
| Alter table | Rename constraint | ✔️ | ✔️ | 
| Alter table | Drop constraint | ✔️ | ✔️ | 
| Create table | Relational table | ✔️ | ✔️ | 
| Create index | Relational table | ✔️ | |
| Drop table | - | ✔️ | ✔️ | 
| Drop index | - | ✔️ | ✔️ | 
package main
import (
	"fmt"
	"github.com/sjjian/oracle-sql-parser"
	"github.com/sjjian/oracle-sql-parser/ast"
)
func main() {
	stmts, err := parser.Parser("alter table db1.t1 add (id number, name varchar2(255))")
	if err != nil {
		fmt.Println(err)
		return
	}
	stmt := stmts[0]
	switch s := stmt.(type) {
	case *ast.AlterTableStmt:
		fmt.Println(s.TableName.Table.Value) // t1
	}
}