第二阶段 JavaWeb
数据库
前端(H5,CSS,JS,JQ,Ajax,Bootstrap)
服务器Tomcat
服务器技术Servlet
数据库概念
数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。
RDBMS
数据库:存储、维护和管理数据的集合。
常见数据库
mysql,sqlserver,Oracle,db2 ===> R(Relation)DBMS ==> 关系型数据库
redis,MongoDB,HBase ==> NOSql ==> Not Only Sql
MySQL介绍
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FKRPTgmO-1660648260522)(day25-mysql.assets/image-20220815095840069.png)]
MySQL卸载
- 开始-控制面板-卸载程序-mysql
如果找到,右键卸载
- 删除隐藏文件
C:\ProgramData\MySQL
- 删除MySQL文件夹
删除MySQL的安装文件
- 删除注册表
打开注册表 windos+r 输入 regedit
\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\eventlog\Application\MySQL
\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\eventlog\Application\MySQL
将最后一个MySQL文件删除
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-42bjDLRg-1660648260524)(day25-mysql.assets/image-20220815100528760.png)]
MySQL安装
mysql现在安装的是5.7.
mysql的安装方式有两种:
一种是exe方式
另外一种解压版
这次就使用解压版安装
1 解压缩到非中文目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6gKvDglF-1660648260525)(day25-mysql.assets/image-20220815101235392.png)]
2 编写配置文件
2.1 在安装目录下新建my.ini的配置文件
打开文件后缀和隐藏文件显示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TOzyvv42-1660648260526)(day25-mysql.assets/image-20220815101352491.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QdU88aoH-1660648260527)(day25-mysql.assets/image-20220815101429202.png)]
2.2 新建文件内编写内容
[Client]
port = 3306
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=E:\mysql-5.7.20-winx64
# 设置mysql数据库的数据的存放目录
datadir=E:\mysql-5.7.20-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
特别说明:
basedir 要换成自己的路径
datadir 要换成自己的路径,且该data文件夹不能存在,因为后续会自动创建.现在存在反而后续会初始化失败!!
3 执行命令初始化
3.1 使用管理员权限打开命令提示符(CMD)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9UhEjF2G-1660648260527)(day25-mysql.assets/image-20220815101855345.png)]
3.2 进入到mysql的安装路径的bin目录下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UKbWKUvi-1660648260528)(day25-mysql.assets/image-20220815102056294.png)]
3.3 执行命令
安装服务
mysqld --install // 显示服务安装成功后继续执行命令
Service successfully installed // 成功了
mysqld --initialize --console // 初始化,成功后有一个临时密码 0.X*8Ym7AlH2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x8r5da4m-1660648260529)(day25-mysql.assets/image-20220815102430355.png)]
4 开启服务
执行命令,开启mysql服务
net start mysql
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HCsLjV4M-1660648260529)(day25-mysql.assets/image-20220815102630568.png)]
5 修改密码
登录到mysql
mysql -uroot -p
Enter password: 0.X*8Ym7AlH2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KQt0tzgW-1660648260530)(day25-mysql.assets/image-20220815102744623.png)]
修改密码
set password = password('123456');
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZsKe4zvz-1660648260530)(day25-mysql.assets/image-20220815102811473.png)]
退出再试
安装BUG
1 报错120.dll
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2WjF6X8X-1660648260531)(day25-mysql.assets/image-20220815112711058.png)]
下载安装
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Stko82MP-1660648260531)(day25-mysql.assets/image-20220815112743401.png)]
双击安装后,重新执行命令
2 没有服务名
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kHxLVVsK-1660648260532)(day25-mysql.assets/WNCS}CABM0VA~E%9T03RH.png)]
缺失一个步骤,需要执行命令 mysqld --install,后再开启服务
3 初始化失败
执行完mysqld --initialize --console 后,没有出现密码
- 确定my.ini配置文件内容是否正确
- 安装路径内是否已经存在data文件夹,如果存在的话删除data文件再试
4 万能解决方案
1 认真,慢
2 检查my.ini内容是否正确
3 管理员权限进入cmd
4 执行命令先删除服务 mysqld remove
5 再重新安装服务器mysqld --install
6 在重新初始化产生密码
7 启动服务
…
配置环境变量
选择我的电脑–>右键属性–>高绩系统设置–>系统环境变量
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hoqse9AB-1660648260533)(day25-mysql.assets/image-20220815113727201.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-le7KwleG-1660648260533)(day25-mysql.assets/image-20220815113746981.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wnFolCA9-1660648260534)(day25-mysql.assets/image-20220815113841015.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qD4L1gKN-1660648260534)(day25-mysql.assets/image-20220815113935206.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UkhoFfZA-1660648260535)(day25-mysql.assets/image-20220815114055811.png)]
客户端基本操作
-
启动服务
-
命令启动 net start mysql
-
图形化启动
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bpoWJjqq-1660648260535)(day25-mysql.assets/image-20220815142230814.png)]
-
现在,一般情况下,开机自启的.
-
-
登录mysql
- 使用命令行登录 mysql -uroot -p123456
- Navicat连接
-
退出
- exit
SQL语言
SQL:Structure Query Language。(结构化查询语言)
SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。现在遵循的SQL99标准
各数据库厂商都支持ISO的SQL标准。普通话
各数据库厂商在标准的基础上做了自己的扩展。方言
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据-增删改);
DQL(*)(Data Query Language):数据查询语言,用来查询记录(数据)。
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
注意: ==sql语句以**;**==结尾(偶尔见到有\g结尾 , \G 也可以…)
DDL
DDL主要是针对数据库,表,列的操作,即创建,查询,修改,删除
查询数据库
show databases;
创建数据库
create database 库名;
修改
创建数据库时,默认字符集是utf8.
修改命令只能修改字符集,不能修改数据库名.
alter database ....
删除数据库
drop database 库名;
操作表的前提是,得先进入某个数据库,才能操作数据库内部的表
选择/进入数据库
use 库名;
查询当前所在库
select database();
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Vuuc1xC-1660648260535)(day25-mysql.assets/image-20220815145042363.png)]
查询当前库下所有表
show tables;
创建表
create table 表名(
字段1 数据类型(长度),
字段2 数据类型(长度),
...
);
常用数据类型
数据类型 | 解释 | 长度 |
---|---|---|
int | 整型 | 11,可以不写,默认11 |
varchar | 字符串 | 0-255 |
char | 字符串 | 0-255 |
double | 浮点型 | (5,2)总长5位,其中包含两位小数,999.99 |
date | 日期 | 没有长度 |
datetime | 日期时间 | 没有长度 |
timestamp | 时间戳 | 没有长度 |
数据库中,字符串不分单字符,所有字符串都是单引号括.使用char和varchar都可以代表字符串
varchar和char的区别
var是variable的缩写,就是可变化的字符串,例如varchar(10), 存入’张三’
char是定长,例如char(10),存入’张三 ’
需求:
创建stu表,有字段学号整型,姓名字符型,性别字符型,年龄整型,生日日期型
mysql> create table t_stu (
-> sid int(11),
-> name varchar(20),
-> sex char(1),
-> age int,
-> birthday date
-> );
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oHJ1gN77-1660648260536)(day25-mysql.assets/image-20220815151626031.png)]
修改表名
rename table 旧名 to 新名;
修改列名
alter table 表名 change 旧名 新名 数据类型(长度)
查看表结构
desc 表名;
加一列
alter table 表名 add 新列名 数据类型(长度);
删列
alter table 表名 drop 列名;
删表
drop table 表名;
总结
创建–> create database/table
修改 --> alter database/table
删除–> drop database/table
查询 --> show databases/tables
图形化界面
SQLYog
Navicat
DBeaver
Navicat图形化操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HbnXiGWp-1660648260536)(day25-mysql.assets/image-20220815161253508.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9nLs7UDN-1660648260537)(day25-mysql.assets/image-20220815161440343.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VTDEHgnO-1660648260537)(day25-mysql.assets/image-20220815161546701.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MlwdWNqN-1660648260538)(day25-mysql.assets/image-20220815161929668.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xxTs9crL-1660648260538)(day25-mysql.assets/image-20220815162114748.png)]
Navicat命令操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VhRO1guk-1660648260538)(day25-mysql.assets/image-20220815162241702.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GZ8EePfq-1660648260539)(day25-mysql.assets/image-20220815162400393.png)]
Navicat编辑器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XTJ6HtQu-1660648260540)(day25-mysql.assets/image-20220815162609999.png)]
DML
数据操作语言,针对表中数据进行操作,主要是对表数据进行增,删,改。
增加(insert)
/*
语法
insert into 表名(字段1,字段2,...) values (值1,值2,...);
其他用法:
1 当要插入全部列时,表名后的列名可以省略
此时要注意,值的顺序要与原表的顺序一致
2 可以指定部分列,插入数据
列和值的顺序,数量,数据类型要一一对应
3 字符串使用单引号
4 日期,暂时也是使用单引号括起
5 可以支持同时插入多条数据
values后用()分别写多条数据,用逗号隔开
*/
-- 标准语法
insert into stu (id,name,age,sex,birthday)
values (1,'张三丰',130,'男','1890-01-01');
-- 省略
insert into stu values(2,'张无忌',18,'男','1890-01-01')
-- 插入部分数据
insert into stu (id,name) values (3,'赵敏');
insert into stu (id,name) values (4,6); -- 可以,因为mysql支持类型转换,单不建议
insert into stu (id,name) values ('5',6);-- 可以,因为mysql支持类型转换,单不建议
-- 日期类型,支持yyyy-MM-dd或yyyy/MM/dd
insert into stu values(7,'武器大师',18,'男','1990/01/01')
-- 插入多条数据
insert into stu values
(8,'狗头',18,'公','1990/01/01'),
(9,'雷克顿',19,'公','1991/01/01'),
(10,'阿兹尔',20,'男','1981/01/01');
修改(update)
/*
语法:
update 表名 set 字段1=值1[,字段2=值2,...] [where 字段 = 值];
*/
-- 标准
update stu set age = 25,name = '曾阿牛' where id = 2;
-- where条件虽说可加可不加.但是不加的话将影响全部数据.
-- 所以,强烈建议!!!以后更新必须加条件。
删除(delete)
/*
语法:
delete from 表名 [where 字段 = 值];
从表中删除数据,强烈建议加条件,否则会删除全部数据!!!!
公司实际开发,一般不会真的删除数据,
会在表中设计[状态]字段,删除其实是在执行update,更新状态而已.
*/
delete from stu where id = 10;
values
(8,‘狗头’,18,‘公’,‘1990/01/01’),
(9,‘雷克顿’,19,‘公’,‘1991/01/01’),
(10,‘阿兹尔’,20,‘男’,‘1981/01/01’);
## 修改(update)
```sql
/*
语法:
update 表名 set 字段1=值1[,字段2=值2,...] [where 字段 = 值];
*/
-- 标准
update stu set age = 25,name = '曾阿牛' where id = 2;
-- where条件虽说可加可不加.但是不加的话将影响全部数据.
-- 所以,强烈建议!!!以后更新必须加条件。
删除(delete)
/*
语法:
delete from 表名 [where 字段 = 值];
从表中删除数据,强烈建议加条件,否则会删除全部数据!!!!
公司实际开发,一般不会真的删除数据,
会在表中设计[状态]字段,删除其实是在执行update,更新状态而已.
*/
delete from stu where id = 10;