测试学习Day6——Linux和数据库(1)
Linux操作系统
操作系统介绍
操作系统是一种管理计算机硬件和软件资源的程序,是用户进行所有操作的基础平台
常见的操作系统
- 桌面操作系统:Windows、mcOS和Linux
- 移动端操作系统:Android和iOS
- 嵌入式操作系统:应用于路由器、物联网设备等,Linux
- 服务器操作系统:Linux、Unix和Windows Server
Linux的特点
- 开源免费
- 用户可自由获取、修改和传播源代码。
- 无需激活码或授权验证。
- 安全稳定
- 被广泛认为具有较高的安全性与稳定性。
- 各大操作系统厂商通常都会强调这一特性。
- 高性能
- 在服务器及高性能计算领域表现优异。
- 可移植性好
- 可运行于多种硬件平台,如 PC、手机、路由器等。
Linux主要发行版本
- Red Hat:主要用于服务器环境。
- openSUSE:适合开发和企业使用。
- Ubuntu(乌班图):较为流行的桌面发行版。
- Fedora(费多拉):常用于开发测试,社区活跃。
- Oracle Linux:专为数据库服务设计。
Linux应用领域
- 服务器领域
- 广泛应用于 Web 服务器、数据库服务器、网络服务器等。
- 云计算
- 大量云服务平台基于 Linux 构建。
- 嵌入式系统
- 如智能设备、路由器、智能手表等。
- 移动设备
- 安卓手机内核为 Linux。
- 非适用场景
- 游戏和办公领域使用较少,主要由 Windows 占主导地位。
Linux文件系统概述
- Linux文件系统采用树状结构(也称树形结构),以层级化方式组织文件和目录。
- 树状结构表现为一个根节点下分支出多个子节点,每个子节点又可继续分支。
根目录介绍
- 在Linux中,所有路径都从一个统一的起点开始,称为根目录
/。 - 与Windows不同,Windows通常以盘符(如C盘、D盘)作为起点,而Linux始终以根目录为起点。
主要目录及其作用
/(根目录):整个文件系统的最顶层目录,其他所有目录均挂载于此之下。/home(用户目录):存放普通用户的个人数据,例如/home/admin表示 admin 用户的家目录。/root(管理员目录):系统管理员(超级用户)的家目录。/etc(配置文件目录):存放系统和应用程序的配置文件。/bin和/usr/bin(命令工具目录):存放常用命令和工具程序。
树状结构的理解
- 所谓树状结构即文件夹内包含子文件夹,子文件夹中还可继续包含更深层级的文件夹。
- Windows同样采用类似结构,但Linux的统一根目录设计使得路径管理更为集中。
Linux操作系统特点与应用场景
- 特点:
- 免费开源。
- 系统稳定。
- 性能高。
- 可移植性强。
- 应用场景:
- 服务器。
- 云计算。
- 数据库。
- 嵌入式系统。
- 客户端(较少见)。
Linux常见命令
1.ls- 列出目录内容
ls-la# 列出所有文件(包括隐藏文件)的详细信息2.cd- 切换目录
cd/var/log# 切换到/var/log目录3.pwd- 显示当前工作目录
pwd# 显示当前所在目录的完整路径4.cat- 查看文件内容
catconfig.yml# 查看配置文件内容5.grep- 文本搜索
grep-n"error"app.log# 在日志中搜索"error"并显示行号6.tail- 查看文件尾部
tail-fapplication.log# 实时监控日志文件变化7.head- 查看文件头部
head-20app.log# 查看日志前20行8.cp- 复制文件或目录
cp-rsource_dir/ dest_dir/# 递归复制目录9.mv- 移动或重命名文件
mvold_name.txt new_name.txt# 重命名文件10.rm- 删除文件或目录
rm-rfdirectory/# 强制递归删除目录11.mkdir- 创建目录
mkdir-pparent/child# 创建多级目录12.rmdir- 删除空目录
rmdirempty_dir# 删除空目录13.touch- 创建空文件或更新文件时间戳
touchnew_file.txt# 创建新文件14.find- 查找文件
find/home-name"*.log"# 查找所有.log文件15.which- 查找命令路径
whichpython# 查找python命令位置16.whereis- 查找命令相关文件
whereisjava# 查找java相关文件17.locate- 快速查找文件
locatenginx.conf# 查找nginx配置文件18.chmod- 修改文件权限
chmod+x script.sh# 添加执行权限19.chown- 修改文件所有者
chownuser:group file.txt# 修改文件所有者和组20.ps- 查看进程状态
psaux|grepnginx# 查看nginx进程21.top- 实时显示进程状态
top# 查看系统进程和资源使用情况22.kill- 终止进程
kill-91234# 强制终止PID为1234的进程23.killall- 终止同名进程
killallchrome# 终止所有chrome进程24.pkill- 按模式终止进程
pkill-f"python script"# 终止匹配模式的进程25.bg- 将进程放到后台运行
bg%1# 将作业1放到后台运行26.fg- 将进程放到前台运行
fg%1# 将作业1放到前台运行27.jobs- 查看后台作业
jobs# 查看当前终端后台作业28.nohup- 使进程在退出终端后继续运行
nohuppython server.py&# 后台运行并不受终端退出影响29.df- 显示磁盘空间使用情况
df-h# 以易读格式显示磁盘空间30.du- 显示目录空间使用情况
du-sh/var/log# 显示/var/log目录总大小31.free- 显示内存使用情况
free-h# 以易读格式显示内存使用32.uname- 显示系统信息
uname-a# 显示所有系统信息33.uptime- 显示系统运行时间
uptime# 显示系统运行时间和负载34.who- 显示当前登录用户
who# 显示当前登录用户信息35.w- 显示登录用户及活动
w# 显示登录用户及其活动36.last- 显示登录历史
last# 显示用户登录历史37.history- 显示命令历史
history# 显示命令历史记录38.tar- 打包压缩文件
tar-czvfarchive.tar.gz directory/# 创建gzip压缩包39.gzip- 压缩文件
gzipfile.txt# 压缩文件40.gunzip- 解压缩文件
gunzip file.txt.gz# 解压缩文件41.zip- 创建zip压缩包
ziparchive.zip file1.txt file2.txt# 创建zip压缩包42.unzip- 解压zip文件
unziparchive.zip# 解压zip文件43.ssh- 远程登录
sshuser@hostname# 远程登录到主机44.scp- 安全复制文件
scpfile.txt user@hostname:/path/# 复制文件到远程主机45.rsync- 远程同步文件
rsync-avsource/ user@hostname:destination/# 同步文件到远程主机46.ping- 测试网络连接
pingexample.com# 测试与example.com的网络连接47.traceroute- 显示数据包路径
tracerouteexample.com# 显示到example.com的网络路径48.netstat- 显示网络状态
netstat-tuln# 显示所有监听端口49.ss- 显示套接字统计
ss-tuln# 显示监听端口(比netstat更快)50.ifconfig- 配置网络接口
ifconfigeth0# 显示eth0接口信息51.ip- 显示/操作路由、设备等
ipaddr show# 显示所有网络接口信息52.route- 显示/操作IP路由表
route-n# 显示路由表53.hostname- 显示或设置主机名
hostname# 显示当前主机名54.curl- 传输数据
curl-Ihttp://example.com# 获取HTTP头信息55.wget- 下载文件
wgethttp://example.com/file.zip# 下载文件56.lynx- 文本浏览器
lynxhttp://example.com# 以文本方式浏览网页57.telnet- 远程登录
telnethostname22# 测试端口连通性58.nc- 网络工具
nc-zvhostname80# 测试端口连通性59.ssh-keygen- 生成SSH密钥
ssh-keygen-trsa# 生成RSA密钥对60.ssh-copy-id- 复制SSH密钥到远程主机
ssh-copy-id user@hostname# 复制公钥到远程主机61.sed- 流编辑器
sed's/old/new/g'file.txt# 替换文件中的文本62.awk- 文本处理工具
awk'{print $1}'file.txt# 打印每行第一个字段63.cut- 剪切文件内容
cut-d:-f1/etc/passwd# 提取/etc/passwd中的用户名64.paste- 合并文件行
pastefile1.txt file2.txt# 合并两个文件的行65.sort- 排序文件内容
sortfile.txt# 对文件内容排序66.uniq- 报告或忽略重复行
uniqfile.txt# 去除重复行67.wc- 统计文件内容
wc-lfile.txt# 统计文件行数68.diff- 比较文件差异
difffile1.txt file2.txt# 比较两个文件差异69.patch- 应用补丁文件
patch-p1<patchfile# 应用补丁70.ln- 创建链接
ln-s/path/to/file linkname# 创建软链接71.readlink- 显示符号链接值
readlink /usr/bin/python# 显示符号链接指向的实际路径72.stat- 显示文件状态
statfile.txt# 显示文件详细信息73.file- 确定文件类型
filedocument.pdf# 确定文件类型74.md5sum- 计算MD5校验和
md5sum file.iso# 计算文件MD5值75.sha256sum- 计算SHA256校验和
sha256sum file.iso# 计算文件SHA256值76.date- 显示或设置系统日期时间
date+"%Y-%m-%d %H:%M:%S"# 显示格式化日期时间77.cal- 显示日历
cal# 显示当月日历78.time- 测量命令执行时间
timels-la# 测量命令执行时间79.timeout- 运行有时间限制的命令
timeout5spingexample.com# 5秒后终止ping命令80.watch- 定期执行命令
watch-n1'date'# 每秒执行一次date命令81.at- 定时执行任务
echo"ls -la"|at midnight# 午夜执行命令82.crontab- 管理定时任务
crontab-l# 列出当前用户的定时任务83.systemctl- 控制系统服务
systemctl status nginx# 查看nginx服务状态84.service- 运行系统服务脚本
servicenginx restart# 重启nginx服务85.journalctl- 查询系统日志
journalctl-unginx# 查看nginx服务日志86.dmesg- 显示内核消息
dmesg|greperror# 查找内核错误消息87.lsof- 列出打开文件
lsof-i:80# 查找使用80端口的进程88.strace- 跟踪系统调用
strace-fpython script.py# 跟踪Python脚本的系统调用89.vmstat- 显示虚拟内存统计
vmstat1# 每秒显示一次虚拟内存统计90.iostat- 显示CPU和I/O统计
iostat-x1# 每秒显示一次扩展I/O统计91.mpstat- 显示CPU统计
mpstat1# 每秒显示一次CPU统计92.pidstat- 显示进程统计
pidstat-u1# 每秒显示一次进程CPU使用情况93.sar- 系统活动报告
sar-u13# 每秒显示一次CPU使用,共3次94.ulimit- 控制shell资源
ulimit-a# 显示所有资源限制95.env- 显示环境变量
env# 显示所有环境变量96.export- 设置环境变量
exportPATH=$PATH:/new/path# 添加新路径到PATH97.unset- 删除变量或函数
unsetVARIABLE# 删除环境变量98.alias- 创建命令别名
aliasll='ls -alF'# 创建ll别名99.unalias- 删除别名
unaliasll# 删除ll别名100.source- 执行脚本文件
source~/.bashrc# 重新加载bash配置数据库基础
数据库简介
1、数据存储阶段发展
- 人工管理阶段
- 文件系统阶段
- 数据库阶段
数据库:是指产期存储在计算机内、有组织的数据集合
2、数据库分类
关系型数据库
关系型数据库RDMS(Relational Management System):将数据间的关系一数据库表的形式加以表达,并将数据存储在表格中,以便于查询
常见关系型数据库:
关系型数据库核心要素:
非关系型数据库
SQL介绍
SQL(Structured Query Language):结构化查询语言,通过SQL语言可以对数据库进行操作
MySQL简介
MySQL特点
MySQL组成
- MySQL服务器:存储数据并解析编译后的SQL语句,将执行结果返回给客户端
- MySQL客户端:下发用户要执行的SQL语句,并显示服务器返回的执行结果
MySQL连接
mysql-hhost-u用户名-p密码MySQL数据类型与约束
数据类型
- 整形(int):
- 有符号范围(-2147483648~2147483648)
- 无符号范围(0~4294967295)
- 小数(decimal(5,2)):表示该字段可以存5位数,其中小数位数为2
- 字符串(varchar):一个字母或一个中文点一个字符
- 时间日期(datatime)
数据约束
- 主键(primary key):物理上存储的数据
- 非空(not null):此字段不允许填写空值
- 唯一(unique):此字段的值不允许重复
- 默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准
- 外键(foreign key):维护两表之间的关联关系
命令行客户端
操作数据库
查看所有数据库:show databases;
使用数据库:use 数据库名;
查看当前使用数据库:select database();
创建数据库:create database 数据库名 charset=utf8;
删除数据库:drop database 数据库名;
操作数据库表
查看当前数据库所有的表:show tables;
查看表结构:desc 表名;
查看表的创建语句:show create table 表名;
SQL语言
数据库表操作
##建表语句createtablestudents(idintunsignedprimarykeyauto_increment,namevarchar(20),ageintunsigned,heightdecimal(5,2));##删除数据库表droptablestudents;droptableifexistsstudents;数据的增删改查操作
##简单查询select*fromstudents;##添加一行数据insertintostudentsvalues(0,'亚索',22,177,56);insertintostudents(name)values('亚索');##添加多行数据insertintostudentsvalues(0,'亚索',22,177.56);insertintostudentsvalues(1,'信息',32,172.56);insertintostudentsvalues(2,'sdf',22,198.56);insertintostudentsvalues(0,'亚索',22,177.56),(1,'信息',32,172.56),(2,'sdf',22,198.56);##修改数据(修改id为0的学生数据,姓名改为火鹤,年龄改为20updatestudentssetname='火鹤',age=20whereid=0;##删除数据(物理删除)deletefromstudentswhereid=2;##逻辑删除是指通过设定一个字段来表示当前记录已删除,is_delete字段来标识,0表示删除,1表示未删除##删除数据的其他方式truncatetablestudents;##保留表结构droptablestudents;##删除所有数据和表结构