一、数据库中的约束
1、主键约束:primary key
特点:主键是唯一的;不能为空
逻辑主键:与业务无关的 id
业务主键:与业务有关的
2、唯一约束:unique
3、非空约束:not null
create database day12;
use day12;
create table person(
id int primary key auto_increment,
name varchar(100) not null,
num varchar(100) unique,
description varchar(255)
);
insert into person (name,num,description) values('aa','3701','good man');
4、外键约束:多表
foreign key
4.1一对多
create table department(
id int primary key auto_increment,
name varchar(100)
);
create table employee(
id int primary key auto_increment,
name varchar(100),
salary float(8,2),
dept_id int,
CONSTRAINT dept_id_fk FOREIGN KEY(dept_id) REFERENCES department(id)
);
4.2多对多
create table teacher(
id int primary key auto_increment,
name varchar(100),
salary float(8,2)
);
create table student(
id int primary key auto_increment,
name varchar(100),
grade char(2)
);
create table teacher_student(
t_id int,
s_id int,
primary key(t_id,s_id),
CONSTRAINT t_id_fk FOREIGN KEY(t_id) REFERENCES teacher(id),
CONSTRAINT s_id_fk FOREIGN KEY(s_id) REFERENCES student(id)
);
4.3一对一
create table human(
id int primary key auto_increment,
name varchar(100)
);
create table idcard(
id int primary key auto_increment,
num varchar(100) unique,
CONSTRAINT i_id_fk FOREIGN KEY(id) REFERENCES human(id)
);
二、JDBC的相关概念
1、JDBC是SUN公司提供的访问数据库的规范,一般由接口和抽象类组成。
存放在jdk的java.sql和javax.sql包中
她是JavaEE技术的一种
数据厂商都实现了该规范。一般称之为驱动
三、JDBC入门案例:编写步骤
1、注册驱动
2、建立数据库连接:所有与数据库打交道的代码都是在连接的基础上实施的。
3、建立代表sql语句的对象
4、如果是查询,得到结果集。
5、关闭使用的对象
四、JDBC中的主要接口或者类
1、DriverManager
作用:注册驱动,获取数据库的连接
注册驱动:
DriverManager.registDriver(Driver dirver):
缺点:1、严重依赖驱动
2、驱动程序会加载2次
正确方案:
Class.forName("com.mysql.jdbc.Driver");
获取数据库的连接:
getConnection(String url, String user, String password)
getConnection(String url) :
url:jdbc:mysql://localhost:3306/day12?user=root&password=sorry&useUnicode=true&characterEncoding=utf8
getConnection(String url, Properties info) :key值是数据库厂商规定的
Properties props = new Properties();
props.setProperty("user","root");
props.setProperty("password","sorry");
连接串:
mysql:本机的默认端口3306
jdbc:mysql:///day12=jdbc:mysql://localhost:3306/day12
具体看数据库的文档
2、Connection
非常重要
3、Statement
ResultSet executeQuery(String sql) :sql只能是DQL语句select。返回封装了结果的ResultSet对象
int executeUpdate(String sql) :sql只能是DML语句insert update delete.返回影响到的行数。
boolean execute(String sql) :sql可以是任何语句。返回值boolean。返回true不一定执行成功。
如果sql语句有返回的结果集:true
没有结果集:false
4、ResultSet
结果集中:索引从1开始。
5、PreparedStatement
功能:防注入
采用占位符?的形式,替换掉SQL中的参数
支持预编译SQL语句
6、释放资源
Connection一定用完即放
五、JDBC案例:客户信息的CRUD
1、主键约束:primary key
特点:主键是唯一的;不能为空
逻辑主键:与业务无关的 id
业务主键:与业务有关的
2、唯一约束:unique
3、非空约束:not null
create database day12;
use day12;
create table person(
id int primary key auto_increment,
name varchar(100) not null,
num varchar(100) unique,
description varchar(255)
);
insert into person (name,num,description) values('aa','3701','good man');
4、外键约束:多表
foreign key
4.1一对多
create table department(
id int primary key auto_increment,
name varchar(100)
);
create table employee(
id int primary key auto_increment,
name varchar(100),
salary float(8,2),
dept_id int,
CONSTRAINT dept_id_fk FOREIGN KEY(dept_id) REFERENCES department(id)
);
4.2多对多
create table teacher(
id int primary key auto_increment,
name varchar(100),
salary float(8,2)
);
create table student(
id int primary key auto_increment,
name varchar(100),
grade char(2)
);
create table teacher_student(
t_id int,
s_id int,
primary key(t_id,s_id),
CONSTRAINT t_id_fk FOREIGN KEY(t_id) REFERENCES teacher(id),
CONSTRAINT s_id_fk FOREIGN KEY(s_id) REFERENCES student(id)
);
4.3一对一
create table human(
id int primary key auto_increment,
name varchar(100)
);
create table idcard(
id int primary key auto_increment,
num varchar(100) unique,
CONSTRAINT i_id_fk FOREIGN KEY(id) REFERENCES human(id)
);
二、JDBC的相关概念
1、JDBC是SUN公司提供的访问数据库的规范,一般由接口和抽象类组成。
存放在jdk的java.sql和javax.sql包中
她是JavaEE技术的一种
数据厂商都实现了该规范。一般称之为驱动
三、JDBC入门案例:编写步骤
1、注册驱动
2、建立数据库连接:所有与数据库打交道的代码都是在连接的基础上实施的。
3、建立代表sql语句的对象
4、如果是查询,得到结果集。
5、关闭使用的对象
四、JDBC中的主要接口或者类
1、DriverManager
作用:注册驱动,获取数据库的连接
注册驱动:
DriverManager.registDriver(Driver dirver):
缺点:1、严重依赖驱动
2、驱动程序会加载2次
正确方案:
Class.forName("com.mysql.jdbc.Driver");
获取数据库的连接:
getConnection(String url, String user, String password)
getConnection(String url) :
url:jdbc:mysql://localhost:3306/day12?user=root&password=sorry&useUnicode=true&characterEncoding=utf8
getConnection(String url, Properties info) :key值是数据库厂商规定的
Properties props = new Properties();
props.setProperty("user","root");
props.setProperty("password","sorry");
连接串:
mysql:本机的默认端口3306
jdbc:mysql:///day12=jdbc:mysql://localhost:3306/day12
具体看数据库的文档
2、Connection
非常重要
3、Statement
ResultSet executeQuery(String sql) :sql只能是DQL语句select。返回封装了结果的ResultSet对象
int executeUpdate(String sql) :sql只能是DML语句insert update delete.返回影响到的行数。
boolean execute(String sql) :sql可以是任何语句。返回值boolean。返回true不一定执行成功。
如果sql语句有返回的结果集:true
没有结果集:false
4、ResultSet
结果集中:索引从1开始。
5、PreparedStatement
功能:防注入
采用占位符?的形式,替换掉SQL中的参数
支持预编译SQL语句
6、释放资源
Connection一定用完即放
五、JDBC案例:客户信息的CRUD