学习内容:
MySQL(三)
前言
学习 JAVA 大数据:“钱”景无限
文章目录
一:DQL,DML,DDL,DCL的概念和区别
二:JDBC
一:DQL,DML,DDL,DCL的概念和区别
1.1: SQL(Structured Query Language)语言
是数据库的结构化查询语言,也是数据库放入核心语言,自1974年开始,最后又美国的ANSI组织宣布sql作为数据库工业标准;
SQL优势:功能强,高效性,简单易维护;
1.2: SQL分类
SQL分为四大类:
a.数据查询语言:DQL (Data Query Language)
数据查询语言:DQL
数据查询语言基本结构由select子句,from子句,where子句组成的查询块;
Select(字段名表)
From(表或视图名)
Where(条件)
b.数据操纵语言:DML (Data Manipulation Language)
数据操纵语言DML 主要有三种形式:
- 插入: insert
- 更新:update
- 删除:delete
c. 数据定义语言:DDL (Data Definition Language)
数据定义语言DDL用来创建数据库中的各种对象:表或视图或索引或同义词或聚簇
Create table/view/index/syn/cluster
d.数据控制语言:DCL (Data Control Language)
数据控制语言DCL用来授权或回收数据库的某种特权,并控制数据库操作事物发生的时间和效果,对数据库进行某种监控(监视)
1: GRANT :授权
2: ROOLBACK [WORK]TO [SAVEPOINT]:回滚到某个点
回滚 -- ROOLBACK
回滚命令是数据库状态回到上次最后提交的状态,其格式为SQL->ROOLBACK
3:COMMENT[WORK]:提交
3.1 显示提交
SQL -> COMMIT
3.2 隐式提交(了解)
部分SQL是自带隐式提交:
Alter,EXIT,CREATE,QUIT ......
3.3 自动提交
把数据库的AUTOCOMENT设置为on,则数据库操作(插入以及修改和删除)语句执行后系统将自动进行提交,其格式为: SQL-> SET AUTOCOMMIT ->ON
二:JDBC
a.定义:
Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API,
换句话说:JDBC是用于在Java语言编程中与数据库连接的API
在Java代码中如果要访问MySQL,只需要引入JDBC驱动就行,这里我们导入:mysql-connector-java-8.0.20.jar
右键项目名-->Build Path-->Configure Build Path-->Libraries-->Add External JARs.....-->选择mysql-connector-java-8.0.20.jar-->Apply and Close
JDBC库包括通常与数据库使用相关,如下面提到的每个任务的API -
- 连接到数据库
- 创建SQL或MySQL语句
- 在数据库中执行SQL或MySQL查询
- 查看和修改结果记录
b.常见的JDBC组件:
JDBC API提供以下接口和类 -
DriverManager
:此类管理数据库驱动程序列表。 使用通信子协议将来自java应用程序的连接请求与适当的数据库驱动程序进行匹配。在JDBC下识别某个子协议的第一个驱动程序将用于建立数据库连接。Driver
:此接口处理与数据库服务器的通信。我们很少会直接与Driver
对象进行交互。 但会使用DriverManager
对象来管理这种类型的对象。 它还提取与使用Driver
对象相关的信息。Connection
:此接口具有用于联系数据库的所有方法。 连接(Connection
)对象表示通信上下文,即,与数据库的所有通信仅通过连接对象。Statement
:使用从此接口创建的对象将SQL语句提交到数据库。 除了执行存储过程之外,一些派生接口还接受参数。ResultSet
:在使用Statement
对象执行SQL查询后,这些对象保存从数据库检索的数据。 它作为一个迭代器并可移动ResultSet
对象查询的数据。SQLException
:此类处理数据库应用程序中发生的任何错误。
举例:1:加载jdbc(java数据库连接)驱动--> 2:创建数据库的连接--> 3:创建处理器 --> 4:准备sql --> 5:执行sql--> 6:释放资源
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Demo01 {
public static void main(String[] args) {
//1:加载jdbc(java数据库连接)驱动
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("加载jdbc成功");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*
* 2:创建数据库的连接
*/
/*
* url:mysql的主机地址+端口号等信息
* 示例:jdbc:mysql://localhost:3306/db2
* jdbc:mysql://是jdbc连接mysql的协议
* localhost是msyql的主机地址
* 3306是mysql的端口
* db2是数据库
*
* username: 登录的用户名
* password: 登录的密码
*/
String url =
"jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8";//
String user="root";
String password="root";
//外面定义为null,里面重新赋值
Connection con = null;
try {
// 给con重新赋值
con =
DriverManager.getConnection(
url,
user,
password);
System.out.println("连接数据库ok");
} catch (SQLException e) {
System.out.println("连接数据库失败");
e.printStackTrace();
}
/*
* String URL="jdbc:mysql://localhost:3306/jdbc01
* ?useUnicode=true&characterEncoding=utf8
* &characterEncoding=utf8
* &serverTimezone=GMT%2B8
* GMT%2B8 其实是GMT+8 是中国时间,
* GMT+8经过url编码就是GMT%2B8
* &useSSL=false"
*/
/*
* 3:创建处理器
*/
Statement stat = null;//外面定义stat为null
try {
//里面重新给stat赋值
stat = con.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//4:准备sql
String sql =
"insert into testjdbc values("
+ "2"
+ ",'小张'"
+ ");";
String sql2 = "select * from testjdbc";
//5:执行sql
try {
boolean flag = stat.execute(sql);
boolean flag2 = stat.execute(sql2);
System.out.println(flag);
System.out.println(flag2);
/*
* 如果执行的sql是更新数据则返回false,
* 如果是查询则返回true
*/
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//6:释放资源
try {
stat.close();//关闭传输器
con.close();//关闭链接
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}