您的位置:首页 > 编程语言 > Java开发

JAVAEE 知识点复习

2017-12-21 13:57 106 查看
JAVAEE 知识点复习(连载一)

大致可分为六个大方面进行复习总结

一、JAVASE

二、数据库

三、Web前端

四、JavaWeb

五、框架开发

六、扩展部分

因为JAVASE涉及范围以及知识面都比较广,所以我们先从数据库开始 复习和总结。

A、数据库

1、MYsql 中我们常使用四种数据操作语句:

DDL(数据定义语句),对数据库以及表进行操作,可实现对数据的增、删、改三个方面的操作;

常用sql语句:

查看所有数据库:show databases;

切换(选择要操作的)数据库:use 数据库名;

创建数据库:create database ;

删除数据库:drop database;

修改数据库:update database;

修改数据库编码:alteb 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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 mysql