栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb day01 SQL 约束

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaWeb day01 SQL 约束

00-JavaWeb整体介绍

前端工程师负责网页    Java工程师负责JavaWeb程序和数据库搭建


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-数据库设计-多表关系实现 

实现方式类似 一对多 并且设置外键为唯一(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-多表查询-子查询

 

多行单列:
多行多列:

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简介

 


 

                                     

         

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028635.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号