2。练习
1。account表 添加一条记录
2。
2。练习
1。account表 添加一条记录
2。
Statement:用于执行sql语句
1、执行sql
1.boolean execute(String sql)
2、int exeuteUpdate(String sql):
执行DML(insert、update、delete,增删改)语句、DDL(create ,alter,drop)语句
*返回值 :影响的行的数,可以通过这个影响的行数判断DML的语句是否执行成功,返回值>0的则执行成功,反之,则失败
3、ResultSet exeuteQuery(String sql);执行DQL(select)的语句
Connection :数据库连接对象
代表着当前代码,与数据库之间的桥梁
1、功能:
1、获取执行sql的对象
* Statement createStatement()
* PreparedStatement
2、管理事务
*开启事务:setAutoCommit
提交事务:commit()
回滚事务:rollback()
获取数据库的连接:
*方法:static Connection getConnection(String url,String user,String password)
*参数:
*url: 指定的连接路径
*语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
*例子:jdbc:mysql://localhost:3306/db3;
*细节:如果连接是本机的mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:
jdbc:mysql//
*user :用户名
*password;密码
jdbc中操作中
详解各个对象:
每一个步骤为什么这样写,有一个更深层次的了解
1.DriverManager:驱动管理对象
*功能:
1。注册驱动:告诉
static void registerDriver(Driver driver):注册与给定的驱动程序
写代码使用 Class.forname("com.mysql.jdbc.driver")
通过查看代码发现:在com.mysql.jbdc.Driver类中存在静态代码块
注意:mysql5之后的驱动jar包可以省略注册驱动的步骤
2。获取数据库连接
2.Connection:数据库连接对象
3.Statement:执行SQL的对象
4.ResultSet:结果集对象
5.PreparedStatement:执行sql的对象
快速入门:
* 步骤:
1.导入驱动jar包
2.注册驱动
3.获取数据库连接对象 Connection
4 定义SQL (发给数据库,java来发给数据库)
5 获取执行sql 语句的对象,Statement
6 执行SQL,接受返回结果
7 处理结果
8 释放资源
JDBC
*概念:java DataBase Connectivity
java 数据库连接,java语言操作数据库
* JDBC
java代码,不变,能不能操作所有的数据库
期望使用统一的一套java代码可以操作所有的关系型数据库
JDBC:定义了操作了所有关系型数据库的规则(接口);
java中接口的实现类
这套接口可以操作不同的数据库。
JDBC的实现类
每一种数据库场商,提供实现类
java接口的实现类,即为数据库驱动
JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商实现这套接口,提供数据库驱动jar包。
我们可以使用这套接口(jDBC)编程
真正执行的代码是驱动jar包的实现类,会产生一个多态的调用
父类对象,调用子类的方法,称之为多态???
十分重要的知识JDBC的知识
1、用java语言,来操作数据库
2、快速入门
3、对JDBC中各个接口和类详解
JDBC的知识十分重要
2、权限管理
1、查询权限
2、授予权限
-- 授予权限
grant 权限列表 on 数据库 ,表名 to '用户名'@‘主机名’
一般授予用户所有权限,是一个很危险的事情
3、撤销权限:
revoke 权限列表
修改用户密码
* mysql中忘记了密码?
1、cmd -- > net stop mysql
*需要管理员权限
2、使用无验证方式启动mysql服务:
mysql -- skip -grant -tables
SQL分类:
1、DDL :操作数据库和表
2、DML:增删改表中数据
3、DQL:查询表中数据
4、DCL:管理用户,授权
DCL 现在已经很少使用了
DBA:数据库管理员
DCL:管理用户,授权
1、管理用户
1、添加用户
2、删除用户
3、修改用户密码
4、查询用户
-- 1。切换到mysql数据库
USE mysql;
-- 2. 查询user表
select * from user;
* 通配符: % 表示可以在任意主机
2、授权
事务的隔离级别(了解)
概念:多个事务之间隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。
存在的问题:
1、脏读:一个事务,读取到另一个事务中没有提交的数据
2、不可重复读(虚读):在同一个事务中,两次读取到的数据不一样。
3、幻读:一个事务操作(DML,增,删,改)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。
隔离级别:
1. read umcommitted:读未提交
产生的问题:脏读、不可重复读,幻读
2. read committed :读已提交
产生的问题:不可重复读、幻读
3.repeatable read :可重复读
serializable:串行化
*可以解决所有的问题
注意:隔离级别从小到大安全性越来越高,但是效率越来越低
事务的四大特征:
1、原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败
2、持久性:哪怕机关了,重点了。当事务提交或回滚后,数据库会持久化的保存数据。
3、隔离性:多个事务之间。相互独立。
4、一致性:事务操作前后,数据总量不变
MySQL数据库中事务默认自动提交
*一条DML(增删改)语句自动提交一次事务
MySQL数据库中事务默认自动提交
* 事务提交的两种方式:
*自动提交
* MySQL就是自动提交的
* 手动提交:
* 需要先开启事务,再提交
MySQL数
1、事务的基本介绍
1。概念:
*如果一个包含多个步骤的业务操作,被事务管理,要么同时成功,要么同时失改
* 如果一个包含多个步骤的业务操作,被事务管理,要么同时成功,要么同时失败
*如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败
张三给李四转账500元
1、查询张三账户余额是否大于500
2、张三账户 金额 -500
如果第二步,出现了异常,代码要跳转,造成的影响是:张三账户的钱减了500,李四的账户的钱没有加上
3、李四账户 金额 +500
三个业务操作完成,如果三个步骤没有事物管理的话
如果三个步骤被事务管理了,
操作:对应三条sql语句
1、开启事务: start transaction
2、回滚:rollback;
3、提交:commit;
事务的四大特征(非常常见的面试题)
事务的隔离级别(了解)
* 多表查询的练习
用专业的手法写SQL
子结询的结果是多行多列
*子查询的不同情况
1.子查询的结果是单行单列的;
* 子查询可以作为条件,使用运算符去判断;
2.子查询的结果是多行单列的;
* 子查询的结果
3.子查询的结果是多行多列的;
子查询
*概念
外链接查询:
1。左外连接
* 语法 :select 字段列表 from 表1 left 【outer】 join 表2 on 条件;
* 查询的是左表所有数据以及交集
2、右外连接
左表与右表是怎么看的呢?
g