MySql数据库——表的创建和数据的增删改查(CRUD)

1、建表语句的语法格式

Create table 表名(
字段名1 数据类型,
字段名1 数据类型,
字段名1 数据类型,

);

关于MySql当中字段的数据类型?

Int 整数型 (java中的int)
Bigint 长整型 (java中的long)
Float 浮点型 (java中的float和double)
Char 定长字符串 (java中的String)

Varchar 可变长字符串(StringBuffer / StringBuilder)(最多存储255个字符)

Date 日期类型(对应java中的java.sql.Date)

BLOB(Binary Large OBject) (java中的OBject)
二进制大对象(存储图片,视频等流媒体信息)

CLOB(Character Large OBject) (java中的OBject)
字符大对象(存储较大文本,比如:可以存储4G的字符串。整本小说)

·char和varchar怎么选择?

在实际的开发中,当某个字段中的数据长度不发生改变的时候,是定长的,例如:性别(男、女都是1的定长字符)、生日(1997-06-28都是10的定长字符)等都是采用char。

当一个字段的数据长度不确定,例如:简介、姓名等都是采用varchar(会自动智能分配所需内存),但没有char效率高。

表名在数据库当中一般建议以:t_或者tbl_开始。

·创建学生表:

	学生信息包括:
		学号、姓名、性别、班级编号、生日
		学号:bigint
		姓名:varchar
		性别:char
		班级编号:int
		生日:char / date
	
	create table t_student(
		no bigint,
		name varchar(255),
		sex char(1) ,
		classno varchar(255),
		birth char(10)
	);

在这里插入图片描述

2、insert语句插入数据

语法格式:

Insert into 表名(字段名1,字段名2,字段名3,…)values(值1,值2,值3,…)

  • 要求:字段的数量和值的数量相同,并且数据类型要对应相同。

例:
mysql> insert into t_student(no,name,sex,classno,birth)values(1,‘sgx’,‘M’,‘gaosan1ban’,‘1997-06-28’);
在这里插入图片描述

Drop table if exists t_student; //删表,当这个表存在的话删除

·建表时插入默认值:

create table t_student(
		no bigint,
		name varchar(255),
		sex char(1) **default 1**,
		classno varchar(255),
		birth char(10)
	);

在这里插入图片描述

插入默认值后再插入数据,如果sex字段没有插入数据,会自动插入默认值。

insert into t_student(name) values (‘zhangsan’);

注意:
当一条insert语句执行成功之后,表格当中必然会多一行记录。即使多的这一行记录当中某些字段是NULL,后期也没有办法在执行insert语句插入数据了,只能使用update进行更新。

第二种insert语句插入数据写法

insert into t_student values(2,‘sgx’,0,‘gaosan2ban’,1997-06-28);
可以省略values前面的括号内的字段,但values后面的数据必须和表格每个字段一一对应,数量也不能少!

·一次插入多行数据(用逗号隔开即可插入多行数据)
Insert into t_student
values
(3,‘zr’,0,‘gaosan2ban’,1999-09-04),(4,‘zyq’,0,‘gaosan9ban’,1999-12-11);

3、表的复制

语法:
Create table 表名 as select语句;

将查询结果当做表创建出来。

create table
emp1
as
select * from emp;
在这里插入图片描述

create table
emp2
as
select empno,ename from emp;
在这里插入图片描述

4、将查询结果插入到一张表中(列数必须一样才能插入)

insert into
dept1
select * from dept;
在这里插入图片描述

5、修改表中的数据:update

语法格式:
Update 表名
set
字段名1=值1,字段名2=值2…
where条件;

注意:没有where条件的话整张表数据全部更新。

例:将部门10的LOC修改为SHANGHAI,将部门名称修改为RENSHIBU。

update dept1
set
loc = ‘SHANGHAI’,dname = ‘RENSHIBU’
where
deptno = 10;
在这里插入图片描述

例:更新所有记录(不加约束条件就会全部更新)
update dept1
set
loc = ‘x’, dname = ‘y’;

6、删除表中的数据

语法格式:
Delete from表名 where条件;

注意:没有条件全部删除。

例:删除10部门数据

delete from dept1 where deptno = 10;
在这里插入图片描述

例:删除所有记录

Delete from dept1;
在这里插入图片描述

  • 删除比较大的表中的数据?(重点)
  • truncate table emp1;

注意:使用truncate后,表被截断(删除数据,留下表头),不可回滚,永久丢失!谨慎使用。

- ·删除表?

  1. Drop table 表名 ; //这个通用
  2. Drop table if exists; //表被截断,不可回滚。永久丢失

7、对表结构的修改

使用工具完成即可,因为在实际开发中表一旦设计好之后,对表结构的修改是很少的,修改表结构就是对之前的设计进行了否定,即使需要修改表结构,我们也可以直接使用工具操作。修改表结构的语句不会出现在Java代码当中。

出现在java代码当中的sql包括:insert delete update select(这些都是表中的数据操作。)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的接口本身并不能记录MySQL数据的变化,但是您可以在实现接口的类中使用JDBC或ORM框架来访问MySQL数据库并记录数据的变化。以下是使用JDBC记录MySQL数据变化的示例代码: 首先,您需要在您的Java项目中添加MySQL JDBC驱动程序(例如mysql-connector-java)依赖项。 然后,您可以定义一个接口,其中包含用于执行CRUD操作(创建、读取、更新、删除)的方法,如下所示: ``` public interface MyInterface { void createRecord(String name, int age); ResultSet readRecords(); void updateRecord(int id, String name, int age); void deleteRecord(int id); } ``` 接下来,您可以创建一个实现该接口的类,并使用JDBC连接到MySQL数据库并执行相应的操作。以下是示例实现: ``` import java.sql.*; public class MyImplementation implements MyInterface { private Connection conn; public MyImplementation() { try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password"); } catch (Exception e) { e.printStackTrace(); } } @Override public void createRecord(String name, int age) { try { PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (name, age) VALUES (?, ?)"); ps.setString(1, name); ps.setInt(2, age); ps.executeUpdate(); ps.close(); } catch (Exception e) { e.printStackTrace(); } } @Override public ResultSet readRecords() { ResultSet rs = null; try { Statement stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT * FROM mytable"); } catch (Exception e) { e.printStackTrace(); } return rs; } @Override public void updateRecord(int id, String name, int age) { try { PreparedStatement ps = conn.prepareStatement("UPDATE mytable SET name = ?, age = ? WHERE id = ?"); ps.setString(1, name); ps.setInt(2, age); ps.setInt(3, id); ps.executeUpdate(); ps.close(); } catch (Exception e) { e.printStackTrace(); } } @Override public void deleteRecord(int id) { try { PreparedStatement ps = conn.prepareStatement("DELETE FROM mytable WHERE id = ?"); ps.setInt(1, id); ps.executeUpdate(); ps.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在该实现中,我们使用JDBC连接到MySQL数据库,并实现了接口中的四个方法来执行相应的CRUD操作。您可以根据需要在这些方法中添加日志记录或其他操作,以记录MySQL数据的变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值