实习日志|知识总结

知识总结

    • SQL
        • [1. where和having](#1. where和having)
        • [2. 多表连接 & 逆向not in 筛选](#2. 多表连接 & 逆向not in 筛选)
        • [case when](#case when)
    • Shell
        • [cd 的用法](#cd 的用法)
        • scp和cp
        • [vi :创建/进入文件](#vi :创建/进入文件)
        • [source 运行脚本](#source 运行脚本)
        • 查看日志
        • 查看磁盘
    • webSocket

SQL

1. where和having

WHERE 在分组前过滤行,而 HAVING 在分组后过滤组

having一般和聚合函数一起使用,聚合结果(如总和、平均值、计数等)来筛选最终结果

sql 复制代码
select
actor_id
,director_id
from ActorDirector
group by actor_id,director_id
having count(*)>=3;

此处having是在筛选分组的条件,count(*)不是计算总条数而是该分组的条数

2. 多表连接 & 逆向not in 筛选

找出没有任何与名为 "RED" 的公司相关的订单的所有销售人员的姓名。

方法一

sql 复制代码
SELECT
s.name AS name
FROM SalesPerson s
LEFT JOIN Orders o ON s.sales_id = o.sales_id
LEFT JOIN Company c ON o.com_id = c.com_id
GROUP BY s.name
HAVING SUM(IF(c.name = "RED",1,0)) = 0 
ORDER BY s.sales_id;

方法二:

sql 复制代码
select
name
from SalesPerson
where sales_id not in
(select
a.sales_id as sales_id
from Orders a
left join Company b on a.com_id = b.com_id
where b.name = "RED");
case when
  1. 用于简单判断
  2. 判断条件
    如判断三角形:
sql 复制代码
select
x
,y
,z
,case when x+y>z and x+z>y and y+z>x then "Yes"
 else "No" 
end as triangle
from Triangle
  1. 结合聚合函数
sql 复制代码
SELECT 
    department,
    COUNT(*) AS total_employees,
    COUNT(CASE WHEN salary > 8000 THEN 1 END) AS high_salary_count,
    COUNT(CASE WHEN salary <= 3000 THEN 1 END) AS low_salary_count
FROM employees
GROUP BY department;

第一个count(*) 计算表中数据

第二个判断salary > 8000 然后case返回1,count计数;不符合条件case返回null,count不计数

第三个同理

  1. 结合update
    例如:变更性别
sql 复制代码
update Salary
set sex = 
case when sex="m" then "f"
else "m"
end;

-- update Salary
-- set sex = 
-- case when sex="m" then "f"
--  when sex="f" then "m"
-- end;

Shell

cd 的用法

到当前目录下的某个文件

cd logs/ (加不加/都可以)

cd pwd (查看所在的绝对路径)

~ - 表示当前在家目录(这里是 /home/deploy 的简写)
$ - 普通用户权限(如果是 # 表示root用户)

可以使用cd 直接到达某个绝对路径下

scp和cp

cp是在本地一台机器操作,不需要网络连接和认证
scp是安全传输,跨机器,需要网络连接、加密和认证的

cp简单的进行本地文件拷贝,而一般一个平台有多个服务器,开发和测试等,需要跨服务器进行拷贝,就要用到scp

  • cp:
shell 复制代码
# 基本语法
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录

# 示例
cp file1.txt file2.txt          # 复制文件
cp file1.txt /home/user/        # 复制到目录
cp -r dir1/ dir2/               # 递归复制目录
cp *.txt ~/documents/           # 复制多个文件
  • scp:
    在更新脚本前需要将新的脚本复制一遍
shell 复制代码
# 基本语法
scp [选项] [用户@]主机:源文件 [用户@]主机:目标文件

# 当前所在172.16.18.34环境上,复制文件到172.16.18.35
# 从本地到远程。目标文件地址
scp xxx.sql deploy@172.16.18.35:/data/update/1110

# 当前所在172.16.18.35环境上,从172.16.18.34复制
# 从远程到本地。源文件地址
scp deploy@172.16.18.34:/opt/workspace/batch-server/data/
vi :创建/进入文件
shell 复制代码
vi application.properties

1⃣️然后i进行编辑模式

2⃣️需要查看某个配置是否存在

shell 复制代码
/要查找的字段    # 按 / 然后输入内容,按 Enter 搜索
n                # 查找下一个匹配项
N                # 查找上一个匹配项

3⃣️点击esc然后输入 :wq保存并退出

source 运行脚本

在数据库中使用,会读取sql里的内容并按顺序执行脚本中sql语句

bash 复制代码
source XXX.sql
查看日志

在执行代理服务器上, tail -f 日志的地址

查看磁盘

当部署环境报错:no space

查看系统磁盘

bash 复制代码
df - h

webSocket

WebSocket 是一种全双工通信协议,允许客户端和服务器之间建立持久连接,实现双向实时通信

  • 需要用websocket测试工具
  1. 下载地址:
bash 复制代码
sudo curl -SL \
http://172.16.18.23:9003/files/tool/ws-tool-mac-universal \
-o /usr/local/bin/ws-tool
  1. 添加权限
bash 复制代码
sudo chmod +x /usr/local/bin/ws-tool
  1. 使用
bash 复制代码
Usage:
  ws-tool server --port 8881 --path /ws
  ws-tool client --url ws://localhost:8080/ws --local-port 30001
  • websocket server端 数据传输
    本地起一个client端:
bash 复制代码
ws-tool client --url ws://localhost:8080/ws --local-port 30001

然后 Client 可以:

  1. 从本地程序接收数据
  2. 转发给 Server
  3. Server 再广播给其他客户端
  • websocket client端 数据传输
    本地起一个server端:
bash 复制代码
ws-tool server --port 8881 --path /ws

然后 Server 可以:

  1. 接收其他程序的数据

  2. 主动生成数据

  3. 转发给所有连接的客户端

2025年最后一个月了,这是近期的小小总结,前面几天很闲就在刷sql,后面一下子就忙起来了,2025年有很多新的体验,也很幸运吧,希望2026年stella继续勇敢向前走,做对自己来说最正确却比较难走的路 ,一起顺顺利利!

相关推荐
一个天蝎座 白勺 程序猿1 小时前
KingbaseES 处理 PL/SQL 运行时错误全解析:从异常捕获到异常处理的实践指南
数据库·sql·oracle·kingbasees
leo_2322 小时前
表&表结构--SMP(软件制作平台)语言基础知识之三十三
数据库·开发工具·表结构·smp(软件制作平台)·应用系统
zhangdawei8382 小时前
英伟达GB200,GB300和普通服务器如dell R740xd有什么区别?
运维·服务器·人工智能
C***11502 小时前
Spring TransactionTemplate 深入解析与高级用法
java·数据库·spring
wdfk_prog2 小时前
[Linux]学习笔记系列 -- 内存管理与访问
linux·笔记·学习
go_bai2 小时前
Linux-网络基础
linux·开发语言·网络·笔记·学习方法·笔记总结
+VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue建筑材料管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
2301_800256112 小时前
B+树:数据库的基石 R树:空间数据的索引专家 四叉树:空间划分的网格大师
数据结构·数据库·b树·机器学习·postgresql·r-tree
糖~醋排骨2 小时前
FW防火墙的配置
linux·服务器·网络
ZFB00012 小时前
【麒麟桌面系统】V10-SP1 2503 系统知识——设置面板无法打开
linux·运维·kylin