Java三部曲(二)JavaWeb

前言

1.什么是JavaWeb?

Web:全球广域网,也成为万维网(www),能通过浏览器访问的网站。

JavaWeb:用Java开发网站的技术栈。

2.本教程的基础框架

网页端:展现数据

HTML:制作页面

CSS:美化页面

JavaScript:产生丰富的动态效果

Ajax+Vue+ElementUI:前端框架技术

数据库:存储和管理数据

MySQL:关系型数据库

JDBC:Java语言操作数据库的api

Maven:项目管理框架

MyBatis:简化操作JDBC的框架

JavaWeb程序:逻辑处理

Tomcat+HTTP+Servlet:

Request+Response:

JSP:

Cookies+Session:

Filter+Listener:

一.数据库

1.1数据库相关概念

数据库:

存储数据的仓库,数据是有组织地进行存储。

DataBase,简称为DB,下一级是数据表,表中存的是数据。

数据库管理系统:

管理数据库的大型软件。

DataBase Management System,DBMS。

SQL结构化查询语言:

操作关系型数据库的编程语言。

定义操作所有关系型数据库的统一标准。

1.2安装MySQL

建议安装mysql5.5等稳定版,不要安装8.0。并且配置环境变量等,这些有专门的教程,在此就不再赘述。

1.3启动与关闭MySQL服务

打开cmd,键入net start mysql启动数据库,mysql -u用户名 -p密码 -h要访问的ip地址 -P端口,例如:mysql -uroot -p1234 -h127.0.0.1 -P3306

键入net stop mysql即停止mysql服务,exit或quit退出mysql

1.4mysql数据模型

关系型数据库

关系型数据库的建立在关系模型基础上的数据库,简单来说,关系型数据库是由多张能互相连接的二维表组成的数据库。

优点:1.都是表结构,格式一致,易于维护;2.使用通用的SQL语言操作,使用方便,可用于复杂查询;3.数据存储在磁盘中,安全。

语句分类:DDL(操作数据库、表等);DML(对表中数据进行增删改);DQL(对表中数据进行查询);DCL(对数据库进行权限控制)

1.4常用数据库语句

1.4.1DDL-操作数据库

Show DataBases;-- 查看数据库
create database if not exists db1;-- 若不存在db1数据库就创建它
drop database if exists db1;-- 若db1数据库存在就删除它
use db1;-- 启用数据库db1
SELECT DataBase()-- 查看当前在用的数据库

1.4.2DDL-查询表&创建表

use mysql;-- 启用数据库mysql
show tables;-- 查询当前数据库中的所有表
desc func;-- 查询表func
create table tb_user(id int,username varchar(20),password varchar(32));-- 创建表tb_user,包含字段id,username,password,其中id是int类型,username是字符串类型,且其长度不能超过20位

数据类型:

数值型

字符串型

其中的char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和

字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char是以空间换时间,其性能会更高些。

日期时间型

案例:设计一张学生表,字段如下,请注重数据类型、长度的合理性等

  1. 编号

  1. 姓名,姓名最长不要超过10个汉字

  1. 性别,因为取值只有两种可能,因此最多一个汉字

  1. 生日,取值为年月日

  1. 入学成绩,小数点后保留两位

  1. 邮件地址,最大长度不超过64

  1. 家庭联系电话,不一定是手机号码,可能出现-等字符

  1. 学生状态(用数字表示,正常,休学,毕业等)

create table student(
    
    id int,
    name varchar(10),
    gender char(1),
    birthday date,
    score double(5,2),
    email varchar(64),
    tel varchar(15),
    states tinyint
);

1.4.3DDL-操作表

修改表

ALTER TABLE 表名 RENAME TO 新的表名;-- 修改表名
ALTER TABLE 表名 ADD 列名 数据类型;-- 添加一列
ALTER TABLE 表名 MODIFY 列名 新数据类型;-- 修改数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;-- 修改列名和数据类型
ALTER TABLE 表名 DROP 列名;-- 删除列字段

请将student表名改为stu,然后添加一列address varchar(50),然后修改address的数据类型,然后修改数据类型,继续修改列名和数据类型,最后删除列。

alter table student rename to stu;-- 修改表名
alter table stu add address varchar(50);-- 添加字段address varchr类型,限制50
alter table stu modify address char(50);-- 修改address数据类型为char(50)
alter table stu change address addr varchar(50);-- 修改列名为address,修改数据类型为varchar(50)
alter table drop addr;-- 删除字段addr

1.4.4DML-增删改表内数据

添加数据

INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...);-- 给指定的列添加数据
INSERT INTO 表名 VALUES(值1,值2,...);-- 给全部列添加数据
INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);-- 给指定列批量添加数据
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);-- 批量添加数据

修改数据

UPDATE 表名 SET 列名1=值1,列名2=值2,...[WHERE 条件];-- 修改表数据,若不加where,会对指定列的所有数据进行修改
-- 例如将张三的id改为3,性别改为女
UPDATE stu SET id = 3,gender = '女' WHERE name = '张三';

删除数据

DELETE FROM 表名 [WHERE 条件];-- 删除WHERE指定的数据
DELETE FROM 表名;-- 会直接删完表中所有数据,但是会保留表

1.4.5DQL-数据查询

基础查询

SELECT 字段列表 -- 尽量不要用*,因为*不好分辨是哪些字段
FROM 表名列表 
WHERE 条件列表 
GROUP BY 分组字段 
HAVING 分组后条件 
ORDER BY 排序字段 
LIMIT 分页限定;

去除重复记录

SELECT DISTINCT address from stu;-- 查询字段address,但是要去重

起别名

SELECT address AS '地址' from stu;-- 从stu表中查取address并起别名叫'地址'

条件查询

SELECT 列名 FROM 表名 WHERE 条件字句;

条件字句有如下几种:

模糊查询

/*
LIKE关键字可以匹配通配符:_匹配单个字符,%匹配多个字符
*/
-- 查询姓'马'的学员信息
SELECT * FROM stu WHERE `name` LIKE '马%';
-- 查询第二个字是'花'的学员信息
SELECT * FROM stu WHERE `name` LIKE '_花%';
-- 查询名字中包含'德'的学员信息
SELECT * FROM stu WHERE `name` LIKE '%德%';

排序查询

排序方式:ASC(默认)升序排列,DESC降序排列

-- 如果有多个排序条件,当前面的条件值一样时,才会根据第二条件进行排序
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段2 [排序方式2],...;

-- 查询学生信息,按年龄升序排列
SELECT * FROM stu ORDER BY age;
-- 查询学生信息,按数学成绩降序排列
SELECT * FROM stu ORDER BY math DESC;
-- 查询学生信息,按数学成绩降序排列,如果数学成绩一样,再按英语成绩升序排列
SELECT * FROM stu ORDER BY math DESC,english;

聚合函数:将一列数据作为整体,进行纵向计算

常见聚合函数:

聚合函数写法:

SELECT 聚合函数(列名) FROM 表;-- 注意null值不参与聚合计算
-- 1.统计班级一共有多少学生
SELECT COUNT(1) FROM stu;
-- 2.查询数学最高分
SELECT MAX(math) FROM stu;
-- 3.查询数学总分
SELECT SUM(math) FROM stu;
-- 4.查询数学均分
SELECT AVG(math) FROM stu;

分组查询

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
-- 查询男同学和女同学各自的数学均分
SELECT sex,AVG(math) FROM stu GROUP BY sex;
-- 查询男同学和女同学各自的数学均分,以及各自人数
SELECT sex,AVG(math),COUNT(1) FROM stu GROUP BY sex;
-- 查询男生和女生各自的数学均分,以及各自人数,要求:分数低于70分的不参与分组
SELECT sex,AVG(math),COUNT(1) FROM stu WHERE math >= 70 GROUP BY sex;
-- 查询男同学和女同学各自的数学均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2
SELECT sex,AVG(math),COUNT(1) FROM stu WHERE math >= 70 GROUP BY sex HAVING COUNT(1) > 2;

注意:执行顺序上,WHERE>聚合函数>HAVING,所以HAVING可以在分组后,过滤聚合函数的结果,但是WHERE不可以。

分页查询

如下图所示,大家在很多网站都见过类似的效果,如京东、百度、淘宝等。分页查询是将数据一页一页的展示给用户看,用 户也可以通过点击查看下一页的数据。

其具体语法如下:

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;-- 上述语句中的起始索引是从0开始
-- 从0开始查询,查询3条数据
SELECT * FROM stu LIMIT 0,3;
-- 每页显示3条数据,查询第一页数据
SELECT * FROM stu LIMIT 0,3;
-- 每页显示3条数据,查询第二页数据
SELECT * FROM stu LIMIT 3,3;
-- 每页显示3条数据,查询第三页数据
SELECT * FROM stu LIMIT 6,3;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会抓鼠鼠的阿猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值