「本周小结」MySQL、JDBC、MyBatis以及Maven的基础知识

最近学习了MySQL、JDBC以及MyBatis和Maven的相关内容,为JavaWeb的学习打基础。
以下为学习笔记:

SQL通用语法

不区分大小写

注释

单行注释:#注释内容-- 注释内容

多行注释:/* */

DDL数据定义语言

数据库操作
show databases;  #查询当前data目录下的所有数据库
create database name; #创建数据库
create database if exists name; #如果没有这个数据库则创建
drop database name; #删除数据库
use name; #使用数据库
表的操作
show tables; #查询当前数据库所有表的名称
desc name; #查询表结构
drop table name; #删除表

#创建表
create table name (
	字段名1 数据类型1,
    字段名2 数据类型2,
   	...
    字段名n 数据类型n
);

#修改表
alter table name1 rename to name2; #修改表名
alter table name1 add name2; #添加列
alter table name modify 列名 新数据类型; #修改数据类型
alter table name change 列名 新列名 新数据类型; #修改列名和数据类型
alter table name drop 列名; #删除列
数据类型

DML数据操作语言*

#添加数据
insert into 表名(列名1,列名2,...) values(值1,值2,...);
insert into 表名 values(值1,值2,...);
insert into 表名(列名1,列名2,...) values(值1,值2,...)(值1,值2,...); #批量添加数据
insert into 表名 values(值1,值2,...)(值1,值2,...); #批量添加数据

#修改数据
UPDATE 表名 SET 列名1=值1,列名2=值2,...[WHERE 条件];

#删除数据
DELETE FROM 表名 [WHERE 条件];

DQL数据查询语言*

#查询语法
SELECT
    字段列表
FROM
    表名列表
WHERE
    条件列表
GROUP BY
    分组字段
HAVING
    分组后条件
ORDER BY
    排序字段
LIMIT
    分页限定
基础查询
#查询多个字段
SELECT 字段列表 FROM 表名;
#查询所有数据
SELECT * FROM 表名;
#去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
#给字段起别名
SELECT 字段 AS 别名 FROM 表名;
条件查询

条件运算符:
1

排序查询
SELECT 字段列表 FROM 表名 ORDER BY 排序字段1[排序方式],排序字段列表2[排序方式]…;

排序方式:ASC 升序排列(默认值)、 DESC 降序排列

如果有多个排序条件,当第一条件的值相同时,才会根据第二条件进行排序。

分组查询

聚合函数:

SELECT 聚合函数名(列名) FROM 表;

2

count(*) #只要这一行有一个值不为null就能被统计到
#null不参与聚合函数的运算

分组查询:

SELECT 字段列表 FROM 表名 [WHEHE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];

分组之后,查询的字段为聚合函数和分组字段。

WHERE与HAVING区别:

  • WHERE分组前进行限定,不满足的话就不参与分组。HAVING分组后进行条件过滤
  • WHERE不能对聚合函数判断,HAVING可以。

执行顺序:WHERE>聚合函数>HAVING

分页查询

为MySQL的方言

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询条目数;

起始索引从0开始

约束

3

#主键自增长,
id INT PRIMARY KEY AUTO_INCREMENT

66

外键约束

将两个表的数据建立链接,保证数据一致性

#创建表时添加外键约束
CREATE TABLE 表名(
	列名 数据类型,
    ...
    [CONSTRAINT] [外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名)

);
#建完表后添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
#删除约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

数据库设计

表关系一对多

在多的一方建立外键关联一的一方的主键

多对多

建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

一对一

在任意一方建立外键,关联对方主键,并设置外键唯一

多表查询

连接查询

内连接:查询两个表的交集部分

#显式内连接
SELECT * FROM 表1 INNER JOIN 表2 ON 条件

外连接:

  • 左外连接:查询A表所有数据和交集部分数据
  • 右外连接:查询B表所有数据和交集部分数据
#左外连接
SELECT * FROM 表1 LEFT JOIN 表2 ON 条件;
#右外连接
SELECT * FROM 表1 RIGHT JOIN 表2 ON 条件;

子查询

#单行单列:作为条件值进行条件判断
SELECT 字段列表 FROM 表 WHERE 字段名 = (子查询);
#多行单列:作为条件值,使用IN等关键字进行条件判断
SELECT 字段列表 FROM 表 WHERE 字段名 in (子查询);
#多行多列:作为虚拟表
SELECT 字段列表 FROM (子查询) WHERE 条件;

事务

一种机制,一个操作序列,包含了一组数据库操作命令

这一组命令要么同时成功,要么同时失败

START TRANSACTION; #或BEGIN,开启事务
COMMIT; #提交事务
ROLLBACK; #回滚事务

#MySQL中事务默认提交

四大特征:ACID

123

JDBC

JDBC导入Java项目

12

DriverManagerAPI

  1. 注册驱动

使用Class.forName("com.mysql.cj.jdbc.Driver")注册驱动时,在Driver类的静态代码块中调用DriverManager的方法进行注册驱动

  1. 获取数据库连接

拥有getConnection()方法可以获取数据库连接

ConnectionAPI

  1. 获取执行SQL的对象
//普通执行SQL对象
Statement createStatement();
//预编译SQL的执行SQL对象,防止SQL注入
PreparedStatement preparedStatement(sql);
  1. 管理事务
setAutoCommit(true) //开启事务,ture为自动开启,false为手动开启
commit(); //提交事务
rollback(); //回滚事务

StatementAPI

执行SQL语句

int executeUpdate(sql); //执行DML,DDL语句;返回DML语句影响的行数
ResultSet executeQuery(sql); //执行DQL语句;返回ResultSet结果集对象

ResultSetAPI

  1. 封装了DQL查询语句的结果
boolean next(); //将光标从当前位置向下移动一行,判断当前行是否为有效行
getXxx(参数) //获取数据,参数为int为列的编号,string为列的名称 ,xxx为数据类型

数据库连接池

标准接口:DataSource

Connection getConnection() 获取连接对象

Maven

用来管理和构建Java项目的工具

Maven项目基本结构

3

Maven模型

仓库

233

常用命令

compile //编译
clean //清除编译文件
test //测试
package  //打包项目
install //安装到本地仓库

生命周期

描述一次构建过程中经历了多少个事件

生命周期有三套:

  • clean:清理工作
  • default:核心工作,编译,测试,打包,安装
  • site:发布站点

同一生命周期中,执行后面的命令,前面的命令会自动执行

idea中配置Maven

Maven坐标

123

依赖管理

234

依赖范围

123

MyBatis

持久层框架,简化JDBC开发

持久层:

负责将数据保存到数据库的那一层代码

JavaEE架构:表现层,业务层,持久层

Mapper代理开发

12333

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值