MySQL创建或更改表

时间:2014-01-05 16:08:41

标签: java mysql database alter

我正在使用MySQL 5.1作为我的数据库,我通过Java程序(JBDC)发送命令。 是否有用于创建或更改表的 MySQL 命令? 假设我有一张下表:

+----------+----------+
| column_a | column_b |
+----------+----------+
| value_a  | value_b  |
+----------+----------+

现在我想使用一个命令,如果它不存在则会添加一列“column_c”。 这将导致:

+----------+----------+----------+
| column_a | column_b | column_c |
+----------+----------+----------+
| value_a  | value_b  |          |
+----------+----------+----------+

如果该表不存在,则会创建一个包含指定列的新表

+----------+----------+----------+
| column_a | column_b | column_c |
+----------+----------+----------+

最后,如果表中包含未在命令中指定的列,则保留 未触及

3 个答案:

答案 0 :(得分:1)

这里是Java中的代码,用于创建一个名为Coffees的表:

/*Making the connection*/
try {//if any statements within the try block cause problems, rather than the program failing
         //an exception is thrown which will be caught in the catch block
        con = DriverManager.getConnection(url, "your username", "your password");

        //create a statement object
        stmt = con.createStatement();
        //supply the statement object with a string to execute                          
        stmt.executeUpdate("create table COFFEES (COF_NAME varchar(32), " +
                            "SUP_ID int, PRICE double, SALES int, TOTAL int, " +
                            "primary key(COF_NAME))");

        //close the statement and connection
        stmt.close();
        con.close();

    } catch(SQLException ex) {
        System.err.println("SQLException: " + ex.getMessage());
    }

说明: - 在这个例子中,java程序与位于服务器上的数据库进行交互,因此我们必须首先设置服务器所在位置的URL,并且还要使用用户名和密码登录,您可能没有使用相同的方法我用了。 - 这些需要在java程序的顶部声明:

String url = "jdbc:mysql://www.yoururlexample.co.uk"; 
Connection con;    
Statement stmt

希望这会有所帮助,然后您就可以将数据插入数据库并执行查询。

编辑:

如果您希望创建一个名为“COFFEES”的表,则可以在executeUpdate语句中使用它:

create table if not exists COFFEES

答案 1 :(得分:0)

/*Making the connection*/
try {
         //an exception is thrown which will be caught in the catch block
        con = DriverManager.getConnection("jdbc:mysql:exaple.com", "username", "pass");

        //create a statement object
        stmt = con.createStatement();
        //supply the statement object with a string to execute                          
        stmt.executeUpdate("ALTER TABLE table_name ADD column_name datatype");

        //close the statement and connection
        stmt.close();
        con.close();

    } catch(SQLException ex) {
        System.err.println("SQLException: " + ex.getMessage());
    }

我认为这对你有用。

答案 2 :(得分:0)

这样的东西可能是一个解决方案(这需要表格中至少有一条记录可用):

package com.stackoverflow.so20935793;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class App {

    // complete this:
    private static final String JDBC_URL = ".....";
    private static final String JDBC_USER = ".....";
    private static final String JDBC_PASS = ".....";

    public static void main(final String[] args) {
        Connection con = null;
        PreparedStatement stm = null;
        ResultSet rs = null;

        try {
            con = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS);
            stm = con.prepareStatement("SELECT * FROM your_table LIMIT 1");
            rs = stm.executeQuery();
            if (rs.next() && rs.getMetaData().getColumnCount() == 2) {
                // add your new column
            }
        } catch (final SQLException ex) {
            // handle exception
        } finally {
            closeQuietly(rs);
            closeQuietly(stm);
            closeQuietly(con);
        }
    }

    private static void closeQuietly(final AutoCloseable what) {
        if (what == null) {
            return;
        }

        try {
            what.close();
        } catch (final Exception ex) {
            // ignore
        }
    }
}

(未经测试)