配置数据库连接及数据库操作

主外键说明:
  主键:是表中一行的一个唯一标识,通过主键我们可以快速的查询一条数据!
  主键特性:唯一(unique),not null,可以被引用!

表的关联:
  1.一对一
    CREATE TABLE `husband` (
    `id` INT(11) PRIMARY KEY AUTO_INCREMENT,
    `hname` VARCHAR(50)
    )

 

    DROP TABLE wife; 
    SELECT * FROM wife

 

    CREATE TABLE `wife` (
    `id` INT(11) PRIMARY KEY,
    `wname` VARCHAR(50),
    FOREIGN KEY(id) REFERENCES husband(id)
    )

 

    INSERT INTO husband VALUES(NULL,"武大郎");
    INSERT INTO wife VALUES(1,"潘金莲")

 

    SELECT * FROM husband;
    SELECT * FROM wife;


    INSERT INTO wife VALUES(2,"xi");


  2.一对多
    经典案例:部门和员工的关系:一个部门有多个员工,但是一个员工只能在一个部门中
    对于一对多的关系表:我们通常是在多的一端维护一个外键,这个外键指向一的主键


    CREATE TABLE dept(
    dept_id INT PRIMARY KEY AUTO_INCREMENT,
    dept_name VARCHAR(50)
    )

 

    CREATE TABLE employee(
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(50),
    dept_id INT,
    FOREIGN KEY(dept_id) REFERENCES dept(dept_id)
    )

 

    SHOW TABLES;

    INSERT INTO dept VALUES(NULL,"后勤部")

    SELECT * FROM dept;

    INSERT INTO employee VALUES(NULL,"郭富城",4)

    SELECT * FROM employee

    DELETE FROM employee WHERE id = 4;

  3.多对多
    经典案例:老师和学生,选课

    单表查询:
      SELECT SUM(score),id
      FROM stu 
      WHERE id > 2
      GROUP BY snum
      HAVING SUM(score) > 90
      ORDER BY id ASC
      LIMIT 1,2;

    多表查询

      纵向连接(union ,union all)
        select name from stu1
        UNION all
        select name from stu2
      注意:union会对数据进行过滤,保证数据唯一,而union all不会对数据进行

      横向连接
        join on来完成横向连接
        inner join :只会显示满足条件的数据
        select * from ( person p) inner join (orders o) on p.id = o.oid

 

           1)左向外联接:LEFT  JOIN或LEFT OUTER JOIN     
      左向外联接的结果集包括  LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

       select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id  

 

          2)右向外联接:RIGHT  JOIN 或 RIGHT  OUTER  JOIN     
      右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

       select   a.*,b.*   from   a   right   join   b     on   a.id=b.parent_id      

 

          3)完整外部联接:FULL  JOIN 或 FULL OUTER JOIN
       完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。   

      select   a.*,b.*   from   a   full   join   b     on   a.id=b.parent_id 

 

jdbc简介

  通过jdbc连接数据库的基本步骤
    导入jar包驱动类
    jdbc语法:jdbc:子协议:厂商内容
    对于mysql而言:?jdbc:mysql://主机地址:端口号/库名
             ? jdbc:mysql://localhost:3306/test

  jdbc获取数据库连接:
    //准备四个参数

    //加载数据库驱动类

    //利用DriverManager的getConnection方法获取数据库连接

    示例代码:

package com.neuedu.manage.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class JDBCUtil { private static Connection connection=null; private static String url="jdbc:mysql://localhost:3306/republic"; private static String username="root"; private static String password="123456"; private static String driverClass="com.mysql.jdbc.Driver"; public Connection getConnection(){ try { Class.forName(driverClass); connection = DriverManager.getConnection(url, username, password); } catch (Exception e) { // TODO Auto-generated catch block  e.printStackTrace(); } return connection; } public static void close(Connection con,Statement statement,ResultSet rSet){ if(rSet!=null){ try { rSet.close(); } catch (SQLException e) { e.printStackTrace(); } } if(statement!=null){ try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } if(con!=null){ try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } }

 

转载于:https://www.cnblogs.com/alternative/p/7353941.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值