前言
第十天:Mysql之前没有学过,这次相当于从零开始,感觉比想象中容易一点。
第十一天:安装了maven,学习了如何使用码云。
第十二天,讲解JDBC。
第十三天,讲解Javaweb前端基础。
第十天——MySQL
创建表格
经实验,一个查询只能建立一个表格,因为我所有代码一起敲进去,就建立了People一个表格,然而我分开打每一段代码,都可以顺利建立,很奇怪。(实际上是不应该这样的,非常奇怪)
create table person(
driver_id varchar(50),
name varchar(50),
address varchar(50),
primary key (driver_id)
);
create table car(
license_plate varchar(50),
modle varchar(50),
year date,
primary key (license_plate)
);
create table accident(
report_number int(50),
year date,
location VARCHAR(50),
primary key (report_number)
);
create table owns(
driver_id varchar(50),
license_plate varchar(50),
primary key (driver_id),
CONSTRAINT `DRI` FOREIGN KEY (`driver_id`) REFERENCES `person` (`driver_id`) ON DELETE CASCADE ON UPDATE CASCADE
);
create table participated(
report_number int(50),
license_plate varchar(50),
driver_id varchar(50),
damage_amount int(50),
primary key (driver_id),
CONSTRAINT `acc` FOREIGN KEY (`report_number`) REFERENCES `accident` (`report_number`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `lp` FOREIGN KEY (`license_plate`) REFERENCES `car` (`license_plate`) ON DELETE CASCADE ON UPDATE CASCADE
);
然后就是,date还是尽量不要去设置范围
查询
select e.ID, person_name from employee as e, works as w, company as с, manages as m where e.lD = w.ID and e.citу = с.city and w.company_name =c.company_nаmе;#a
select e.ID, person_name from employee as e, works as w, company as c,employee as m where e.ID = manages.id and m.street = e .street and m.city = e .city;#b
select er.ID, person_name from employee as er, works as w where er.ID = w.ID and w.salary < (SELECT AVG(w.salary) from employee as e where e.salary = er .salary);#c
select c.company_name from works as w, company as c where c.company_name = w.company_name and w.salary <= (select min(wr.salary) from wr as works where wr.salary = w .salary);#d
select name , course_id
from instructor,teaches
where instructor.ID = teaches.ID;#1
select distinct i.dept_name from instructor as i where i.instructor like '%计算机科学%' and i.salary >=70000;#2
SELECT distinct i.name, i.dept_name, d.building FROM instructor as i,department as d, d join i ON dept_name where d.dept_name = i.dept_name;#3
select distinct T.name
from instructor as T, instructor as S
where T.salary > S.salary and S.dept_name = '生物系'; #4
SELECT d.dept_name FROM department as d WHERE d.building = '%Watson%';#5
(select course_id
from section
where semester = 'Fall' and year = 2009)
union
(select course_id
from section
where semester = 'Spring' and year = 2010);#6
SELECT i.name FROM instructor as i where i.salary is null;#7
第十一天——maven
maven的下载、镜像的配置等
镜像配置
- 镜像:mirrors
- 作用:加速我们的下载
- 国内建议使用阿里云的镜像
方便下载使用
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
配置环境变量
在我们的系统环境变量中配置如下配置:
- M2_HOME maven目录下的bin目录
- MAVEN_HOME maven的目录
- 在系统的path中配置%MAVEN_HOME%\bin
测试Maven是否安装成功,保证必须配置完毕!
本地仓库
在本地的仓库,远程仓库; 建立一个本地仓库:localRepository
<localRepository>D:\Environment\apache-maven-3.8.1\maven-repository</localRepository>
第十二天——JDBC
简介
JDBC全称Java DataBase Connectivity(Java数据库连接),是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
早期SUN公司的天才们想编写一套可以连接天下所有数据库的API,但是当他们刚刚开始时就发现这是不可完成的任务,因为各个厂商的数据库服务器差异太大了。后来SUN开始与数据库厂商们讨论,最终得出的结论是,由SUN提供一套访问数据库的规范(就是一组接口),并提供连接数据库的协议标准,然后各个数据库厂商会遵循SUN的规范提供一套访问自己公司的数据库服务器的API出现。SUN提供的规范命名为JDBC,而各个厂商提供的,遵循了JDBC规范的,可以访问自己数据库的API被称之为驱动!
小总结
这个是连接池,格式通用,其中的“数据库名称改为自己的数据库名称,用户名和密码也是
import java.sql.*;
import java.util.LinkedList;
import java.util.Queue;
public class JDBCUTIL {
private static Queue<Connection> pool=new LinkedList<>();
private static Driver driver;
//在加载这个类时会自动执行static代码块的代码,这块代码只会在加载这个类的时候执行(即只会执行一次)
static {
try {
driver=new com.mysql.cj.jdbc.Driver();
//注册驱动类
DriverManager.registerDriver(driver);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
static String url="jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true";
static String user="用户名";
static String password="密码";
/**
* 获取一个数据库连接池
* @return 数据库连接
*/
public static synchronized Connection getConnection(){
if (pool.size()==0){
try {
pool.add(DriverManager.getConnection(url,user,password));
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return pool.poll();
}
/**
* 将用完的连接放回连接池
* @param connection 要释放的连接
*/
public static synchronized void release(Connection connection){
pool.add(connection);
}
}
static void ch(int ID, String name, double weight, int birthday) {
Driver driver = null;
Statement statement = null;
Connection connection = null;
ResultSet rs = null;
PreparedStatement ps1 = null, ps2 = null, ps3 = null, ps4 = null, ps5 = null;
JDBCUTIL J = new JDBCUTIL();
try {
driver = new com.mysql.cj.jdbc.Driver();
DriverManager.registerDriver(driver);
connection = DriverManager.getConnection(J.url, J.user, J.password);
statement = connection.createStatement();
//这行以前是固定格式
String sql = "update Cat set name = ?, weigth = ?, birthday = ? where ID=?;";
ps1 = connection.prepareStatement(sql);
ps1.setString(1, name);
ps1.setDouble(2, weight);
ps1.setInt(3, birthday);
ps1.setInt(4, ID);
}//这行以后是固定格式
catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
J.release(connection);
try {
statement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
第十三天
Javaweb前端知识
发一下我相关系列博客的链接
Javaweb零基础学习(壹)