MySQL与JDBC(一)

3 篇文章 0 订阅
2 篇文章 0 订阅

SQL语法基础:

       Structured Query language:结构化查询语言。通常与数据库的通信,是关系型数据库的一种标准语言。

SQL的分类:

DML:数据操作语言  

DDL:数据定义语言

DCL:数据库控制语言

TCL:事务控制语言

      

Oracle11G/12C:

MYSQL: 小型关系型数据库。体积小,速度快,开发成本低,源码开发

常用命令:

Show databases查看所有数据库

Create database name; 创建数据库

数据类型:

       int 整型 默认11位

       varchar: 字符串

       date 日期 2019-08-12

       datatime: 全时间 2019-08-12 11:45:55

       float 单精度浮点类型

       double 双精度浮点类型

创建表的语法:

       CREATE table stu(

       s_id int,

       s_name varchar(30),

       s-sex varchar(2)

);

表名不与系统定义的名称冲突

每行字段(列)结尾都以英文逗号未结束

 

//查看表

Select *from stu;

Select id name,sex from stu;

//表增加一列

Alter table 表名

Add column 列名(字段名)数据类型

Alter table stu

Add column saddr varchar(200)

//表删除一列

Alter table stu

Drop column saddr

//修改列的属性

Alter table 表名

Change column 原列名 修改后列名 数据类型

 

主键约束:

  能够确保按照主键的列找到唯一的一行(要求:不能为空,且内容唯一)

 

 

Drop database 数据库名 //删除库

Drop table 表名   //删除表结构

Delete from 表名   //删除表数据

 

//修改数据

Update 表名 set  列名/字段名 = 修改后的值    “修改后的字符串”

 

Update 表名 set  列名/字段名 =“”  where  id/  = “ “  //where 后边为条件

 

 

//起别名   

 

Select 原名称 as 新名称,

去冗余   

Select distinct  (表项名 ) from 表名

 

 

Like  模糊查询

      % :代表零个或多个

    _ :  代表一个

Select *from stu3 where name like  “%小%”

                                                        “_%小”  第二位是‘’小‘’ 字的

 

Limit m,n: 从第m个数据查,查询n条

Select * from stu3 where sage = 28 limit  2,2

//排序

Select * from stu3 Order by age (默认升序排列)+(desc)(倒序)

 

Select name from stu3 group by sname having sage >select avg(sage)

 

统计函数  

Count sum max min

 

 

主外键有联系时先创建主表后创建从表   从表字段关联主表的字段,删除时先删除从表后删除主表

 

 

 

连接查询:

       内连接:select * from tableName1,tableName2 where tableName1.field = tableName.field

例子:

SELECT * FROM stu3 ,lesson,course WHERE stu3.sid = lesson.lsid and course.cid = lesson.lcid

       外连接(左外/右外)

   

 

数据库:

1 保存数据

2 管理数据(增删改查)

 

JDBC: java 数据库连接技术

       1 加载驱动

       2 获取链接

       3 进行操作

       4 关闭链接

 

package JDBC_Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 测试驱动类
 */
public class test_jdbc {
    public static void main(String[] args) {
        Connection conn = null;
        try {
            //加载驱动类
            Class.forName("com.mysql.cj.jdbc.Driver");
             conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","19990908");

            //建立连接(内部包含Socket对象,是一个远程单连接,较为耗时)
           //真正开发中为提高效率会用连接池来管理连接对象
            //测试statement
              Statement stm = conn.createStatement();
//            String sql = "insert  into user(name ) values ('leikuan')";
//            stm.execute(sql);

             //测试SQL注入  避免使用statement
            String sql = "delete from user where id = 2";
            stm.execute(sql);

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }


    }
}
package JDBC_Test;

import com.mysql.cj.protocol.Resultset;

import java.sql.*;
//关闭顺序 (分开写)resultset-->PreparedStatement-->Connection
public class ResultSet_test {
    public static void main(String[] args)   {
        Connection conn = null;
        PreparedStatement pst =null;
        ResultSet rs = null;
        try {
            //加载驱动类
            Class.forName("com.mysql.cj.jdbc.Driver");
              conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","19990908");
         String sql = "insert  into  user(id,name ) values (?,?)";// ? -->占位符
             String sql = "select * from user  where id>?";
              pst = conn.prepareStatement(sql);
            pst.setObject(1,2);
             rs  = pst.executeQuery();
            while (rs.next()){
                System.out.println(rs.getInt(1)+"  "+rs.getString(2));
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {

            if(rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(pst!=null){
                try {
                    pst.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }


    }
}
package JDBC_Test;

import java.sql.*;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;


public class TestDatetime {
    public static long str2date (String dateStr){
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        try {
            return format.parse(dateStr).getTime();
        } catch (ParseException e) {
            return 0;
        }

    }
    public static void main(String[] args) throws SQLException {
        PreparedStatement ps = null;
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC", "root", "19990908");

            ps = conn.prepareStatement("select * from user1 where date >?and date <?");
            java.sql.Date start  = new java.sql.Date(str2date("2019-8-4 10:26:33"));
            java.sql.Date end  = new java.sql.Date(str2date("2019-8-11 10:26:33"));
           ps.setObject(1,start);
           ps.setObject(2,end);

           rs = ps.executeQuery();
           while (rs.next()){
               System.out.println(rs.getInt("id")+"-->"+rs.getString("name")+"--"+rs.getDate("date"));
           }
package JDBC_Test;

import java.sql.*;

//批量操作。
public class batch_test {
    public static void main(String[] args)   {
        Connection conn = null;
         Statement stmt =null;
         ResultSet rs = null;
        try {
            //加载驱动类
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school?serverTimezone=UTC","root","19990908");
 
            String sql = "select * from stu";
            stmt = conn.createStatement();
            
              conn.setAutoCommit(false);
              long start= System.currentTimeMillis();
              stmt = conn.createStatement();

              for (int i = 9;i<20000;i++){
                  stmt.addBatch("insert into user (id,name) values ("+i+",'lei"+i+"')");
              }
              stmt.executeBatch();
              long end = System.currentTimeMillis();
              conn.commit();//提交事务
            System.out.println("耗时"+(end-start)+"ms");

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {


            if(stmt!=null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值