安装数据库
1.检查数据库是否安装和如何进入数据库
win+r键进入cmd窗口,输入命令mysql -uroot -proot(用户名和密码自己定的)如果出现’mysql’不是内部命令说明可能没装数据库或者没配置环境变量
如果重装数据库需要暂停之前的服务1.右键此电脑点管理 2.选中服务和应用程序展开点击服务找到mysql的服务右键点击停止服务
2.安装数据库
找到数据库的安装包(本电脑在:D:\第二阶段\第二阶段软件(0625已更新)\第二阶段软件(0625已更新)),解压后双击运行,点击下一步,后面会让你选择安装位置默认即可,下一步会让你写密码(我这里写的root)上班后不能写太简单,勾选utf-8,下一步写服务名字,选择端口(这里端口写的3306)然后点击下一步点击安装,本机安装在(C:\Program Files\MariaDB 10.3)
3.配置数据库
找到安装数据库的位置点到bin目录下本机在(C:\Program Files\MariaDB 10.3\bin),然后右键此电脑点属性点高级系统设置再点环境变量,在系统变量中找到path编辑再点新建把路径粘贴就行了,然后再进cmd(重新开一个)看数据库版本:mysql–version
mysql数据库相关命令操作
1.连接mysql数据库
mysql -uroot -proot
2.查询mysql服务器中的数据库要写注释的话可以用#,–等
show databases;
3.进入某一数据库
use 库名;
4.查询当前库中的所有表要先进如某一个库才可以
show tables;
5.删除库(如果mydb1库存在则删除,如果不存在,也就不执行删除操作)
drop database if exists mydb1;
6.创建库(如果不存在mydb1库就创建指定编码为utf8,mysql中不支持横杠(-),所以utf-8要写成utf8)
create database if not exists mydb1 charset utf8;
7.cmd导入数据库:1.先进入cmd,连接mysql
2.设置编码 set names utf8
3.source 数据的地址:如:source D:/cgb/
创建,删除,查看表
1.先进入某一个库,然后删除表(如果存在就删除)
drop table if exists stu;
2.创建stu表(编号[数值类型]、姓名、性别、出生年月、考试成绩[浮点型])
char是定长:假设你给10个字节的空间但你只用了两个剩余的他会有-填充造成资源的浪费
varchar是不定长:剩余的空间会给其他数据使用
create table stu(
id int primary key auto_increment, – 给id添加主键约束,并设置自增
name varchar(50),
sex varchar(2),
birthday date(30),
score double(20)
);
3.查看表的结构
desc 表名;
新增,更新,删除
1.insert into 表名(列名1,列名2,列名3…) values(值1,值2,值3…);在插入数据时最好先设置编码:set names gbk;
insert into stu(id,name,gender,birthday,score) value(null,‘tom’,‘male’,‘2000-3-4’,89);
2.修改:update 表名 set 列=值,列=值,列=值…[WHERE子句];
修改stu表中编号为1的学生成绩,将成绩改为83分
update stu set score=83 where id=1;
update stu set gender=‘male’,score=99 where id=3;
3.删除符合条件的:delete from 表名 where 条件;
delete from stu where id>2;
查询
1.select 列名称 from 表名;
2.用distinct剔除重复数据在select之后、列名之前
select distinct dept,job from emp;
select name,sal from emp where sal>3000;
select name,sal+bonus from emp where sal+bonus>3500;
3.ifnull(列名, 值)函数: 判断指定的列是否包含null值,如果有null值,用第二个值替换null值
select name,sal+ifnull(bonus,0) from emp where sal+ifnull(bonus,0)>3500;
4.使用as为表头指定别名,as也是可以省略的
select name as 姓名,sal+ifnull(bonus,0)as 总薪资 from emp where sal+ifnull(bonus,0)>3500;
5.查询emp表中【薪资在3000和4500之间】的员工,显示员工姓名和薪资,用between…and…
select name,sal from emp where sal between 3000 and 4500;
select sal,name from emp where sal >4000 or sal<2000;
select name,sal,ifnull(bonus,0) from emp where sal>3000 and ifnull(bonus)<600;
模糊查询"%"表示0或多个任意的字符
,"_"表示一个任意的字符
。
select 列名 from 表名 where 列名 like 值;
select name from emp where name like ‘刘%’;
查询emp表中以刘开头两个字的
select name from emp where name like ‘刘_’;
多行函数多行函数在统计时会对null值进行过滤,直接将null值丢弃,不参与统计。
count( 列名 | * )统计结果集中指定列的记录的行数。
max( 列名 )统计结果集中某一列值中的最大值
min( 列名 )统计结果集中某一列值中的最小值
sum( 列名 )统计结果集中某一列所有值的和
avg( 列名 )统计结果集中某一列值的平均值
分组查询
多行函数可以和分组相配合使用
语法:select 列名 from 表名 group by 列;
select name,dept from emp group by dept;
排序查询 ASC(默认:可以不写)升序,即从低到高;DESC 降序,即从高到低,不能不写
语法:select 列名 from 表名 order by 列名 asc/desc;
对emp表中所有员工的薪资进行升序(从低到高)排序,显示员工姓名、薪资
select name,sal from emp order by sal asc;
select name,bonus from emp order by bonus desc;
分页显示
查询公式为:limit (页码-1)*每页显示记录数, 每页显示记录数
查询emp表中的所有记录,分页显示:每页显示3条记录,返回所有页的数据
查询第一页的
select * from emp limit 0,3;
查询第二页的
select * from emp limit 3,3;
求emp表中薪资最高的前3名员工的信息,显示姓名和薪资
select sal,name from emp order by sal desc;
select name,sal from emp order by sal desc limit 0,3;–要写order by 不写的话默认取得原表得前三条记录
主键约束
如果是要表示两张表的数据之间存在对应关系,只需要在其中的一张表中添加一个列,保存另外一张表的主键,就可以保存两张表数据之间的关系。
多表查询
笛卡尔积查询虽然有错误但可以通过where子句将错误数据剔除
–员工所属的部门编号,等于部门的编号
select * from dept,emp where emp.dept_id=dept.id;–添加where条件dept_id列对应部门表的id
左外连接查询将左边表中的所有记录都查询出来,右边表只显示和左边相对应的数据,如果左边表中某些记录在右边没有对应的数据,右边显示为null即可
查询【所有部门】及部门对应的员工,如果某个部门下没有员工,员工显示为null
select * from dept left join emp on emp.dept_id=dept.id;
右外连接查询将右边表中的所有记录都查询出来,左边表只显示和右边相对应的数据,如果右边表中某些记录在左边没有对应的数据,可以显示为null
查询【所有员工】及员工所属部门,如果某个员工没有所属部门,部门显示为null
select * from dept right join emp on emp.dept_id=dept.id;
多表查询别名
–扩展:可以为表名加别名,加了别名后就需要使用别名替换表名
select d.name,e.name from dept as d,emp as e where e.dept_id=d.id and d.name=‘培优部’;
where和having子句得区别
(1)相同点: where和having都可以对记录进行筛选过滤。
(2)区别:where是在分组之前,对记录进行筛选过滤,并且where子句中不能使用多行函数以及列别名(但是可以使用表别名)
(3)区别:having是在分组之后,对记录进行筛选过滤,并且having子句中可以使用多行函数以及列别名、表别名。
Navicat软件得使用
1.创建数据库:右键已经存在得数据库选新建数据库
2.选择建完得数据库选择表新建表,编辑要建得列,要增加行选择上方得添加字段,保存得时候编辑表名
3.双击这个表填写信息,要增加行先保存然后按下箭头
Navicat导入库
复制库然后点击navicat的新建查询,然后把库复制进去再点运行,然后右键刷新就行了
哔哩哔哩视频链接:https://www.bilibili.com/video/BV1yA41147Vi/
使用@Test单元测试方法必须满足以下条件
(1)方法必须是公共的
(2)方法必须是非静态的
(3)方法必须是无返回值的
(4)方法必须是无参数的
(5)进行单元测试的方法或类,命名时不要命名为 Test/test
sql注入攻击
传来的参数包含特殊符号(如:or,#,–,'等)让sql语意发生变化,后台执行的sql语句是拼接而来的
防止sql注入攻击
(1)使用正则表达式对用户提交的参数进行校验。如果参数中有(# – ’ or等)这些符号就直接结束程序,通知用户输入的参数不合法
(2)使用PreparedStatement对象来替代Statement对象。
tomcat下载,安装,启动,配置
下载地址
本机安装位置:D:\javaDevelop\apache-tomcat-8.5.34
配置
解压后还需要配置JAVA_HOME环境变量,该变量指向jdk的根目录,指定tomcat启动时使用哪一个位置的jdk
在系统配置jdk的环境变量即可,注意:变量值指向JDK的根目录(不是bin目录),变量值的后面也不要加分号
启动
找到安装tomcat的位置进入bin目录找到startup.sh双击即可启动shutdown.bat可以关闭
修改端口
tomcat默认监听的是8080端口,如果要修改端口进入tomcat安装目录注意(本机在:D:\javaDevelop\apache-tomcat-8.5.34\conf)找到里面的service.xml(我的在63行)将文件中的 <Connector>
标签上的 port 属性的值改为 80即可
端口占用问题
方法:运行shutdown.bat文件将服务器按照正常流程再关闭一次,如果不成功用第二种方法
方法2:打开一个cmd窗口通过netstat -ano | findStr 80查看当前系统中活动进程,通过taskkill /f /pid 进程id杀死进程