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


    主外键说明:
      主键:是表中一行的一个唯一标识,通过主键我们可以快速的查询一条数据!
      主键特性:唯一(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();
                }
            }
        }
    }
  • 相关阅读:
    Linux开发环境必备十大开发工具
    mysql executemany与 insert ... ON DUPLICATE KEY UPDATE 一起使用
    python LD_LIBRARY_PATH 靠谱解决办法
    搭建简单ftp,满足windows和ubuntu共享文件
    用类方法作为装饰器装饰同属于本类的另一个方法
    通过类方法名调用类方法
    java将jpg文件转化为base64字节(互转)
    CSS元素居中的方式
    T-SQL语法学习一(持续更新)
    SVN的使用教程(一)
  • 原文地址:https://www.cnblogs.com/alternative/p/7353941.html
Copyright © 2020-2023  润新知