配置数据库连接及数据库操作
Posted 戏路很宽丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置数据库连接及数据库操作相关的知识,希望对你有一定的参考价值。
主外键说明:
主键:是表中一行的一个唯一标识,通过主键我们可以快速的查询一条数据!
主键特性:唯一(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();
}
}
}
}
以上是关于配置数据库连接及数据库操作的主要内容,如果未能解决你的问题,请参考以下文章
Spring中c3p0连接池的配置 及JdbcTemplate的使用 通过XML配置文件注入各种需要对象的操作 来完成数据库添加Add()方法