目录
相关服务:泰国站群服务器
01.回顾
-
Linux:基于Unix的,直接运行在硬件之上的操作系统
-
安装与卸载:
-
虚拟机:Windows平台之上的一款软件,可以虚拟出多个独立空间
-
-
挂载:如果Linux系统需要装很多软件,自己操作比较麻烦的话,可以直接拷贝别人的Linux文件过来,然后点击里面的后缀名为vmx的文件双击,就可以将别人的操作系统挂载到自己的VMware。
-
Linux目录系统:
-
/:根,root用户的家目录
-
home:普通用户的家目录(支持多用户登录和使用)
-
usr:多用户共享目录
-
etc:存放系统的配置文件
Linux相关命令
目录切换
cd ../ :上一级目录,进入上一层目录
cd.. :当前目录,运行可执行文件的时候需要
cd 目录: 相对于当前所在的目录,在当前目录下找子目录
cd /目录 :绝对定位,直接从根目录下找对应的目录
cd~:可以省略,切换到用户主目录 如果是管理员:切换到root目录, 如果是普通用户:切换到home/用户名
cd-:切换到上一个目录,相当于后退
目录操作
创建目录:
单层目录: mkdir 目录名
多个目录: mkdir 目录名A 目录名B
多层目录: mkdir -p A/B/C
修改目录名:mv 目录名 新名称
剪切目录:mv 目录名 新位置
删除目录:rm -rf 目录名 拷贝目录:cp -r 目录名 新位置
查看目录
命令: ls //查看文件
命令: ls -l //可以看到该目录下的所有目录和文件的详细信息===>简写ll
命令: ls -a //可以看到该目录下的所有文件和目录,包括隐藏的
文件操作
创建文件:touch 文件名
查看文件:cat/more/less/tail/head 文件名
打开文件:vim 文件名
进入文件编辑模式:按i/a/o
退出编辑模式:按esc
进入低行模式(最下面那行):按:
按wq(写入并退出)或q!(强制退出不保存)或wq!(强制写入并退出)
改名,拷贝与目录操作一致
压缩包命令
打包:tar -zcvf 压缩包名.tar.gz 被压缩的文件1......
解压:tar -xvf 压缩包名.tar.gz
解压到指定目录:tar -xvf 压缩包名.tar.gz -C 目标目录
其他命令
查看所有进程:ps -ef
管道查询:ps -ef | grep xxx
展示所在位置:pwd
查看端口使用情况:netstat -an
-
02.数据库概述和常见的数据存储方式
先学数据库,再学前端,然后学服务器。
数据库概述
存储数据的仓库。
浏览器:即我们所说的前端,作用是展示。
服务器:即后台,作用是存储页面,存放执行业务逻辑的java代码。
数据库:java程序是否可以存储数据?
可以说不能:当程序停止后,内存会被释放,数据消失不见。
也可以说能:java程序中有序列化和反序列化的功能。
在java程序中有序列化,作用是把java的一个类序列化到硬盘进行永久保存。缺点是java程序序列化后的文件只有java程序能够读取和使用。不方便增删改查。
常见的存储数据方式
硬盘存储(关系型数据库)
优点:不会导致数据丢失
缺点:执行效率低(CPU加载数据来自内存,内存数据来自硬盘)
普通文件txt,excel...存储没有特定的数据格式,操作起来不方便。
MySQL数据库是硬盘数据库:将数据按照特定的格式存放,方便后期的使用(增删改查)
内存存储(非关系型数据库)
优点:存储速度快
缺点:当程序停止运行后,数据会丢失。
redis是内存数据库。
03数据库管理系统,数据库和表的关系
-
数据库管理系统(DBMS):MySQL软件
-
database:本质是文件夹
-
table:表,本质上是按照特定格式存储数据的文件
-
行:一行数据,描述一个对象的数据信息,一条记录对应一个Java类对象。
-
列(字段):描述本列存放的数据信息。由字段名+字段类型组成。
**没完成**04 MySQL数据库安装-Linux版
注意:MySQL是数据库管理系统,真正的数据库是database
在Linux服务器上安装MySQL软件
05MySQL数据库安装-windows版
服务器
1. 下载
MySQL :: Download MySQL Installer
2. 安装
我们采用自定义安装模式:选择32位或64位
默认即可:
说明,如果没有该页面就上一步,选择高级选项:
安装完成
开始配置mysql
配置:
3. mysql多实例安装
使用安装器是无法安装多实例的,只能手动安装。
1、 复制安装好的3380文件夹到3381
2、 进入3381\logs目录下将所有文件删除
3、 进入3381\data目录,将所有的log文件删除(注意不是所有文件哦!)
4、 打开 my.ini 文件,将所有的 3380 替换为 3381
5、 修改serverid为81
6、 打开cmd,进入C:\mysql-5.6\3381\bin目录,执行如下命令: .\mysqld.exe install MySQL-3381 --defaults-file="C:\mysql-5.6\3381\data\my.ini" 注意改为自己的配置文件路径
7、 进入系统服务查看
8、 修改启动方式为手动,安装完成。
9、 如需删除服务执行如下命名即可: .\mysqld.exe remove MySQL-3381
客户端
下载SQLyog
06windows版mysql启动关闭和连接
关闭命令:net stop MySQL56
启动命令:net start MySQL56
访问:mysql -uroot -proot
mysql -h主机地址 -uroot -proot
连接Linux上的MySQL:mysql -h192.168.190.149(Linux的ip) -uroot -proot
三种方式连上MySQL
-
dos命令(命令行):mysql -uroot -proot
-
客户端软件:sqlyog 输入用户名和密码连接
-
java代码:Java程序(JDBC)
sqlyog
傻瓜式安装
-
点新建,名称随便写
-
输入主机地址,连接上
07sql概述和分类
sql作用和分类
作用:借助sql操作mysql管理系统
分类:
-
DDL:数据定义语言。创建数据库,创建表,创建表中的字段
-
DML:数据操作语言。操作表中的数据,增删改查
-
DCL:数据控制语言。操作MySQL的用户,权限
-
TCL:事务控制语言。操作MySQL中的事务
-
DQL:数据查询语言。查询
sql语法
-
SQL语句可以单行或者多行书写,必须以分号结尾
-
可使用空格和缩进来增强语句的可读性。
-
MySQL数据库的SQL语句不区分大小写,建议大写,但是我们不听,我们小写
-
3种sql注释 --空格 # /**/
08 DDL操作数据库结构
在命令行中执行:
操作数据库语法
1.直接创建数据库(使用默认的编码方式) CREATE DATABASE 数据库名; 2.判断是否存在并创建数据库(了解) CREATE DATABASE IF NOT EXISTS 数据库名; 3.创建数据库并指定字符集(了解) CREATE DATABASE 数据库名 CHARACTER SET 字符集; 4.查看所有的数据库 SHOW DATABASES; 5.查看某个数据库的定义信息 SHOW CREATE DATABASE db1; 6.修改数据库字符集格式 ALTER DATABASE db1 DEFAULT CHARACTER SET utf8; 7.删除数据库 DROP DATABASE 数据库名; 8.使用数据库 use 数据库名;
09操作表结构 创建和查看表
在sqlyog里面执行
写好语句后,按左上角执行查询
操作表语法
这样写好之后,直接点执行查询是没有用的,要选中语句再执行。
-- 创建表
1.创建表
create table 表名(
字段名 字段类型 约束,
字段名 字段类型 约束
);
2.快速创建一个表结构相同的表
CREATE TABLE 新表名 LIKE 旧表名;
-- 查看表
3.查看某个数据库中的所有表
SHOW TABLES;
4.查看表结构(查看表有多少个字段,什么类型)
DESC 表名;
5.查看创建表的SQL语句
SHOW CREATE TABLE 表名;
-- 修改表: 了解
/*
修改表结构:
6.添加表列(添加一个字段)
ALTER TABLE 表名 ADD 列名 类型;
7.修改列类型(修改字段类型)
ALTER TABLE 表名 MODIFY 列名 新的类型;
8.修改列名(修改字段名称)
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
9.删除列(删除字段)
ALTER TABLE 表名 DROP 列名;
10.修改表名(修改表名)
RENAME TABLE 表名 TO 新表名;
11.修改表的字符集(编码方式)
ALTER TABLE 表名 character set 字符集;
*/
-- 需求: 给stu1表中添加一个字段, birthday(date)
ALTER TABLE stu1 ADD birthday DATE;
ALTER TABLE stu1 ADD sex CHAR(2);
-- 需求: 将stu1表中的name的类型改为varchar(50)
ALTER TABLE stu1 MODIFY `name` VARCHAR(50);
-- 需求: 将stu1表中的name改为username
ALTER TABLE stu1 CHANGE `name` username VARCHAR(20);
-- 需求: 删除stu1表中的sex
ALTER TABLE stu1 DROP sex;
-- 需求: 将stu1表名改为student
RENAME TABLE stu1 TO student;
RENAME TABLE student TO stu1;
-- 需求: 修改stu1表的字符集 gbk
ALTER TABLE stu1 CHARACTER SET utf8;
-- 删除表
12.直接删除表: DROP TABLE 表名;
10上午总结
数据库:
作用: 存储数据的仓库,将数据按照特征格式存储到文件中.
数据存储位置:
关系型数据库(硬盘数据库):
特征: 将数据存储到硬盘上,存储的数据和数据之间有一定的关联关系
优点: 不会导致数据丢失
缺点: 执行效率低
代表产品: Mysql Oracle
非关系型数据库(内存数据库):
特征: 将数据存储到内存中,存储的数据和数据之间没有任何的关联关系
优点: 执行效率高
缺点: 可能会导致数据丢失
代表产品: redis MongoDB
Mysql安装与卸载:
Linux版本:
直接在线安装:
yum : 平台,用于托管Linux软件的平台
Docker: 项目一前置课
Windows版本:
安装步骤安装即可
Mysql结构:
数据库管理系统(DBMS): mysql软件
数据库: Database,本质上就是计算机上的一个文件夹
表: Table,本质上就是文件夹中的一个文件
行: 一行就是一条记录,对应java的一个对象
列,字段: 描述当前列的相关信息
字段名: 自定义
数据类型: mysql中有与java类型一一对应的相关类型
SQL: 结构化查询语言
作用: 用于操作关系型数据库(硬盘数据库)
分类:
DDL: 数据定义语言
操作数据库,表,列结构
DML: 数据库操作语言 ★
操作表中的数据,对表中的数据进行增删改
DCL: 数据控制语言
控制数据库的权限
TCL: 事务控制语言
控制事务的
DQL: 数据查询语言 ★★★★★
是从DML中分离出的一种语言,专门负责查询
DDL:
数据库:
create database 数据库名;
create database 数据库名 character set utf8;
show create database 数据库名;
show databases;
use 数据库名; 使用数据库
表:
create table 表名(
字段名 字段类型 [约束],
字段名 字段类型 [约束],
....
);
create table 表名 like 旧表名;
查询所有的表:
show tables;
查询建表语句:
show create table 表名;
查询表结构:
desc 表名;
DML:
DQL:
技术源于生活,且高于生活(每一种技术在生活中都有对应的示例)
DDL: 盖仓库这个房子(Table),存放货架(列)
DML: 往仓库中进行存取商品
DCL: 给仓库管理员设置权限
TCL: 事务控制语言
DQL: 查询
default-character-set=utf8
11 DDL操作表结构-修改表(了解)和删除表
修改表:
添加表列(添加一个字段):alter table 表名 add 字段名 字段类型(长度);
修改字段类型:alter table 表名 modify 字段 新类型;
删除字段:altar table 表名 drop 字段名;
修改表名:raname table 表名 to 新表名;
修改表的字符集(编码方式):alter table 表名 character set 字符集;
删除表:
直接删除表:drop table 表名;
12 DDL字段类型
---------- 特殊的数据类型
double,float:
double(5,2)最大值999.99 参数1:数值总长度 参数2:小数位的个数
char,varchar:

char:固定长度 char(5):‘abc ’
varchar(因为灵活,较常用):可变长度 varchar(5):‘abc’
13 DML-添加数据信息
作用: 操作数据库表中的数据
对表中的数据进行增删改查(CRUD)
-
添加部分字段:insert into 表名 (字段名1,字段名2....) value (值1,值2....);
-
添加所有字段:insert into 表名 value(值1,值2......);
-
批量添加部分数据:insert into 表名 (字段名1,字段名2....)value(值1,值2......),value(值1,值2......)....;
-
批量添加所有数据:insert into 表名 value(值1,值2......),value(值1,值2......)....;
-
注意:除了数字类型 其他都要用“”或者‘’括起来
14DML-修改和删除数据信息
-
修改所有数据:update 表名 set 字段名1=值1,字段名2=值2;
-
修改满足条件的数据:update 表名 set 字段名1=值1,字段名2=值2 where 条件;
-
删除所有数据:delete from 表名;delete删除时是一行一行删除 truncate table 表名; truncate删除时,摧毁整张表,再创建一张结构相同的表
-
删除满足条件的数据:delete from 表名 where 条件;
备份数据
蠕虫复制:从表1获得原始数据(表1与表2 的表结构必须相同)
create from 表名2 like 表名1;创建一张结构相同的表
insert into 表2 select * from 表1;将一张表中的数据插入结构相同的表
15小结和逻辑删除
添加数据信息: 1.罗列所有的字段 INSERT INTO 表名 (字段名1, 字段名2, 字段名3…) VALUES (值1, 值2, 值3); 2.不写字段名 INSERT INTO 表名 VALUES (值1, 值2, 值3…); 此时值的个数,顺序,类型要和数据库表字段的个数,顺序,类型保持一致
修改数据信息: 1.修改所有字段: update 表名 set 字段名1=值1,字段名2=值2... 2.修改满足条件的字段: update 表名 set 字段名1=值1,字段名2=值2... where 条件 删除数据信息: 1.删除满足条件的数据信息: delete from 表名 where 条件 2.删除所有数据信息: delete from 表名; 一行一行删除数据信息 truncate table 表名; 摧毁表,创建一张结构相同的表 注意: 在工作中所有的删除都是假删除 --- 逻辑删除 假删除(逻辑删除),本质上是修改,修改数据的状态
16DQL简单查询
#创建商品表:
create table product(
pid int,
pname varchar(20),
price double,
category_id varchar(32)
);
INSERT INTO product(pid,pname,price,category_id) VALUES(1,'联想',5000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(2,'海尔',3000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(3,'雷神',5000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(4,'JACK JONES',800,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(5,'真维斯',200,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(6,'花花公子',440,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(7,'劲霸',2000,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(8,'香奈儿',800,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(9,'相宜本草',200,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(10,'面霸',5,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(11,'好想你枣',56,'c004');
INSERT INTO product(pid,pname,price,category_id) VALUES(12,'香飘飘奶茶',1,'c005');
INSERT INTO product(pid,pname,price,category_id) VALUES(13,'果9',1,NULL);
INSERT INTO product(pid,pname,category_id) VALUES(14,'香飘飘奶茶','c005');
#简单查询
#1.查询所有的商品.
#2.查询商品名和商品价格.
#3.别名查询.使用的关键字是as(as可以省略的).
# 3.1表别名:
# 3.2列别名:
#4.查看商品表中有那些价格.
#5.将所有商品的价格+10元进行显示.
-
查询所有信息:select * from 表名;
-
查询部分字段信息:select 字段名,字段名 from 表名;
-
别名查询(使用的关键字是as as可以省略的):
-
表别名:select * from 表名 as 别名;
-
列别名:select 字段名as‘别名’,字段名 as‘别名’ from 表名
-
-
去重查询:select distinct字段名 from 表名
-
对查询结果操作后显示(结果参与运算):select 字段名+固定值from 表名;
-
ifnull(字段,值)当指定字段为null时 使用后面的值 (为此赋值后操作)
17DQL条件查询
将符合条件的数据查询出来
格式: select * from 表名 where 条件;
sql执行顺序: select 查询结果 3 from 表名 1 where 条件; 2
准备数据
# 注意: 重音符 ` (键盘横排数字1左边的那个键直接按,就是重音符)
# 重音符,在sql语句中可以区人关键字和普通字符串
CREATE TABLE stu3 (
id INT,
`name` VARCHAR(20),
age INT,
sex VARCHAR(5),
address VARCHAR(100),
math INT,
english INT
);
# 批量插入
INSERT INTO stu3 VALUES
(1,'马云',55,'男','杭州',66,78),
(2,'马化腾',45,'女','深圳',98,87),
(3,'马景涛',55,'男','香港',56,77),
(4,'柳岩',20,'女','湖南',76,65),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'刘德华',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99,99),
(8,'德玛西亚',18,'男','南京',56,65);
# 比较运算符
-- 查询math分数大于80分的学生
-- 查询english分数小于或等于80分的学生
-- 查询age等于20岁的学生
-- 查询age不等于20岁的学生
# 逻辑运算符
-- 查询age大于35且性别为男的学生(两个条件同时满足)
-- 查询age大于35或性别为男的学生(两个条件其中一个满足)
-- 查询id是1或3或5的学生
# in关键字
-- 查询id是1或3或5的学生
-- 查询id不是1或3或5的学生
# 范围
-- 查询english成绩大于等于75,且小于等于90的学生
# 模糊查询
-- 查询姓马的学生
-- 查询姓名中包含'德'字的学生
-- 查询姓马,且姓名有三个字的学生
比较运算符
> 大于
< 小于
<= 小于等于
>= 大于等于
= 等于
<> != 不等于
逻辑运算符
and(&&) 多个条件同时满足 or(||) 多个条件其中一个满足 not(!) 不满足
in关键字
例如 查询id是1或3或5的学生 select * from 表名 where id 【如果不是1,3,5,就加一个not】in (1,3,5);
范围
select * from 表名 where 字段名 between 值1and值2(两边都是闭区间)
like模糊查询
select * from 表名where 字段名 like “匹配格式”
匹配格式
%匹配任意位 _匹配一位
其他
排序:select 字段名from表名where条件order by 字段名 asc/desc;
组合排序:select 字段名from表名where条件order by 字段名 asc/desc,字段名2 asc/desc;
聚合函数:select 聚合函数(字段名) from 表名;
分组:select 字段名 from 表名 where 条件 group by 字段名having 条件;
limit分页:select 字段名 from 表名 where语句 group by语句 having语句 order by语句 limit 开始条目,每页条目;
-- ==============条件查询 # 注意: 重音符 ` (键盘横排数字1左边的那个键直接按,就是重音符) # 重音符,在sql语句中可以区人关键字和普通字符串 CREATE TABLE stu3 ( id INT, `name` VARCHAR(20), age INT, sex VARCHAR(5), address VARCHAR(100), math INT, english INT ); # 批量插入 INSERT INTO stu3 VALUES (1,'马云',55,'男','杭州',66,78), (2,'马化腾',45,'女','深圳',98,87), (3,'马景涛',55,'男','香港',56,77), (4,'柳岩',20,'女','湖南',76,65), (5,'柳青',20,'男','湖南',86,NULL), (6,'刘德华',57,'男','香港',99,99), (7,'马德',22,'女','香港',99,99), (8,'德玛西亚',18,'男','南京',56,65); # 比较运算符 > < >= <= = != <> -- 查询math分数大于80分的学生 SELECT * FROM stu3 WHERE math > 80; -- 查询english分数小于或等于80分的学生 SELECT * FROM stu3 WHERE english <= 80; -- 查询age等于20岁的学生 SELECT * FROM stu3 WHERE age = 20; -- 查询age不等于20岁的学生 SELECT * FROM stu3 WHERE age != 20; SELECT * FROM stu3 WHERE age <> 20; # 逻辑运算符 and or not -- 查询age大于35且性别为男的学生(两个条件同时满足) SELECT * FROM stu3 WHERE age > 35 AND sex = "男"; -- 查询age大于35或性别为男的学生(两个条件其中一个满足) SELECT * FROM stu3 WHERE age > 35 OR sex = "男"; -- 查询id是1或3或5的学生 SELECT * FROM stu3 WHERE id=1 OR id=3 OR id=5; # in关键字 -- 查询id是1或3或5的学生 SELECT * FROM stu3 WHERE id IN (1,3,5); -- 查询id不是1或3或5的学生 SELECT * FROM stu3 WHERE id NOT IN (1,3,5); # 范围 /* 格式: select * from 表名 where 字段名 between 值1 and 值2 注意: 值1必须小于值2 */ -- 查询english成绩大于等于75,且小于等于90的学生 SELECT * FROM stu3 WHERE english BETWEEN 75 AND 90; SELECT * FROM stu3 WHERE english >= 75 AND english <=90; # 模糊查询 /* 格式: select * from 表名 where 字段名 like "匹配格式"; 匹配格式: % : 匹配任意位 _ : 匹配一位 "马%" : 查询以 马 开头的学生信息 "%马" : 查询以 马 结尾的学生信息 "%马%" : 查询包含 马 的学生信息 "_马%" : 匹配第二个字是 马 的学生信息 "马__" : 名字有三个字,且第一个为 马 的 "___" : 匹配名字有三个字的学生信息 */ -- 查询姓马的学生 SELECT * FROM stu3 WHERE `name` LIKE "马%"; -- 查询姓名中包含'德'字的学生 SELECT * FROM stu3 WHERE `name` LIKE "%德%"; -- 查询姓马,且姓名有三个字的学生 SELECT * FROM stu3 WHERE `name` LIKE "马__";
作业
#新建一个数据库
CREATE DATABASE day03;
#使用数据
USE day03;
#创建表
create table products(
pid int primary key auto_increment, #主键(编号)
pname varchar(20), #商品名称
price double(5,2), #商品价格
pnum int, #商品数量 cno int, #商品分类
pdate timestamp #添加日期
);
#添加数据
insert into products values (1,'泰国大榴莲',98,12,1,null);
insert into products values (2,'新疆大枣',38,123,1,null);
insert into products values (3,'新疆切糕',68,50,2,null);
insert into products values (4,'十三香',10,200,3,null);
insert into products values (5,'老干妈',20,180,3,null);
insert into products values (6,'豌豆黄',20,120,2,null);
排序查询练习:
1.查询所有的商品,按价格进行排序.(asc-升序,desc-降序)
2.查询所有的商品,按价格降序,若价格一致按照数量升序.
3.查询名称有"新"的商品的信息并且按价格降序排序.
聚合函数练习:
1.查询商品表中有多少条记录
2.查询所有商品的价格的总和
3.查询商品表中价格的平均数
4.查询商品表中价格最大的
5.查询商品表中价格最小的
对平均值处理
保留两位小数
cast(avg(字段名称) as decimal(5,2))
分组查询练习:
1.根据cno字段分组,分组后统计商品的个数.
2.根据cno分组,分组统计每组商品的总数量,并且总数量> 200;






![[ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)](../download/20260617/2aed2e32838d4defaf3d0595004d364c.png)