JAVAEE 知识点复习

JAVAEE 知识点复习(连载一)

大致可分为六个大方面进行复习总结
一、JavaSE
二、数据库
三、Web前端
四、JavaWeb
五、框架开发
六、扩展部分
因为JavaSE涉及范围以及知识面都比较广,所以我们先从数据库开始 复习和总结。

A、数据库
1、Mysql 中我们常使用四种数据操作语句:
DDL(数据定义语句),对数据库以及表进行操作,可实现对数据的增、删、改三个方面的操作;
常用sql语句:
查看所有数据库:show databases;
切换(选择要操作的)数据库:use 数据库名;
创建数据库:create database ;
删除数据库:drop database;
修改数据库:update database;
修改数据库编码:alter database mydbl character set utf-8;

创建表:create table[if not exit ] 表明(列名 列表类型);
查看当前所有表:show tables;
查看指定表的创建语句:show create table 表名;
查看表结构:desc 表名;
删除表:drop table 表名;
修改表:前缀为alter table 表明
a)添加列:altert table 表明 add(
列名1 列类型1,
列名2 列类型2,

);
b)修改列类型(如果被修改的列已经存在数据,那么新类型可能会影响到已存在的数据)altert table 表名 modify 列名 列类型;
c)修改列名:altert table 表名 change 原列名 新列名 列类型;
d)删除列:altert table 表名 drop 列名;
e)修改表名称:altert table 原表名 rename to 新表明;

DML(数据操作语句),对表的记录进行更新操作,可实现对数据的增、删、改三个方面的操作;
常用sql语句:
插入数据:insert into 表名(列名1.列名2…) values (值1、值2…);
修改数据:update 表名 set 列名1=列值…,[where 条件];
删除数据:delete from 表名 [where 条件];

DCL(数据控制语句),用来定义访问权限和安全等级,对用户的创建和授权;
常用sql语句:
创建用户:create user 用户名@IP地址 identified by ‘密码’;(只能在指定的IP地址上登录)
create user yonghuming@’%’ identified by ‘密码’;(用户可以在任意IP地址上登录)
给用户授权:grant 权限1,…权限n ON 数据库.*To 用户名@IP地址;(给用户分派在指定的数据库权限)
grant all on 数据库.to 用户名@IP地址;(给用户分派指定数据库上的所有权限)
撤销授权:revoke 权限1,…权限n ON 数据库.*from 用户名@IP地址;(撤销指定用户在指定数据库上的指定权限)
查看权限:show grants for 用户名@IP地址;(查看指定用户的权限)
删除用户:drop user 用户名@IP地址;
DQL(数据查询语句),用来查询记录(数据);主要是对表记录的查询。DQL是四种数据操作语句中最为经常使用且要我们熟练掌握的语句。
常用sql语句(重点):
DDL语句只会对数据库进行查询操作,不会修改数据
查询所有列:select *from 表名;
查询指定列:select 列1 from 表名;
完全重复的记录只显示一次:select distinct * [列1、列2…] from 表名;

列运算
数量类型的列可以执行加、减、乘、除的运算操作
select ,列名0.5 from 表名;
字符串做算术运算时,会被当做0来进行运算,在字符串中‘+’号不代表拼接;
字符串类型可以做连续运算:select concat(’$’,列名) from 表名;
转换NULL值:select ifnull (列名,0)+100 from 表名;
给列起别名:select ifnull(列名,0)+100 AS(可省略) 别名 from 表名;

模糊查询:
当你想查询姓张,并且姓名一共两个字的员工时,就可以使用模糊查询
SELECT * FROM emp WHERE ename LIKE ‘张_’;
模糊查询需要使用运算符:LIKE,其中匹配一个任意字符,注意,只匹配一个字符而不是多个。
上面语句查询的是姓张,名字由两个字组成的员工。
下划线“_”可以匹配1个字符,如果要匹配0-n个字符,需要用“%”;
SELECT * FROM emp WHERE ename LIKE ‘%刚’;
查询名字结尾是带“刚”字的员工。

排序查询
升序
SELECT * FROM emp ORDER BY sal ASC;
按sal排序,ASC升序,DESC降序,其中ASC是可以省略的
降序
SELECT * FROM emp ORDER BY comm DESC;
按comm降序排序查询
使用多列作为排序条件
SELECT * FROM emp ORDER BY sal ASC, comm DESC;
使用sal升序排序,如果sal相等,再按照comm降序排序

聚合函数
聚合函数用来做某列的纵向运算
 COUNT()函数
SELECT COUNT(*) FROM emp;
计算emp表中所有列都不为NULL的记录的行数
SELECT COUNT(comm) FROM emp;
计算emp表中comm列不为NULL的记录的行数
 MAX()函数
SELECT MAX(sal) FROM emp;
查询最高工资
 MIN()函数
SELECT MIN(sal) FROM emp;
查询最低工资
 SUM()函数
SELECT SUM(sal) FROM emp;
查询所有员工工资的总和
 AVG()函数
SELECT AVG(sal) FROM emp;
查询平均工资

2、事务管理
事务简单来说,就是在多个操作中,要么完全成功,要么完全失败,不可能出现只成功一半的情况
事务的四大特性:
a)原子性(Atomicity):事务中所有操作是不可能再分割的原子单位。事务中所有操作要么全部执行成功,要么全部失败。
b)一致性(Consistency):事务执行后,数据库状态与其他业务规则保持一致。如转账业务,无论事务执行成功。
c)隔离性(lsolation):隔离性是指在并发操作中,不同事务之间应该隔离开来,使每个并发中的事务不会相互干扰。
d)持久性(Durability):一旦事务提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据马上崩溃,在数据库重启时,也必须能保证通过,某种机制恢复数据。

MYSQL中的事务
在默认情况下,MySQL每执行一条SQL语句,都是一个单独的事务。如果需要在一个事务中包含多条SQL语句,那么需要开启事务和结束事务。
开启事务:start transaction;
结束事务:commit 或 rollback;
在执行SQL语句之前,先执行start transaction,这就开启了一个事务(事务的起点),然后可以去执行多条SQL语句,最后要结束事务,commit表示提交,即事务中的多条SQL语句所作出的影响会持久化到数据库中。或者rollback,表示数据回滚,即回到事务的起点,之前做的所有操作都被撤销了。

B JDBC
1、数据库连接
//动态加载驱动(这里需要事先导入一个jar包)
Class.forName(“com.mysql.jdbc.Driver”);
//声明连接数据库的配置信息
//连接mysql的url
String url = “jdbc:mysql://localhost:3306/库名”;
//登录mysql的用户名
String user = “root”;
//登录mysql的密码
String pwd = “root”;
//获得数据库连接
Connection conn = DriverManger.getConnection(url,user.pwd);

2、JDBC核心对象
a)DriverManager
我们只需要会用DriverManager的getConnection()方法即可
Class.forName(“com.mysql.jdbc.Driver”);
String url = “jdbc:mysql://localhost:3306/test”;
String user = “root”;
String pwd= “root”;
Connection conn = DriverManager.getConnection(url, user, pwd);
上面的代码可能出现的两种异常:

  1. ClassNotFoundException:这个异常是在第1句上出现的,异常原因是没有找到对应的类,出现这个异常有两种可能:
     你没有给出mysql的jar包;
     你把类名称打错了,查看类名是不是com.mysql.jdbc.Driver;
  2. SQLException:这个异常出现在第5句,出现这个异常的原因是三个参数内容有误,重点看一下URL是否书写错误。

b)Connection
Connection最为重要的方法就是获取Statement;
Statement stmt = conn.createStatement();
在学习Result方法时,还需要学习一下的方法
Statement stmt = conn.createStatement(int,int);
其中的两个参数是用来确定创建Statement能生成什么样的结果集

c)Statement
Statement最为重要的方法
1、int executeUpdate(String sql):可以执行DDL和DML语句,即增删改的操作,返回成功执行的记录数‘
2、ResultSet executeQuery(String sql):执行DQL查询语句,执行查询操作会返回ResultSet结果集
3、boolean execute():可以执行前两个方法能执行的SQL语句,该方法用来执行增删改查的所有SQL语句的操作,返回值为boolean类型,表示执行的SQL语句是否有结果
□如果使用execute()方法执行的是更新语句,那么还要调用int getUpdateCount()方法来获取insert、update、delete语句所影响的行数;
□如果使用execute()方法执行的是查询语句,那么还要调用ResultSet getResultSet()来获取select语句的查询结果

d)ResultSet之滚动结果集
ResultSet表示结果集,它是一个二维表格。ResultSet内部维护一个行光标(游标),光标位置从1开始。ResultSet提供一系列的方法来移动游标
移动游标的方法:
□void beforeFirst():把光标放到第一行的前面,这也是光标的默认位置;
□void afterLast():把光标放到最后一行的后面;
□boolean first():把光标放到第一行的位置上,返回值表示调控光标是否成功;
□boolean last():把光标放到最后一行的位置上;
□boolean previous():把光标向上挪一行;
□boolean next():把光标向下挪一行;

判断游标的位置方法
□boolean isBeforeFirst():当前光标位置是否在第一行的前面
□boolean isAfterLast():当前光标位置是否在最后一行的后面
□boolean isFirst():当前光标位置是否在第一行上;
□boolean isLast():当前光标位置是否在最后一行上;
□int getRow():返回当前光标所在位置;

获取当前结果集的总行数
□先执行rs.last();把光标移动到最后一行,在执行rs.getRow();获取当前光标所在行,可以得到结果集一共有多少行;

获取结果集的总列数
□先获取结果集的元数据:ResultSetMetaData rsmd = rs.getMetaData();
□获取结果集列数:int len = rsmd.getCOlumnCount();
□获取指定列的列名:String name = rsmd.getColumName(int colindex);

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值