zoukankan      html  css  js  c++  java
  • mysql基础操作记录

    安装mysql

    Mac使用homebrew安装mysql,命令行执行以下命令:brew install mysql

    启动mysql服务

    安装完成后执行start 命令。

    ➜  ~ mysql.server start
    Starting MySQL
    . SUCCESS!
    

    连接数据库

    命令行方式

    默认用户是root,密码为空。

    ➜  ~ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 2
    Server version: 5.7.12 Homebrew
    
    Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql>
    

    JDBC方式

    导入JDBC jar包

    通过maven方式引入
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
    </dependency>
    
    下载后,add进项目

    可以直接在mysql官网下载jar包,复制在项目里面,然后添加进依赖即可。

    连接mysql

    package com.test.jdbc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class DBhelper{
        public static void main (String[] args){
            try{
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
                conn.close();
            } catch(SQLException e){
                e.printStackTrace();
            }
        }
    }
    

    数据库操作

    数据库操作指令

    1. 创建:create database test_db;
    2. 查询数据库:show databases;
    3. 删除数据库:drop test_db;

    增删改查操作指令

    命令行方式

    插入数据
    insert into 表名 (列名....) values (数据....);
    
    删除数据,不添加where条件会清楚整个表的数据
    delete from 表名 where 条件;
    
    更新数据,修改id为9的内容name为空
    update 表名 set name='' where id=9;
    
    查询数据
    select * from table;
    
    select 列名 from table;
    
    select * from table where id = 9;
    
    select * from table order by id;
    
    连表查询
    select t.id, tt.name from table1 as t inner join table2 as tt on t.id = tt.u_id;
    

    JDBC操作增删改查

    更新数据

    插入,更新和删除都是对数据的更新操作,用相同的方法,只是传入的sql语句不同。

    package com.test.jdbc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class TransactionTest {
        public static String url = "jdbc:mysql://localhost:3306/test";
        public static String user = "root";
        public static String password = "";
        public static String driverName = "com.mysql.jdbc.Driver";
    
        public static Connection getConnection() {
            Connection conn = null;
            try {
                Class.forName(driverName);
                conn = DriverManager.getConnection(url, user, password);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return conn;
        }
    
        public static void update(String sql) {
            Connection conn = getConnection();
            try {
                Statement st = conn.createStatement();
                int count = st.executeUpdate(sql);
                System.out.println("更新了 " + count + " 条数据");
                st.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
        }
    }
    

    查询数据

    package com.test.jdbc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class DBHelper {
        public static final String url = "jdbc:mysql://127.0.0.1/test";
        public static final String name = "com.mysql.jdbc.Driver";
        public static final String user = "root";
        public static final String password = "";
    
        Connection conn;
        PreparedStatement pst;
        ResultSet ret;
    
        private void ConnectionDB() {
            try {
                Class.forName(name);
                conn = DriverManager.getConnection(url,user,password);
                pst = conn.prepareStatement("select * from myclass;");
                ret = pst.executeQuery();
                int col = ret.getMetaData().getColumnCount();
                while (ret.next()) {
                    for (int i = 1; i <= col; i++) {
                        System.out.print(ret.getString(i) + "	");
                        if ((i == 2) && (ret.getString(i).length() < 8)) {
                            System.out.print("	");
                        }
                     }
                    System.out.println("");
                }
                ret.close();
                pst.close();
                conn.close();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            DBHelper dbHelper = new DBHelper();
            dbHelper.ConnectionDB();
        }
    }
    

    JDBC处理事务

    事务是为了保证数据的一致性,要么事务中的数据操作语句都成功,失败的话立即回滚。

    package com.test.jdbc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class TransactionTest {
        public static String url = "jdbc:mysql://localhost:3306/test";
        public static String user = "root";
        public static String password = "";
        public static String driverName = "com.mysql.jdbc.Driver";
    
        public static Connection getConnection() {
            Connection conn = null;
            try {
                Class.forName(driverName);
                conn = DriverManager.getConnection(url, user, password);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return conn;
        }
    
        public static void update(String sql) {
            Connection conn = getConnection();
            try {
                Statement st = conn.createStatement();
                int count = st.executeUpdate(sql);
                System.out.println("更新了 " + count + " 条数据");
                st.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
        }
    
        public static void rollbackTest() {
            Connection conn = getConnection();
            try {
                conn.setAutoCommit(false);
                Statement st = conn.createStatement();
                st.executeUpdate("insert into Websites values (8,'tutu','url',99,'CN')");
                st.executeUpdate("insert into access_log values ()");
                conn.commit();
                st.close();
            } catch (SQLException e) {
                try {
                    conn.rollback();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
                e.printStackTrace();
            } finally {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
        public static void main(String[] args) {
            rollbackTest();
        }
    
    }
    
  • 相关阅读:
    c++ 视频和教程下载站点
    SQL超时解决方法
    初学者必备:C++经典入门详细教程
    人生致命的八个经典问题
    字长与字节
    typedef用法(三)
    遍历搜索注册表
    数据库连接字符串大全 之 SQL服务器篇
    十五个步骤收获学习的习惯
    谈基于.net平台windows开发中的模式窗体.NET教程,.NET Framework
  • 原文地址:https://www.cnblogs.com/xiaomingtx/p/5757183.html
Copyright © 2011-2022 走看看