private void createTable(String table, List<ModelColumn> columns, boolean isAdditionalTable) throws SQLException {
        final var columnDefinitions = new ArrayList<String>();
        columnDefinitions.add(ID_COLUMN + " VARCHAR(512)" + (!isAdditionalTable ? " PRIMARY KEY" : ""));
        if (!isAdditionalTable) {
            columnDefinitions.add(TABLE_COLUMN + " VARCHAR(512)");
        }
        columns
            .stream()
            .map(this::getColumnDefinition)
            .collect(toCollection(() -> columnDefinitions));

        final var sql =
            new SQLBuilder("CREATE TABLE IF NOT EXISTS " + table)
                .append(columnDefinitions.stream().collect(joining(", ", " (", ");")));

        executeSQL(sql);
    }
JDBC table installer, uses standard SQL to create tables, indices, and views.
oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/JDBCTableInstaller.java