java —— MySQL 操作

时间:2025-02-16 18:24:54

一、常用 MySQL 语句

(一)创建数据库

 create database 数据库名;

例如:创建一个名为 hello 的数据库

create database hello;

 注:如果起初没有任何数据库,那么在建立连接的时候,地址 String address="jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC"; 里蓝色数据库的位置可以省略。等待数据库建立之后,再将其补上,即可建立与该数据库的连接。

(二)创建表

create table 表名 (第一列名称  第一列类型,第二列名称  第二列类型……);

例如:创建一个名为 user 的表,表内三列,分别是 int 类型的 id,varchar(10)类型的 username 和 varchar(10)类型的 userpassword

create table User (id int,username varchar(10),userpassword varchar(10));

(三)给表添加列

 alter table 表名 add 列名 列类型;

例如:给 user 表添加一个 varchar(10) 类型的 phoneNumber 列

alter table user add phoneNumber varchar(10);

(四)添加行数据

 insert into 表名 (列名1,列名2……) values (值1,值2……);

例如:给 user 表添加 id 为 7,username 为 Tom,userpassword 为 123 的一行数据

insert into user (id,username,userpassword) values (7,"Tom","123");

(五)更新数据

 update 表名 set 列名1=值1,列名2=值2…… where 条件;

例如:把 user 表中第 7 行的 username 改为 Jerry,userpassword 改为 258

update user set username="Jerry",userpassword="258" where id=7;

(六)删除整行数据

 delete from 表名 where 条件;

例如:删除 user 表中 id 为 7 的一行

delete from user where id=7;

(七)删除表

 drop table 表名;

例如:删除 user 表

drop table user;

(八)删除数据库

drop database 数据库名;

例如:删除 hello 数据库

drop database hello;

(九)查询

 ① 查询所有

select * from 表名;

例如:查询 user 表的所有数据

select * from user;

② 有条件查询

 select 列名1,列名2  from 表名 where 条件;

例如:查询 user 表中 id 为 7 的 username 和userpassword

select username,userpassword from user where id=7;

二、Statement

Statement 是建立在 java 与 MySQL 连接上的一个接口,用以执行 MySQL 语句。

(一).execute(sql语句)

返回一个布尔值,true 表示此次操作产生了一个结果集,false 表示此次操作没有产生结果集。

Statement stm=();
boolean x=("update user set username='Jerry',userpassword='258' where id=7;");
boolean y=("select * from user");

本案例中,x 等于 false,没有产生结果集;y 等于 true,产生了结果集。 

(二).executeUpdate(sql语句)

返回一个int型数值,表示受影响的行数。

Statement stm=();
int x=("update user set username='Jerry',userpassword='258' where id=7;");

本案例中,x 等于 1,表示该操作只影响了 1 行。 

(三).executeBatch()

返回一个int型数组,内容不是 0 就是 1,前者表示执行失败,后者表示执行成功。该方法需要配合 .addBatch(sql语句) 使用。

Statement stm=();
("update user set username='Jerry',userpassword='258' where id=7;");
("insert into user (id,username,userpassword) values (8,"Tom","147");");
int[] xarr=();
for(int x:xarr)
{(x);}

(四).executeQuery(sql语句)

返回一个 ResultSet 结果集。

Statement stm=();
ResultSet rs=("select * from user;");

三、ResultSet 结果集

(一)移动游标

Statement stm=();
ResultSet rs=("select * from user");
();           //将游标移动至下一行
();       //将游标移动至上一行
();          //将游标移动至第一行
();           //将游标移动至最后一行
(5)       //将游标移动至第5行
(-2)      //将游标向上移动2行

 默认游标指向第 0 行,所以即使结果集里只有一个数据,也要移动游标才能获得。

(二)获取值

Statement stm=();
ResultSet rs=("select * from user");
while(())
{
int id=("id");                     //获取id值
String name=("username");       //获取username值
String pwd=("userpassword");    //获取userpassword值
}

//括号内的参数除了用列名之外,还可以用列索引,从1开始

(三)获取行号

Statement stm=();
ResultSet rs=("select * from user");
();
int x=();            //获取行号,此时行号显然为 1

(四)获取列信息

Statement stm=();
ResultSet rs = ("select * from user;");
ResultSetMetaData metaData = ();
//引入ResultSetMetaData,ResultSetMetaData是获取ResultSet对象元数据信息的接口

int columnCount = ();   //一共多少列

for (int i = 1; i <= columnCount; i++) 
{
   String columnName = (i);        //获取第i列的列名
   String columnType = (i);    //获取第i列的类型
   ("列名: " + columnName + ", 类型: " + columnType);
}

(五)判断上次取值是否为空

Statement stm=();
ResultSet rs = ("select * from user;");
();
boolean x=();       //判断上次取值是否是空

(六)关闭结果集

();          //关闭结果集并释放资源

四、在 java 中保存 MySQL 数据

① 建立一个对象类,表中每一行都是一个对象

public class User {

	int id;
	String username;
	String userpassword;
	
	public User(int id,String username,String userpassword) {
		=id;
		=username;
		=userpassword;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		 = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		 = username;
	}

	public String getUserpassword() {
		return userpassword;
	}

	public void setUserpassword(String userpassword) {
		 = userpassword;
	}
}

② 声明一个该对象类型的 ArrayList 数组,并通过构造方法将每个对象实例化,然后用 ArrayList 的 .add() 方法将实例化后的对象添加进 ArrayList 数组

import ;
import ;
import ;
import ;
import ;

public class Test {

	public static void main(String[] args) {
		
		Connection conn=();
		Statement stm=null;                                //声明一个空的statement对象
		ResultSet userset=null;                            //声明一个空的resultset对象
		try 
		{
			stm=();
			String sql="select * from userlogin";
			userset=(sql);                 //查询结果放入ResultSet结果集
			ArrayList<User> userlist=new ArrayList<User>();      //声明user型动态数组
			
			while(())
			{
			int id=(1);
			String username=(2);   //循环获取每一行的id、username、userpassword
			String userpassword=(3);
			
			User u=new User(id,username,userpassword);   //通过构造方法实例化每个对象
			(u);				             //将对象挨个添加到动态数组中
			}
			
			for(User u:userlist)
			{
				(()+"\t");
				(()+"\t");      //遍历
				(());
			}
		} 
		catch (SQLException e) 
		{
			();
		}
		finally
		{
			try 
			{
				();
				();                //关闭statement接口
				();               //关闭conn连接
			} 
			catch (SQLException e) 
			{
				();
			}
		}
	}
}