00-JavaWeb整体介绍
前端工程师负责网页 Java工程师负责JavaWeb程序和数据库搭建
01-数据库相关概念
03-MySQL数据模型
01-数据库相关概念
03-MySQL数据模型
关系型数据库:通过表存储数据的数据库
04-SQL简介&通用语法&分类
05-DDL-操作数据库
mysql -uroot -p1234
登录 启用mysql
直接创建:create database ***(名字);
查询是否存在再创建: create database if not exists db2;
查询数据库: show databases;
006-DDL-操作表-查询表&创建表
007-DDL-操作表-数据类型
08-DDL-操作表-修改&删除
09-图形化客户端工具-Navicat
10-DML-操作数据-添加&修改&删除
11-DQL-基础查询 最重要/常用的
查找时去除重复记录
Select distinct (列名) from (表名);
12-DQL-条件查询
13-DQL-排序查询
14-DQL-聚合函数:就是把一列当做整体 纵向计算
Count();count统计的列名 不能为空 一般()取值为 主键or * ;
15-DQL-分组查询
16-DQL-分页查询limit(是MySQL的方言)
01-约束-概述和分类
02-约束-约束案例
演示自动增长:auto_increment: 当列是数字类型并且 唯一约束
后面 添加数据的时候 可以不给那列赋值 但是那列会自动增长
03-约束-外键约束
先创建/添加主表,再弄次表
04-数据库设计-简介
05-数据库设计-多表关系实现
10-DML-操作数据-添加&修改&删除
11-DQL-基础查询 最重要/常用的
查找时去除重复记录 Select distinct (列名) from (表名);
12-DQL-条件查询
13-DQL-排序查询
14-DQL-聚合函数:就是把一列当做整体 纵向计算
Count();count统计的列名 不能为空 一般()取值为 主键or * ;15-DQL-分组查询
16-DQL-分页查询limit(是MySQL的方言)
01-约束-概述和分类
02-约束-约束案例
演示自动增长:auto_increment: 当列是数字类型并且 唯一约束
后面 添加数据的时候 可以不给那列赋值 但是那列会自动增长
03-约束-外键约束
先创建/添加主表,再弄次表
04-数据库设计-简介
05-数据库设计-多表关系实现
05-数据库设计-多表关系实现
实现方式类似 一对多 并且设置外键为唯一(UNIQUE)
06-数据库设计-案例
CREATE TABLE tb_music (
title VARCHAr(32), -- 专辑名称
id int primary key auto_increment -- 用户编号
);
CREATE TABLE Song(
name varchar(32), -- 歌曲名称
id int -- 用户编号
);
CREATE TABLE review (
content varchar(256) -- 评论内容
);
CREATE TABLE tb_user(
username VARCHAr(16), -- 用户名
id int primary key auto_increment -- 用户编号
);
CREATE TABLE tb_user_music(
username VARCHAr(16), -- 用户名
id int primary key auto_increment ,-- 用户编号
user_id int,
music_id int
);
alter table tb_user_music add CONSTRAINT fk_user_id FOREIGN key(user_id) REFERENCES tb_user(id);
alter table tb_user_music add CONSTRAINT fk_music_id foreign key(music_id) REFERENCES tb_music(id);
07-多表查询-简介
08-多表查询-内连接&外连接
外:
09-多表查询-子查询
08-多表查询-内连接&外连接
外:
09-多表查询-子查询
多行单列:
多行多列:
10-多表查询-案例
-- 1.查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述
select emp.id,emp.ename,emp.salary,job.jname,job.description from emp,job where emp.job_id=job.id;
-- 2.查询员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置
select emp.id,emp.ename,emp.salary,job.jname,job.description,dept.dname,dept.loc from emp,job,dept where emp.job_id=job.id and emp.dept_id=dept.id;
-- 3.查询员工姓名,工资,工资等级
select emp.ename,emp.salary,ts.* from emp,salarygrade ts where emp.salary>=ts.losalary and emp.salary=ts.losalary and emp.salary
11-事务-简介四大特征
01-JDBC简介-快速入门 使用Java语言操作关系型数据库的一套API
package com.itheima.jdbc;
import com.sun.jdi.ClassNotLoadedException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
//JDBC快速入门
public class JDBCDemo {
public static void main(String[] args) throws Exception {
//1.注册驱动 MySQL5 之后的驱动包 可以不写这行
Class.forName("com.mysql.jdbc.Driver");
//2.获取链接
String url="jdbc:mysql://127.0.0.1:3306/db1";
String username="root";
String password="1234";
Connection conn=DriverManager.getConnection( url,username ,password);
//3.定义sql
String sql="update account set money=2000 where id= 1";
//4.获取执行sql的 对象statement
Statement stmt =conn.createStatement();
//5.执行sql
int count=stmt.executeUpdate(sql); //受影响的 行 数
//6.处理结果
System.out.println(count);
//7.释放资源
stmt.close();
conn.close();
}
}
02-JDBC-API详解-DriverManager
03-JDBC-API详解-Connection
一直在讲<异常与多线程>的知识 但是我觉得黑马 JAVA没有教
04-JDBC-API详解-Statement
05-JDBC-API详解-ResultSet
为啥test rs 运行不来了??? 因为:import org.junit.Test;
06-JDBC-API详解-PreparedStatement-SQL注入演示
import com.itheima.pojo.Account;import org.junit.Test;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.List;
public class JDBCDemo6_UserLogin {
@Test
public void testLogin() throws Exception {
//2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
String url = "jdbc:mysql:///db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);
// 接收用户输入 用户名和密码
String name = "zhangsan";
String pwd = "fhsjkfhdsk";
String sql = "select * from tb_user where username = '"+name+"' and password = '"+pwd+"'";
// 获取stmt对象
Statement stmt = conn.createStatement();
// 执行sql
ResultSet rs = stmt.executeQuery(sql);
// 判断登录是否成功
if(rs.next()){
System.out.println("登录成功~");
}else{
System.out.println("登录失败~");
}
//7. 释放资源
rs.close();
stmt.close();
conn.close();
}
@Test
public void testLogin_Inject() throws Exception {
//2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
String url = "jdbc:mysql:///db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);
// 接收用户输入 用户名和密码
String name = "hfkjsfhskj";
String pwd = "' or '1' = '1";
String sql = "select * from tb_user where username = '"+name+"' and password = '"+pwd+"'";
System.out.println(sql);
// 获取stmt对象
Statement stmt = conn.createStatement();
// 执行sql
ResultSet rs = stmt.executeQuery(sql);
// 判断登录是否成功
if(rs.next()){
System.out.println("登录成功~");
}else{
System.out.println("登录失败~");
}
//7. 释放资源
rs.close();
stmt.close();
conn.close();
}
}
修改预先定义好的SQL语句
07-JDBC-API详解-PreparedStatement
08-JDBC-API详解-PreparedStatement-原理
09-数据库连接池-简介&DRUID使用
10-JDBC练习-环境准备
11-JDBC练习-查询所有
12-JDBC练习-添加&修改&删除
01-Maven概述
02-Maven简介
01-JDBC简介-快速入门 使用Java语言操作关系型数据库的一套API
package com.itheima.jdbc;
import com.sun.jdi.ClassNotLoadedException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
//JDBC快速入门
public class JDBCDemo {
public static void main(String[] args) throws Exception {
//1.注册驱动 MySQL5 之后的驱动包 可以不写这行
Class.forName("com.mysql.jdbc.Driver");
//2.获取链接
String url="jdbc:mysql://127.0.0.1:3306/db1";
String username="root";
String password="1234";
Connection conn=DriverManager.getConnection( url,username ,password);
//3.定义sql
String sql="update account set money=2000 where id= 1";
//4.获取执行sql的 对象statement
Statement stmt =conn.createStatement();
//5.执行sql
int count=stmt.executeUpdate(sql); //受影响的 行 数
//6.处理结果
System.out.println(count);
//7.释放资源
stmt.close();
conn.close();
}
}
02-JDBC-API详解-DriverManager
03-JDBC-API详解-Connection
一直在讲<异常与多线程>的知识 但是我觉得黑马 JAVA没有教
04-JDBC-API详解-Statement
05-JDBC-API详解-ResultSet
为啥test rs 运行不来了??? 因为:import org.junit.Test;
06-JDBC-API详解-PreparedStatement-SQL注入演示
import com.itheima.pojo.Account;import org.junit.Test;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.List;
public class JDBCDemo6_UserLogin {
@Test
public void testLogin() throws Exception {
//2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
String url = "jdbc:mysql:///db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);
// 接收用户输入 用户名和密码
String name = "zhangsan";
String pwd = "fhsjkfhdsk";
String sql = "select * from tb_user where username = '"+name+"' and password = '"+pwd+"'";
// 获取stmt对象
Statement stmt = conn.createStatement();
// 执行sql
ResultSet rs = stmt.executeQuery(sql);
// 判断登录是否成功
if(rs.next()){
System.out.println("登录成功~");
}else{
System.out.println("登录失败~");
}
//7. 释放资源
rs.close();
stmt.close();
conn.close();
}
@Test
public void testLogin_Inject() throws Exception {
//2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
String url = "jdbc:mysql:///db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);
// 接收用户输入 用户名和密码
String name = "hfkjsfhskj";
String pwd = "' or '1' = '1";
String sql = "select * from tb_user where username = '"+name+"' and password = '"+pwd+"'";
System.out.println(sql);
// 获取stmt对象
Statement stmt = conn.createStatement();
// 执行sql
ResultSet rs = stmt.executeQuery(sql);
// 判断登录是否成功
if(rs.next()){
System.out.println("登录成功~");
}else{
System.out.println("登录失败~");
}
//7. 释放资源
rs.close();
stmt.close();
conn.close();
}
}
04-JDBC-API详解-Statement
05-JDBC-API详解-ResultSet
为啥test rs 运行不来了??? 因为:import org.junit.Test;
06-JDBC-API详解-PreparedStatement-SQL注入演示
import com.itheima.pojo.Account;import org.junit.Test;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.List;
public class JDBCDemo6_UserLogin {
@Test
public void testLogin() throws Exception {
//2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
String url = "jdbc:mysql:///db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);
// 接收用户输入 用户名和密码
String name = "zhangsan";
String pwd = "fhsjkfhdsk";
String sql = "select * from tb_user where username = '"+name+"' and password = '"+pwd+"'";
// 获取stmt对象
Statement stmt = conn.createStatement();
// 执行sql
ResultSet rs = stmt.executeQuery(sql);
// 判断登录是否成功
if(rs.next()){
System.out.println("登录成功~");
}else{
System.out.println("登录失败~");
}
//7. 释放资源
rs.close();
stmt.close();
conn.close();
}
@Test
public void testLogin_Inject() throws Exception {
//2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
String url = "jdbc:mysql:///db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);
// 接收用户输入 用户名和密码
String name = "hfkjsfhskj";
String pwd = "' or '1' = '1";
String sql = "select * from tb_user where username = '"+name+"' and password = '"+pwd+"'";
System.out.println(sql);
// 获取stmt对象
Statement stmt = conn.createStatement();
// 执行sql
ResultSet rs = stmt.executeQuery(sql);
// 判断登录是否成功
if(rs.next()){
System.out.println("登录成功~");
}else{
System.out.println("登录失败~");
}
//7. 释放资源
rs.close();
stmt.close();
conn.close();
}
}
import com.itheima.pojo.Account;import org.junit.Test;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.List;
public class JDBCDemo6_UserLogin {
@Test
public void testLogin() throws Exception {
//2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
String url = "jdbc:mysql:///db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);
// 接收用户输入 用户名和密码
String name = "zhangsan";
String pwd = "fhsjkfhdsk";
String sql = "select * from tb_user where username = '"+name+"' and password = '"+pwd+"'";
// 获取stmt对象
Statement stmt = conn.createStatement();
// 执行sql
ResultSet rs = stmt.executeQuery(sql);
// 判断登录是否成功
if(rs.next()){
System.out.println("登录成功~");
}else{
System.out.println("登录失败~");
}
//7. 释放资源
rs.close();
stmt.close();
conn.close();
}
@Test
public void testLogin_Inject() throws Exception {
//2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
String url = "jdbc:mysql:///db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);
// 接收用户输入 用户名和密码
String name = "hfkjsfhskj";
String pwd = "' or '1' = '1";
String sql = "select * from tb_user where username = '"+name+"' and password = '"+pwd+"'";
System.out.println(sql);
// 获取stmt对象
Statement stmt = conn.createStatement();
// 执行sql
ResultSet rs = stmt.executeQuery(sql);
// 判断登录是否成功
if(rs.next()){
System.out.println("登录成功~");
}else{
System.out.println("登录失败~");
}
//7. 释放资源
rs.close();
stmt.close();
conn.close();
}
}
修改预先定义好的SQL语句
07-JDBC-API详解-PreparedStatement
08-JDBC-API详解-PreparedStatement-原理
09-数据库连接池-简介&DRUID使用
10-JDBC练习-环境准备
11-JDBC练习-查询所有
12-JDBC练习-添加&修改&删除
01-Maven概述
02-Maven简介



