个人笔记
1.登录mysql:mysql -u root -p root
2.sql:是结构化查询语言
3.sql语言的分类:
a.数据定义语言(DDL):Date Definition language
用来对数据库中的对象(数据库,表)进行添加(create) 删除(drop) 修改(alter)
查询所有的数据库:show databases;
切换到当前数据库:use test(数据库名);
查询当前数据库中所有的表:show tables;
添加(创建)数据库:create database 1605c(数据库名);
删除数据库:drop database 1605c(数据库名);
要在某一个数据库中创建表,首先需要切换到这个数据库:use 1605d(数据库名);
创建表:
语法:create table 表名
create table one(
字段 字段类型
id int,
name varchar(20)
);
查看某一个表的结构,即描述这个表的结构:desc one(表名);
修改表结构:
添加一列:
语法:alter table 表名 add 列名 字段类型
alter table one add password varchar(20);
修改一列:
语法:alter table 表名 change 旧列名 新列名 字段类型
alter table one change password pwd varchar(30);
修改的时候字段名和字段类型都可以修改
删除一列:
语法:alter table 表名 drop 列名;
alter table one drop pwd; 注意:删除的时候不需要写字段类型
删除表结构:drop table one(表名);
b.数据操纵语言(DML):Data Manipulation language
用来对表中的数据进行添加(insert) 修改(update) 删除(delete)查询(select)
往表中添加数据:
语法:insert into 表名 (字段1,字段2,字段3...) values(值1,值2,值3...)
insert into two (id,name,password) values(1,'cs','222');
修改表中的数据:
语法:update 表名 set 列名=值 where 条件(where:表示修改的条件)
update one set name='赵铜' where id=1;
语法:update 表名 set 列名=值 如果没有where条件,那么会把所有的数据全部修改了
update one set name='赵铜';
删除表中的数据;
语法:delete from 表名 where 条件(where:表示删除的条件)
delete from one where id=1;
语法:delete from 表名 如果没有where条件,那么会把所有的数据全部删除了
delete from one;
c.数据控制语言(DCL):Data Control Language
对用户或角色赋予权限以及收回权限
赋予权限:grant
收回权限:revoke
1.约束
主键:primary key
非空:not null
唯一:unique
自增:auto_increment
2.查询指定字段
select id from one;
select name from one;
3.查询所有字段
select id,name,pwd from one;
select * from one;
4.去除冗余 distinct
select distinct name from one;
select name from one;
5.运算符
算术运算符 + - * / %
select id,number,id+number from one;
逻辑运算符 =、<>、!=、<、<=、>、>=
select * from one where id>2;
关系运算符 and or not
select * from one where id>2 and number <100;
6.排序 order by asc;升序 desc;降序 可以根据多个字段排序
select * from one order by name; 默认升序
select * from one order by name asc;升序
select * from one order by name desc;降序
7.分页 limit n:第几页(即起始页) m:一页显示多少条
关键组 (n-1)*m , m
limit (0-1)*5,5
select * from one limit (0-1)*5,5;
8.别名 关键字as
使用关键字:select id as 编号, name as 姓名 ,price 价格,number 数量 from seven;
不使用关键字:select id 编号, name 姓名 from seven;
9.条件查询 where
select * from seven where id=1;
10.分组 group by
分组统计男女各多少人
alter table seven add sex varchar(10);
select * from seven;
update seven set sex='男' where id%2=0;
update seven set sex='女' where id%2!=0;
select count(*),sex from seven group by sex;
11.统计函数 count(*):统计有多少条
统计函数 max(id):最大值
select max(id) from seven;
统计函数 min(id):最小值
select min(id) from seven;
统计函数 avg(id):平均数
select avg(id) from seven;
统计函数 sum(id):求和
select sum(id) from seven;
1.多表查询
2.内连接:inner join:查询出两个表都有的数据
3.on 表示连个表连接的条件
select s.*,c.c_id,c.c_name from t_stu s
inner join t_class c on s.classid=c.c_id;
4.左连接:left join :以左表为主,查询出左表所有数据
select s.*,c.* from t_stu s
left join t_class c on s.classid=c.c_id;
5.右连接:right join :以右表为主,查询出右表所有数据
select s.*,c.* from t_stu s
right join t_class c on s.classid=c.c_id;
6.子查询
#子查询也称为嵌套查询
#子查询允许把一个查询嵌套在另一个查询当中。
#子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询。
#子查询可以包含普通select还可以包括的任何子句,
#比如:distinct、 group by、order by、limit、join和union等;但是对应的外部查询必须是以下语句之一:select、insert、update、delete
#查询学生年龄在17,19,20
#in子查询,在这个范围内
select * from t_stu
where age in(17,19,20);-- 不算子查询
select * from t_stu
where age in(select age from t_stu where age<=20) and id<4;
#any 子查询,任何一个
select * from t_stu
where age > any (select age from t_stu where age<=20);
#some是any的别名
1.常见的网络架构
C/S架构:客户端/服务器 Client/Server
B/S架构:浏览器/服务器 Browser/Server 我们学习的
2.web应用程序的工作原理
1.客户端(网页)与服务器的交互方式
a.Form方式是最基本的向服务器提交数据的方式
b.url地址栏的形式传递数据到服务端
c.xml形式
3.tomcat:默认端口号:8080
mysql默认端口号:3306
1.tomcat的目录结构
a.bin文件夹:存放tomcat服务器的启动和停止相关的批处理文件,
startup.bat:启动tomcat服务器
shutdown.bat:停止tomcat服务器
b.conf文件夹:存放tomcat服务器的配置文件
sever.xml:修改tomcat默认的端口号:8080
c.lib文件夹:存放jar包
d.logs文件夹:存放日志
每一次访问tomcat服务器都会在这个文件夹中产生相关记录,包含
访问时间,主机名,提交请求的方式,http状态码
e.temp文件夹:临时文件夹,tomcat停止后可以删除
f.webapps文件夹:存放的是web项目,其中每个文件夹都是一个项目,如果这个目录下已经存在的 是tomcat自带的
g.work文件夹:运行时生成的文件,最终运行的文件都在这里。
这里所有的文件都是通过webapps的项目生成的,
可以把这个目录删除,再次运行的时就会重新生成work目录(清除缓存)
2.web项目的目录结构
a.src:写java代码
b.WebRoot:发布到服务器的所有文件
meta-inf:相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用 程序、扩展程序、类加载器和服务
web-inf:
lib:存放jar
web.xml:这是web应用程序的配置文件,是web应用程序的入口
classes:存放编译后的.class文件
3.http状态码:
404:路径错误
200:成功
500:服务器内部错误
405:请求方式错误
jdbc
jsp(java server pages)---》java---》mysql
1.jsp:(java server pages):是javaweb服务器端的动态资源
在Java Server Page里面使用 Java 编程语言和类库
2.jsp页面的组成
a.html代码
b.<% %>:java小脚本
c.<%@ %>:指令
三大指令:1).page:设置当前页面的属性
language:页面的编程语言
import:导包
pageEncoding:设置页面的编码格式
2).taglib:到标签库
uri:标签库的位置
prefix:前缀
3).include:动态包含
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>叫c标签
d.注释:<!--我是html注释,你在浏览器可以看到我 -->
<%--我是jsp的注释,你在浏览器看不到我 --%>
e.<%= %>:表达式
f.<%! %>:声明
3.jsp的运行原理
浏览器访问jsp页面的时候将
转译 编译
index.jsp---------->index_jsp.java----------->index_jsp.class
4.jsp的本质是servlet
5.jsp的特点
a.一次编译到处运行
b.使用可重用的组件
c.采用标记简化页面开发
d.完善的存储管理和安全性
e.将显示和内容的生成分离
注意:jsp是由浏览器直接解释执行,这句话是错误的
html是由浏览器直接解释执行,这句话是正确的
1.form表单的提交方式:
get提交:http://localhost:8080/day3/loginVal.jsp?name=msg&password=123
?:表示后面的是参数
post请求:http://localhost:8080/day3/loginVal.jsp
2.九大内置对象
out:输出
request:一次请求
response:响应
session:一次会话
application:整个应用
page:当前页面
pageContext:当前页面的上下文环境
config:配置
exception:异常
3.四大作用域:
pageContext:当前页面的上下文环境
request:一次请求
session:一次会话
application:整个应用
4.三大指令
page:当前页面的属性
taglib:引入标签库
include:引入页面
5.六大动作:
include
useBean
param
forward
setProperty
getProperty
1.转发和重定向的区别:
A: 请求转发一般可以通过作用域来传值,重定向可以通过url进行传值
B: 转发时候路径前面可以加/,重定向时路径前面不能加/,加上会丢失项目名称
C: 请求转发不可以跨域,重定向可以跨域
D: 请求转发URL不变,重定向URL发生变化
2.session
A: session的过期时间可以在web.xml中配置,默认过期时间是30分钟
B: session的过期时间也可以在session创建时候设置
C: Web.xml中配置session的默认过期时间的单位是分钟
D: session.setMaxInactiveInterval(30)表示此session的过期时间是30秒
3.cookie:
A:默认为瞬时cookie
B:设置过期时间的方式cookie.setMaxAge(60*60*24*7),时间单位是秒;
4.session和cookie的区别:
A:session存放服务器端,cookie存在客户端(浏览器)
5.request.getAttribute("")返回值是object类型
Hibernate是一个数据持久化层的ORM框架.
Object:对象,java对象,此处特指JavaBean
Relational:关系,二维表,数据库中的表。
映射|映射元数据:对象中属性,与表的字段,存在对应关系。
Hibernate是轻量级JavaEE应用的持久层解决方案,是一个关系数据库ORM框架
ORM 就是通过将Java对象映射到数据库表,通过操作Java对象,就可以完成对数据表的操作
Hibernate提供了对关系型数据库增删改成操作
Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码
Hibernate是一个基于jdbc的主流持久化框架,是一个优秀的orm实现,它很大程度的简化了dao层编码工作 session.save(User);
Hibernate使用java的反射机制
Hibernate的性能非常好,因为它是一个轻量级框架。映射的灵活性很出色。它支持很多关系型数据库,从一对一到多对多的各种复杂关系
开启事务 beginTransaction()
获得事务 getTransaction()
提交事务:commit()
回滚事务:rollback()
l hibernate执行hql语句
l hql语句:hibernate提供面向对象查询语句,使用对象(类)和属性进行查询。区分大小写。
l 获得 session.createQuery("hql")
l 方法:
list() 查询所有
uniqueResult() 获得一个结果。如果没有查询到返回null,如果查询多条抛异常。
setFirstResult(int) 分页,开始索引数startIndex
setMaxResults(int) 分页,每页显示个数 pageSize
一级缓存:又称为session级别的缓存。当获得一次会话(session),hibernate在session中创建多个集合(map),用于存放操作数据(PO对象),为程序优化服务,如果之后需要相应的数据,hibernate优先从session缓存中获取,如果有就使用;如果没有再查询数据库。当session关闭时,一级缓存销毁。
:与一级缓存一样的存放位置,对一级缓存数据备份。保证数据库的数据与 一级缓存的数据必须一致。如果一级缓存修改了,在执行commit提交时,将自动刷新一级缓存,执行update语句,将一级缓存的数据更新到数据库。