MySql
1、初识MySQL
1.1什么是数据库DB
存储数据,管理数据
1.2、数据库分类
关系型数据库:行和列
- MySQL,Oracle,SQLserver
- 通过表和表之间,行和列之间的关系进行储存
非关系数据库:
- Redis,MongoDB
- 非关系型数据库,对象存储,通过对象自身属性来决定
DBMS数据库管理系统
- 数据库的管理软件,科学有效管理数据
- MySQL
1.3MySQL简介
关系型数据库管理系统
1.4、连接数据库
命令行连接
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
mysql -uroot -p123456 --连接
show databases; --查看所有数据库
describe student;--显示库中所有表的信息
create database ceshi;--创建新的数据库
exit;--退出链接
2、操作数据库
2.1、操作数据库
- 创建数据库
- 删除数据库
- 使用数据库
- 查看数据库
2.2、数据库列类型
数值
字符串
时间日期 java.util.Date
null
2.3、数据库的字段属性
2.4、创建数据库表
2.5、数据表的类型
3、事务
事物原则:ACID,原子性,一致性,隔离性,持久性
原子性:
要么都成功,要么都失败
一致性:
事务前后的数据完整性要保持一致
持久性:
事务一旦提交则不可逆,被持久化到数据中
隔离性:
是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,所以要隔离
隔离所导致的一些问题
脏读:
指一个事务读取了另外一个事务未提交的数据
不可重复读:
在一个事务内读取表中的某一行数据,多次读取结果不同(不一定是错误,只是某些场合不对)
虚读:
指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致
4、索引
-
主键索引
- 唯一标识,不可重复
-
唯一索引
- 避免重复的列出现
-
常规索引
- 默认的,index,key
-
全文索引
- 特定的数据库引擎下才有
5、JDBC
5.1、数据库驱动
5.2、JDBC
5.3、第一个JDBC程序
Add as Library...
package com.rtt.lesson01;
import java.sql.*;
public class JdbcFirstDemo {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.用户信息和url
String url="jdbc:mysql://localhost:3306/jdbcStudy?useUnicode=true&characterEncoding=utf8&useSSL=false";
String username="root";
String password="123456";
//3.连接成功,数据库对象 Connection代表数据库
Connection connection = DriverManager.getConnection(url, username, password);
//4.执行SQL对象 Statement执行sql对象
Statement statement = connection.createStatement();
//5.执行sql对象
String sql="select * from users";
ResultSet resultSet = statement.executeQuery(sql);//返回的结果集
while(resultSet.next()){
System.out.print("id="+resultSet.getObject("id")+" ");
System.out.print("name="+resultSet.getObject("NAME")+" ");
System.out.print("pwd="+resultSet.getObject("PASSWORD")+" ");
System.out.print("email="+resultSet.getObject("email")+" ");
System.out.println("birth="+resultSet.getObject("birthday"));
}
//6.释放连接
resultSet.close();
statement.cancel();
connection.close();
}
}
- 加载驱动
- 连接数据库DriverManager
- 获得执行sql的对象 statement
- 获得返回结果集
- 释放连接
5.4、sql注入问题
5.5、PreparedStatement对象
插入
public class TestInsert {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement st = null;
try {
conn = JdbcUtils.getConnection();
String sql="insert into users(id,NAME,PASSWORD,email,birthday)values(?,?,?,?,?)";
st=conn.prepareStatement(sql);
st.setInt(1,4);
st.setString(2,"rtt");
st.setString(3,"123432");
st.setString(4,"fasfajkl@qq.com");
st.setDate(5,new java.sql.Date(new Date().getTime()));
int i=st.executeUpdate();
if(i>0){
System.out.println("插入成功");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.release(conn,st,null);
}
}
}
查询
public class TestSelect {
public static void main(String[] args) {
Connection conn=null;
PreparedStatement st=null;
ResultSet rs=null;
try {
conn=JdbcUtils.getConnection();
String sql="select * from users where id=?";
st=conn.prepareStatement(sql);
st.setInt(1,1);
rs=st.executeQuery();
while (rs.next()){
System.out.println(rs.getString("name"));
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
JdbcUtils.release(conn,st,rs);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)