一、Linux
Linux目录结构(掌握)
- FHS标准:
- /boot:启动目录,内核存放地
- /etc:配置文件存放地
- /tmp:程序产生的临时文件
- /home:用户的目录,新增用户账号时,用户的家目录都存放在此目录
- /lib:库文件,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
- /bin:可执行文件和常用的Linux命令
- /sbin:系统管理员的命令和工具
- /usr:应用程序和文件的安装地
- /mnt:挂载其他文件系统
- /root:root账户的home目录
- /dev:存放Linux系统下的设备文件
vi 编辑器使用
Linux管理文件和目录命令
pwd 和 cd
- pwd :打印用户当前所处的路径。
- cd:改变用户错在目录。
- cd …:返回上一级
- cd ~:返回当前用户的家目录
- cd -:电视回放功能
ls 显示指定目录下的内容
- ls:显示指定目录下的内容。
cat 显示文本内容
- cat:显示文本内容
touch 创建文本
rm 删除文件
- rm:删除文件(remove)
cp 复制
- cp:拷贝文件或复制分拣(copy)
mv 剪切
- mv:对文件或者目录进行移动(剪切)
mkdir 创建目录
- mkdir:创建目录
rmdir 删除空目录
- rmdir:删除空目录
搜索命令
grep 搜索文本内容
- grep:在文件中查找一个特定的字符串。
find 查找文件
线上查询的命令
man 用来查询和解释一个命令的使用方法和这个命令的注意事项
whatis 查询某个命令的含义
定位、查找文件
locate 定位文件和目录
which 查找文件、目录位置
whereis
文件阅读命令
head 查看文件的开头部分
tail 查看文件结尾的10行
动态查询日志文件
more 按页查看文件内容
打包、压缩、解压缩命令
zip -r压缩文件
unzip -d解压缩文件
bzip2 压缩文件
=bunzip2 解压缩文件
gzip 压缩文件
gunzip 解压缩
tar 将文件或者目录进行打包(重点)
tar -czvf(xzvf) file.tar.tgz打包并压缩
tar -cjvf(xjvf) file.tar.bz2打包并压缩
管理使用者和设立权限的命令
chmod 改变许可权限
useradd 添加用户 usedel 删除用户
chgrp 改变文件或目录的所属群组
chown将文件的拥有者改为指定的用户或组
su 修改用户
passwd 修改密码
exit 用户退出
who 查看当前系统登录成员
有关关机和查看系统信息的命令
reboot 和 shutdown 重新启动
halt 关机
ps 查看计算机系统中,哪些程序正在执行及其执行情况
ps -aux查看当前系统进程信息
top 动态查看目前程序的执行情景和内存使用
kill 终止一个正在执行的进程。如果程序执行过程中失败了,可以吧和这个程序终止,避免留在内容中占用系统资源。
- 9代表强制删除
kill -9 进程号
时间、日历
date 设定和修改系统时间日期
cal 日历
磁盘空间命令
df 检查磁盘使用量
du 显示文件目录大小
网络操作命令
ipconfig 显示网络设备状态
ping 检测主机
netstat -anptu 查看当前系统中开放的端口号
lsof -i:3306查看当前端口号谁在使用
链接(快捷方式)
ln 建立链接文件(快捷方式)
其他命令
clear 清屏
echo 显示屏上回显文字或者用来查看不安静变量的值
uptime 系统运行时间
wc 用于计算字数
history 查看历史命令
> 重定向
| 管道
Linux 命令总结
Linux 和数据库 day01 随堂笔记
Linux 命令: 软件测试第一个任务, 一般都需要进行环境搭建, 一部分环境搭建内容是在服务器上实现的, 跟服务器交互(没有图形化页面), 需要使用 Linux 命令
数据库: 所有的软件在使用过程中所产生的数据, 最终都要存在数据库当中, 而测试工作往往会需要去校验数据的正确与否, 因此需要学习数据库
虚拟机系统常见操作
屏幕上滑
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MW4kO8US-1633937330647)(Linux 和数据库 day01 随堂笔记.assets/image-20200523095940827.png)]
输入密码解锁
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TtgwZEBb-1633937330648)(Linux 和数据库 day01 随堂笔记.assets/image-20200523095948239.png)]
一. 硬件和软件
硬件: 能看见也能摸得到
软件: 能看见不能摸得到
关系: 没有软件的硬件是没有任何意义的, 只有存在软件的硬件才能为人所用
二. 操作系统
作用
- 是硬件设备上的第一层软件
- 有了操作系统可以方便我们调用所有的硬件设备
- 所有应用程序(QQ/微信)的安装使用前提是具备操作系统
三. 操作系统的常见分类
- 桌面操作系统
- Windows
- macOS
- Linux
- 服务端操作系统
- Linux (占有比重非常高)
- Windows Server
- 移动端操作系统
- iOS
- Android(基于Linux)
- 嵌入式操作系统
- Linux (自动贩卖机/收银台/汽车中控)
四. Linux 系统
特点
-
开源(源代码可见)免费(Linux 系统)
注意: 开源不意味着一定是免费的(要看具体开源协议)
-
安全稳定
-
可移植性好(常见系统分类中都有Linux系统的存在)
-
高性能(服务端没有图形页面)
五. Linux 系统分类
市面上常见的Linux系统都有一个共同的名字: Linux 发行版(在内核版基础上额外增加一些应用软件和图形化页面)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-veeqt3YF-1633937330649)(Linux 和数据库 day01 随堂笔记.assets/image-20200523095214369.png)]
说明: 虚拟机及虚拟机系统仅在学习阶段起到在本地模拟服务器的作用, 实际工作中不需要安装及使用!
六. Linux 系统的文件和目录
特征:
- 在 Linux 系统中没有盘符概念
- Linux 系统中的所有文件都存放在根目录下(常用"/"代表)
使用目录:
- / : 根目录
- /home: 所有普通用户的家目录
- /root : Linux 系统超级管理员的家目录
- /usr/bin: Linux 命令大部分都存在于该目录下
虚拟机常规操作: 图形化页面进入根目录
桌面打开主文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zcDOgv3n-1633937330651)(Linux 和数据库 day01 随堂笔记.assets/image-20200523110124368.png)]
其他位置 -> 计算机
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FsdE1RpO-1633937330652)(Linux 和数据库 day01 随堂笔记.assets/image-20200523110141084.png)]
屏幕底部显示为 / 即为根目录
[外链图片转存失败,源站可能有防盗 链机制,建议将图片保存下来直接上传(img-oLDGVrOh-1633937330652)(Linux 和数据库 day01 随堂笔记.assets/image-20200523110157762.png)]
七. Linux 系统文件和目录的特点
-
普通用户和超级管理员用户权限有很大区别
- 普通用户可以进入超级管理员的家目录, 但是无法对其中的文件进行任何操作
- 但是超级管理员用户可以做任何操作(实际工作中, 一般不会轻易获取 root 用户权限)
-
一般情况下, 普通用户的操作范围仅限在自己的家目录当中
- 例如: 当前用户为 admin, 操作范围仅限: /home/admin
八. Linux 命令的基本格式
格式组成:
命令主体 -命令选项 命令参数
常见命令形式:
1) 命令主体
2) 命令主体 -命令选项
3) 命令主体 参数
4) 命令主体 -命令选项 命令参数
特点:命令主体必须存在, 而选项和参数都是可选的
Linux 命令的注意事项
- 命令的数量非常多, 不要妄图全部记忆下来
- 常用命令由于频繁使用, 不用刻意记忆基本可以搞定
- 工作中实际是用什么命令现查即可
九. 查看命令帮助信息方法
方法一:
命令主体 --help : 可以查看命令具备哪些选项及选项含义
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-faG7mrsA-1633937330653)(Linux 和数据库 day01 随堂笔记.assets/image-20200523110210059.png)]
方法二:
man 命令主体 : 查看命令的手册信息
注意: 默认情况下系统手册是英文的, 可以自行扩展修改为中文, 实际应用推荐使用方法一
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kxfd6p4Y-1633937330654)(Linux 和数据库 day01 随堂笔记.assets/image-20200523105255148.png)]
十. 命令学习方法说明
此处以 ls 命令为例
ls : 展示当前路径下有哪些文件
ls -a : 显示当前路径下的所有文件(包含隐藏文件(文件名以.开头的))
ls -l : 显示当前路径下文件的详细信息
ls -al : 显示当前路径下文件的详细信息(包含隐藏文件)
注意:
1. 命令选项连用形式为: 命令主体 -选项1选项2
2. 命令主体和选项之间必须包含一个空格
3. 命令选项的作用一般是用来扩展命令主体功能的
学习方法:
1. 优先搞清楚命令主体的含义
2. 根据实际需求结合帮助命令查找命令选项
3. 没用过的选项, 尝试自己搭建场景, 试验后看效果
4. 孰能生巧, 相较于死记命令, 勤加练习更合理一些!
ls 命令使用效果截图1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h5vUIt0m-1633937330654)(Linux 和数据库 day01 随堂笔记.assets/image-20200523113447394.png)]
ls 命令使用效果截图2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S3swEfWU-1633937330654)(Linux 和数据库 day01 随堂笔记.assets/image-20200523113505239.png)]
虚拟机常规操作:显示隐藏文件
如图开启选项即可
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ac97OuxM-1633937330655)(Linux 和数据库 day01 随堂笔记.assets/image-20200523113418234.png)]
十一. Linux命令的共通知识点
通配符的使用
通配符: 又叫文件名替换符号, 符号具备特殊含义, 例如: 文件名: test , 通配符可以写成: ??? 或 *
* : 代表可以匹配任意长度的文件名(所有)
? : 代表可以匹配单个字符, 如果目标文件名有多个字符, 该符号可以使用多个
[]: 括号内的内容表示一个范围, [abc] : 代表匹配文件名是 a 或 b 或 c, 等价于 [a-c]
绝对路径和相对路径
绝对路径: 路径源头固定不变, 常见有两个: ‘/’: 根目录; ‘~’: 当前用户的家目录
相对路径: 以当前所在路径为源头, 常见的表示形式有两个: ‘.’:当前路径下; ‘…’:当前目录的上一层(父层级)
路径注意事项:
- 绝对路径使用时, 需要确定文件在根目录下还是用户目录下, 合理选择起始符号即可
- 初学时, 建议所有路径优先使用绝对路径, 当清楚文件结构关系后, 逐步转换为相对路径
- 相对路径中, 如果是当前路径下的文件获取操作, 那么 ‘./’ 一般是可以省略的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pdmSoHML-1633937330655)(Linux 和数据库 day01 随堂笔记.assets/image-20200523120340337.png)]
案例1: 文件和目录操作相关命令(重点)
在桌面上打开终端窗口, 执行如下操作:
01.查看当前路径位置
02.查看当前目录下有哪些文件和文件夹
03.创建 adir,bdir,cdir 三个文件夹(创建一个文件夹/创建多个文件夹)
04.切换到 adir 目录下
05.创建文件 aa (创建一个文件)
06.切换到 admin 目录下(绝对路径/相对路径)
07.创建文件 file 并重命名为 aa
08.复制文件 aa 到 adir 目录下(要求提示是否覆盖)
09.复制文件夹 bdir 到 cdir 目录下
10.移动文件 aa 到 bdir 目录下
11.创建 bb,cc 两个文件(创建多个文件)
12.删除 bb 文件
13.删除 adir 文件夹
14.删除当前目录下所有文件和文件夹
案例1上
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ucnywkkn-1633937330656)(Linux 和数据库 day01 随堂笔记.assets/image-20200523155816644.png)]
案例1 中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cta2bfD2-1633937330656)(Linux 和数据库 day01 随堂笔记.assets/image-20200523155833547.png)]
案例1 下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3N6DAeR9-1633937330657)(Linux 和数据库 day01 随堂笔记.assets/image-20200523155848641.png)]
删除所有注意事项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P4pXFPss-1633937330657)(Linux 和数据库 day01 随堂笔记.assets/image-20200523155905016.png)]
文件和目录常用命令的小结
pwd : 查看当前所在的路径位置(涉及到路径切换(cd 命令)时, 确认路径时使用)
ls : 查看当前路径下有哪些文件(对路径下文件进行了修改(创建/复制/移动/删除)时使用)
cd : 切换路径(更换操作目录时使用)(常和绝对路径及相对路径配合使用)
touch : 创建普通文件(单文件: touch 文件名 多文件: touch 文件名1 文件名2 ...)
mkdir : 创建目录文件(单文件夹: mkdir 文件夹名 多文件夹: mkdir 文件夹名1 文件夹名2 ...)
cp : 复制文件/文件夹(文件: cp -i 源文件 目标文件夹 目录: cp -r 源文件夹 目标文件夹)
mv : 移动文件/文件夹(文件: mv 源文件 目标文件夹 目录: mv 源文件夹 目标文件夹)
mv : 改名(mv 源文件名 新名字)(新名字必须是当前目录下不存在的文件名!)
rm : 删除文件/文件夹(文件: rm 文件名 目录: rm -r 文件夹名)
rm : 删除所有文件和文件夹(rm -r *)
扩展1: cd 命令常用用法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6xOGwIeD-1633937330657)(Linux 和数据库 day01 随堂笔记.assets/image-20200523155735676.png)]
案例2: 对文件内容的相关操作命令
在桌面上打开终端窗口, 执行如下操作:
01. 将根目录下所有文件的详细信息输出到 demo 文件中(包含隐藏文件)
02. 直接查看 demo 文件的内容
03. 将 /usr/bin 目录下所有文件的详细信息追加到 demo 文件中
04. 以分屏的形式查看 demo 文件的内容
05. 查找 demo 文件内容中包含 mysql 的信息
06. 在 /usr/bin 目录下所有文件的信息中查找包含 mysql 的信息
07. 清空当前终端窗口中的内容
案例2 01-02
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N2tSVXqn-1633937330658)(Linux 和数据库 day01 随堂笔记.assets/image-20200523170410918.png)]
案例2 03
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4BSkr3n2-1633937330658)(Linux 和数据库 day01 随堂笔记.assets/image-20200523170439704.png)]
案例2 04
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cqfCraTs-1633937330659)(Linux 和数据库 day01 随堂笔记.assets/image-20200523170451777.png)]
more 命令 分屏查看快捷键
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UbAvozr1-1633937330659)(Linux 和数据库 day01 随堂笔记.assets/image-20200523170512816.png)]
案例2 05
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ru0i0Nik-1633937330659)(Linux 和数据库 day01 随堂笔记.assets/image-20200523170524580.png)]
案例2 06
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dREYZYzU-1633937330660)(Linux 和数据库 day01 随堂笔记.assets/image-20200523170540765.png)]
案例2 07
clear : 清空屏幕操作, 快捷键: Ctrl + L
文件内容操作相关命令的小结
> : 重定向符号(将左侧命令的结果输出到右侧的文件中)(反复执行,文件原有内容会被替换)
>> : 追加重定向符号(将左侧命令的结果输出到右侧的文件中)(反复执行,内容追加, 文件原有内容不会被替换)
cat : 查看文件内容(格式: cat 文件名)(适合用于查看文件内容较少的文件)
more : 以分屏形式查看文件内容(格式: more 文件名)(适合用于查看文件内容较多的文件)
| : 管道符号(将左侧命令的结果传递给右侧命令当数据源)
| : 例如: ls -al /usr/bin | grep mysql (从左侧命令的结果中查找 mysql)(管道符右侧命令多用: grep 和 more)
Linux 和数据库day02随堂笔记
案例3: 查看日志文件信息命令
在桌面上打开终端窗口, 执行如下操作:
01. 将根目录下所有文件的详细信息输出到 demo 文件中
02. 查看 demo 文件前 5 行内容
03. 查看 demo 文件后 5 行内容
04. 将 ping www.itheima.com 的信息输出到 ping_log 文件中
05. 重新开启一个终端窗口, 动态查看 ping_log 文件中的信息
##### 扩展1: ping 命令的作用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e76kEarw-1633937363548)(Linux 和数据库day02随堂笔记.assets/image-20200524100444658.png)]
---
##### 查看日志文件内容命令小结
```yacas
head : 可以查看文件开头内容(head 文件名:查看文件的前10行内容; head -行数 文件名:查看文件的前x行内容)
tail : 可以查看文件结尾内容(tail 文件名:查看文件的后10行内容; tail -行数 文件名:查看文件的后x行内容)
tail -f : 动态查看日志文件内容(格式: tail -f 日志文件名)
注意:
1. 系统相关日志存放位置: /var/log
2. 项目相关日志存放位置: 需要根据项目询问对应的开发人员
案例4: 重启/关机/查看系统信息
在桌面上打开终端窗口, 执行如下操作:
01. 查看当前系统内核版本信息
02. 查看当前系统发行版本信息
03. 重启当前系统
04. 关闭当前系统
案例4 01-02
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YgLJjr7R-1633937363549)(Linux 和数据库day02随堂笔记.assets/image-20200524121744927.png)]
案例4 03-04 注意: 重启命令是 reboot
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YR9Wv7aO-1633937363549)(Linux 和数据库day02随堂笔记.assets/image-20200524121827280.png)]
重启/关机/查看系统信息命令小结
reboot : 重启
shutdown -h now : 关机
cat /proc/version : 查看内核版本
cat /etc/redhat-release : 查看发行版本
案例5: 程序和进程操作相关命令
在桌面上打开终端窗口, 执行如下操作:
01. 查看当前系统下的进程信息
02. 手动打开火狐浏览器
03. 获取火狐浏览器的进程信息(进程 ID)
04. 通过结束火狐浏览器进程的方式关闭浏览器
05. 打开当前系统的'任务管理器'(动态查看进程信息)
扩展2 : 进程的含义及作用
进程:可以简单理解为和正在运行的程序对应的信息(等价于程序本身), 可以通过结束进程来关闭对其的程序
Windows 系统启动任务管理器: 桌面底部任务栏上方鼠标右键 -> 任务管理器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g9EFINGI-1633937363550)(Linux 和数据库day02随堂笔记.assets/image-20200524121619550.png)]
如下图可以获取进程 ID
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NTq7zpPl-1633937363550)(Linux 和数据库day02随堂笔记.assets/image-20200524121636737.png)]
案例5 01
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NY8GIQPI-1633937363551)(Linux 和数据库day02随堂笔记.assets/image-20200524121210425.png)]
案例5 02
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HEC1yk8L-1633937363551)(Linux 和数据库day02随堂笔记.assets/image-20200524121233270.png)]
案例5 03
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1XlZTSfH-1633937363552)(Linux 和数据库day02随堂笔记.assets/image-20200524121249338.png)]
案例5 04
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oNXGMpKm-1633937363552)(Linux 和数据库day02随堂笔记.assets/image-20200524121302111.png)]
案例5 05
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jap0LRDb-1633937363553)(Linux 和数据库day02随堂笔记.assets/image-20200524121316648.png)]
案例5 05 top 命令的作用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZXjKSsDh-1633937363554)(Linux 和数据库day02随堂笔记.assets/image-20200524121344454.png)]
案例5 退出 top 页面方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9pAOLZFp-1633937363554)(Linux 和数据库day02随堂笔记.assets/image-20200524121402600.png)]
程序和进程操作相关命令小结
ps -aux : 查看当前系统下所有的进程信息
常用用法: ps -aux | grep 程序名 : 能够获取目标程序的进程 ID
kill -9 进程ID : 通过进程ID关闭对应程序(-9: 强制关闭)
扩展:
top : 可以调用 Linux 系统下的"任务管理器", 可以动态查看所有的进程信息
案例6: 端口号信息的获取及操作命令
在桌面上打开终端窗口, 执行如下操作:
01. 查看当前系统中开放的端口有哪些
02. 查看哪个程序正在使用 3306 端口(需要 root 用户权限)
扩展3: 端口号的意义
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ouxwfe9T-1633937363554)(Linux 和数据库day02随堂笔记.assets/image-20200524121127568.png)]
案例6 01
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R7pY5Ogi-1633937363555)(Linux 和数据库day02随堂笔记.assets/image-20200524120919126.png)]
案例6 切换 root 用户方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2bXzw1kU-1633937363555)(Linux 和数据库day02随堂笔记.assets/image-20200524120940563.png)]
案例6 02
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GncTQPVv-1633937363556)(Linux 和数据库day02随堂笔记.assets/image-20200524120959902.png)]
端口号信息的获取及操作命令小结
netstat -anptu : 可以获取当前系统的网络相关信息(获取端口号信息)
lsof -i:端口号 : 查看占用某一端口的的程序名称及进程ID(需要 root 用户权限)
注意:
1.可以通过 kill -9 进程ID 命令完成对端口占用程序的移除
案例7: 文件权限修改
01. 在当前目录下创建文件 cm_demo
02. 查看文件当前权限状态
03. 使用字母法将文件权限修改为: 拥有者: 可读/用户组: 可写/其他用户:可执行
04. 使用数字法将文件权限修改为: 拥有者: 可读可写可执行/用户组:可读可写/其他用户:可写可执行
扩展4:查看文件详细信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pYpkeBnB-1633937363556)(Linux 和数据库day02随堂笔记.assets/image-20200524122311139.png)]
修改文件权限: 字母法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y258PH5o-1633937363557)(Linux 和数据库day02随堂笔记.assets/image-20200524145847664.png)]
修改文件权限: 数字法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rVJDiIXE-1633937363557)(Linux 和数据库day02随堂笔记.assets/image-20200524120651578.png)]
案例7 01-02
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mz3oUOH1-1633937363557)(Linux 和数据库day02随堂笔记.assets/image-20200524120600304.png)]
案例7 03 字母法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kQsk8133-1633937363558)(Linux 和数据库day02随堂笔记.assets/image-20200524145915264.png)]
案例7 04(权限计算过程)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G5ZawRYN-1633937363558)(Linux 和数据库day02随堂笔记.assets/image-20200524120729583.png)]
案例7 04 数字法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YT9I43FR-1633937363559)(Linux 和数据库day02随堂笔记.assets/image-20200524120743825.png)]
文件权限修改命令小结
命令格式: chmod 权限 文件名
权限修改:
字母法
1. 组别代表字母: u:拥有者 g:用户组 o:其他人 a:以上所有
2. 赋权代表符号: +:增加 -:撤销 =:赋予
3. 权限代表字母: r:读取 w:写入 x:执行
4. 根据需求组合以上三个部分, 再设置权限即可
例如: chmod a=rwx demo 或 chmod u-r,g-w,o=x demo
数字法
1. 权限对应的数字: r:4 w:2 x:1
2. 分别累加每一个组别的权限值之和, 再设置权限即可
例如: chmod 755 demo 或 chmod 775 demo
文件权限修改注意事项:
1. 权限修改可以反复执行, 如果未达到目的, 可以再次修改
2. 究竟使用字母法还是数字法完全看个人喜好
案例8: 系统操作相关命令
在桌面上打开终端窗口, 执行如下操作:
01. 查看 mysql 程序的存放位置
02. 从普通用户切换至 root 用户, 再从 root 用户切换回普通用户
03. 查看当前系统中所有登录用户的信息
04. 退出当前终端窗口
案例8
注意: root 用户密码: 123456
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cmtOgCN1-1633937363559)(Linux 和数据库day02随堂笔记.assets/image-20200524145723705.png)]
系统操作相关命令小结
which 程序名 : 可以查看程序安装位置
su - 用户名 : 切换至用户(su - : 切换到 root 用户)(切换哪个用户, 输入用户对应密码, 密码没有提示)
who -u : 查看用户登录信息
exit : 退出终端窗口(退出用户)
案例9: 查找文件
在桌面上打开终端窗口, 执行如下操作:
01. 在路径下创建 adir,bdir 两个文件夹
02. 在 adir 目录下创建文件 f_demo
03. 切换路径到 bdir 目录下
04. 在当前目录下从 /home/admin 目录中查找 f_demo 文件
案例9
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TdYhalyS-1633937363559)(Linux 和数据库day02随堂笔记.assets/image-20200524172336792.png)]
查找文件注意事项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r4pgmYfw-1633937363560)(Linux 和数据库day02随堂笔记.assets/image-20200524172357352.png)]
查找文件命令小结
find 路径 -name '目标文件名' : 在给出的路径下查找目标文件
注意:
1. 路径处可以使用绝对路径或相对路径
2. 目标文件名处可以使用通配符(*/?/[])
案例10: 链接文件
在桌面上打开终端窗口, 执行如下操作:
01. 在当前路径下创建文件 demo
02. 给 demo 文件创建链接文件名为 ldemo
03. 修改 ldemo 链接文件的内容
04. 查看 demo 文件的内容是否同样变化
05. 修改 demo 文件内容, 查看 ldemo 链接文件内容是否同样变化
扩展5: Windows 快捷方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Upnqykv-1633937363560)(Linux 和数据库day02随堂笔记.assets/image-20200524154049748.png)]
案例10
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fmpjvqQQ-1633937363561)(Linux 和数据库day02随堂笔记.assets/image-20200524153949054.png)]
链接文件命令小结
ln -s 源文件/文件夹 链接文件名 : 给源文件/文件夹创建链接文件(软链接: 等价于Windows系统的快捷方式)
注意:
1. 源文件/文件夹最好给绝对路径(防止链接文件被移动位置后失效)
2. 源文件/文件夹被删除, 链接文件会失效
3. 扩展: ln 源文件/文件夹 链接文件名 : 硬链接(此处不做了解)
案例11: 文件的压缩和解压操作
在桌面上打开终端窗口, 执行如下操作:
01. 在当前路径下创建 atdir,btdir 两个文件夹
02. 在 atdir 目录下创建 aa,bb,cc 三个文件
03. 分别用三种压缩方法对 atdir 目录进行压缩
04. 分别解压上一步产生的压缩包文件内容至 btdir 目录下
案例11 01-02
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6SUQ7DWl-1633937363561)(Linux 和数据库day02随堂笔记.assets/image-20200524172206104.png)]
案例11 03
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ghmIVKHc-1633937363561)(Linux 和数据库day02随堂笔记.assets/image-20200524172229493.png)]
案例11 04
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M7N4HsBX-1633937363562)(Linux 和数据库day02随堂笔记.assets/image-20200524172242016.png)]
文件的压缩和解压操作小结
tar 和 gzip
打包和压缩: tar -zcvf 压缩包名.tar.gz 目标文件/文件夹
解包和解压: tar -zxvf 压缩包名.tar.gz
**扩展-指定解压位置: tar -zxvf 压缩包名.tar.gz 目标文件/文件夹 -C 解压位置文件夹**
tar 和 bzip2
打包和压缩: tar -jcvf 压缩包名.tar.bz2 目标文件/文件夹
解包和解压: tar -jxvf 压缩包名.tar.bz2
扩展-指定解压位置: tar -jxvf 压缩包名.tar.bz2 目标文件/文件夹 -C 解压位置文件夹
选项含义:
-z : gzip(压缩/解压)
-j : bzip2(压缩/解压)
-c : 打包
-x : 解包
-v : 显示过程
-f : 指向文件
-C : 指定解压路径
zip 和 unzip
压缩: zip -r 压缩包名 目标文件/文件夹
解压: unzip -d 解压位置文件夹 压缩包名
案例12: vi 编辑器的使用
在桌面上打开终端窗口, 执行如下操作:
01. 使用快捷键 Ctrl + Alt + F2 切换系统至命令行模式
02. 根据提示依次输入用户名: admin 密码: ack123??
03. 在当前目录下利用 vi 命令创建文件 vi_demo 并打开
04. 修改 vi_demo 文件内容为: hello linux
05. 保存文件内容并退出 vi 模式
06. 查看 vi_demo 文件内容, 确认修改是否完成!
扩展6: 切换 CentOS 系统的命令行模式和图形化模式
命令行模式 : Ctrl + Alt + F2 或 Ctrl + Alt + Fn + F2
图形化模式 : Ctrl + Alt + F1 或 Ctrl + Alt + Fn + F1
注意:
1. 如果鼠标丢失, 需要让虚拟机软件释放鼠标, 快捷键: Ctrl + Alt
2. 切换到命令行模式时, 需要先登录系统, 根据提示依次输入用户和密码即可
案例12 01-02
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hPvXz4tb-1633937363562)(Linux 和数据库day02随堂笔记.assets/image-20200524171132039.png)]
案例12 03-04
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RAZnXQvh-1633937363562)(Linux 和数据库day02随堂笔记.assets/image-20200524171208599.png)]
案例12 05
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y2DEjBIA-1633937363563)(Linux 和数据库day02随堂笔记.assets/image-20200524171245998.png)]
使用步骤:
1. vi 文件名 : 如果文件存在, 则打开文件; 如果文件不存在, 则新建文件.(命令模式)
2. 按字母 i 键 : 从命令模式切换至插入模式
3. 正常编辑文件内容
4. 按下 Esc 键 : 从插入模式切换至末行模式
5. 输入 ':', 后跟 wq, 再按一个回车 : 保存文件内容并退出
说明: w : 写入 q : 退出 !: 强制操作(!q : 强制退出不保存)
注意: vi 工具只要求能够实现对文件内容就行修改并报错操作即可, 其他更多操作自行了解!
扩展7 : 编辑文件内容方法
注意: gedit 命令无法在命令行模式下使用
echo 内容 > 文件名 : 输出内容到文件内
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NpkbDhfp-1633937363563)(Linux 和数据库day02随堂笔记.assets/image-20200524172644012.png)]
gedit 文件名 : 可以调用系统中的文本编辑器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YVdasETB-1633937363564)(Linux 和数据库day02随堂笔记.assets/image-20200524172711663.png)]
Linux 和数据库day03随堂笔记
今天主要内容
- 数据库相关介绍
- 数据库(软件)常见类型
- Navicat 工具基本使用
- 常见的数据类型和约束(重点)
- SQL 语句的编写(表和数据)
一. 数据库是什么?
-
为什么学习数据库
-
软件中产生的所有数据, 最终都要存储于数据库当中
-
测试人员如果想要进行数据查询/数据校验, 就必须掌握对数据库的基本操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KVqwRho2-1633937406070)(Linux 和数据库day03随堂笔记.assets/image-20200526093846799.png)]
-
-
数据库是什么?
- 定义: 用于存储数据的软件
- 特点: 表是数据存储的核心体现
二. 数据库常见分类
-
关系型数据库(重点)
-
RDMS:(Relational Database Management System)关系型数据库系统
-
特征: 以数据表的形式存储数据, 便于数据查询
-
常见的数据库代表
Oracle:在大型项目中使用,例如:银行、电信等项目 MySQL:Web 项目中使用最广泛的关系型数据库 Microsoft SQL Server:在微软的项目中使用 SQLite:轻量级数据库,主要应用在移动平台
-
关系型数据库的核心要素
数据行(一条记录) 数据列(字段) 数据表(数据行的集合) 数据库(数据表的集合,一个数据库中能够有 n 多个数据表)
-
-
-
非关系型数据库
- 不以数据表的形式存储数据的数据库类型
三. SQL 介绍
SQL:Structured Query Language(结构化查询语言),通过SQL语言可以对数据库进行操作
特点: 所有主流的关系型数据库, 都支持使用SQL语句进行数据查询 !
注意: 虽然 SQL 语言分支很多, 但对于测试人员而言, 我们重点掌握查询操作即可!
DQL:数据查询语言,用于对数据进行查询,例如:select
扩展: 在 MySQL 中,默认对 SQL 语法不区分大小写
四. MySQL 介绍
来源: 目前属于 Oracle 旗下产品, 目前只有社区版免费
特点: 开源, 支持多平台(Linux/Windows/macOS), 支持多语言(Java/C/Python…)
注意: 熟悉 SQL 和熟悉 MySQL 不是一回事儿(熟悉 SQL : 熟悉 SQL 语言; 熟悉 MySQL: 用过 MySQL 数据库)
五. 数据库的远程连接(重点)
注意: 实际工作中, 数据库是安装在服务器当中的, 如果要直连数据库进行数据校验, 就必须远程连接
连接步骤
- 获取两个信息: 服务器的 IP 地址; 数据库的账号和密码(找相关人员询问)
- 在自己电脑上使用数据库连接工具(例如: Navicat), 建立连接, 远程连接数据库
- 连接过程中需要确认自己电脑和服务器是否能够正常通信(ping 命令)
注意事项:
- 课上使用的 MySQL 的账号密码虽然是 root 和 123456, 但是和 CentOS 系统的 root 用户没有关系
课程注意:
-
如果第一次连接成功, 再次使用时, 提示 IP 地址问题, 则需要重新获取虚拟机系统的 IP 地址
-
使用过程中, 要确保虚拟机系统不会待机或进入休眠状态, 修改方法如下:
点击电源 -> 点击设置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u2Y1unqQ-1633937406071)(Linux 和数据库day03随堂笔记.assets/image-20200526105358743.png)]
修改 power -> 空白屏幕(从不)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TFqExygz-1633937406072)(Linux 和数据库day03随堂笔记.assets/image-20200526105428493.png)]
六. Navicat 基本使用
数据库连接操作
常规操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cO0lCekW-1633937406074)(Linux 和数据库day03随堂笔记.assets/image-20200526111038405.png)]
注意: 连接只需要建立一次, 后续使用中, 可以通过'编辑连接', 调整连接选项设置即可!
数据库操作
注意: 默认的数据库不要随意操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u2CFT4HT-1633937406074)(Linux 和数据库day03随堂笔记.assets/image-20200526111450646.png)]
连接上鼠标右键 -> 新建数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5GZykRt4-1633937406075)(Linux 和数据库day03随堂笔记.assets/image-20200526120451801.png)]
如图设置字符集和排序规则
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7xXziVnV-1633937406076)(Linux 和数据库day03随堂笔记.assets/image-20200526120610892.png)]
数据库操作注意事项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bpzYLVkQ-1633937406076)(Linux 和数据库day03随堂笔记.assets/image-20200526120629798.png)]
编辑数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lwVpDbvj-1633937406077)(Linux 和数据库day03随堂笔记.assets/image-20200526120645945.png)]
数据库修改注意事项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BH9m05vo-1633937406077)(Linux 和数据库day03随堂笔记.assets/image-20200526120810751.png)]
数据表操作
表 -> 鼠标右键 -> 新建表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UNGieBgv-1633937406078)(Linux 和数据库day03随堂笔记.assets/image-20200526120946092.png)]
添加一个字段 -> 填写表名 -> 保存
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v6KYIbf3-1633937406078)(Linux 和数据库day03随堂笔记.assets/image-20200526121021962.png)]
再次添加或修改字段
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CaxzxDx8-1633937406079)(Linux 和数据库day03随堂笔记.assets/image-20200526121043661.png)]
添加或修改字段注意事项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hpUFUWz4-1633937406079)(Linux 和数据库day03随堂笔记.assets/image-20200526121118602.png)]
数据操作
打开表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BsnyGaUL-1633937406080)(Linux 和数据库day03随堂笔记.assets/image-20200526121134187.png)]
数据修改注意事项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kWJQhCrP-1633937406080)(Linux 和数据库day03随堂笔记.assets/image-20200526121149757.png)]
数据常规操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lDEYcn3e-1633937406081)(Linux 和数据库day03随堂笔记.assets/image-20200526121203089.png)]
删除数据注意事项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OkIn3PrR-1633937406081)(Linux 和数据库day03随堂笔记.assets/image-20200526121214016.png)]
清空表 : 清理数据保留字段
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BynZ866T-1633937406082)(Linux 和数据库day03随堂笔记.assets/image-20200526121234628.png)]
数据修改后, 常用刷新
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hRgGkc55-1633937406082)(Linux 和数据库day03随堂笔记.assets/image-20200526121257437.png)]
七. 数据库的备份与还原(Navicat)
测试过程中会产生垃圾数据, 测试结束时一般都需要还原原有数据, 因此需要在测试执行前先备份, 测试结束后执行还原
注意: 如果是测试工作中的备份与还原, 以下步骤对同一个数据库进行操作即可!
备份操作
要备份的数据库上鼠标右键 -> 转储SQL文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OVjr4vW2-1633937406083)(Linux 和数据库day03随堂笔记.assets/image-20200526120300832.png)]
选择保存位置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dyKrnj2Q-1633937406083)(Linux 和数据库day03随堂笔记.assets/image-20200526120311496.png)]
提示成功关闭即可, 备份完成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-llVJ8Ywt-1633937406083)(Linux 和数据库day03随堂笔记.assets/image-20200526120329665.png)]
生成的文件注意事项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gGghY9OV-1633937406084)(Linux 和数据库day03随堂笔记.assets/image-20200526122826024.png)]
还原操作
-
新建一个与备份数据库设置相同的数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HQCZeUKy-1633937406084)(Linux 和数据库day03随堂笔记.assets/image-20200526115826227.png)]
-
运行上一步保存的SQL文件即可
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RwFFt52w-1633937406085)(Linux 和数据库day03随堂笔记.assets/image-20200526115841855.png)]
找到之前报错的SQL文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-klMKTacA-1633937406085)(Linux 和数据库day03随堂笔记.assets/image-20200526115908144.png)]
确认路径后, 点击开始
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xYIhqzEv-1633937406086)(Linux 和数据库day03随堂笔记.assets/image-20200526115929808.png)]
如图提示成功, 关闭即可
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sjokVXKe-1633937406086)(Linux 和数据库day03随堂笔记.assets/image-20200526115947768.png)]
进入新建数据库中, 刷新数据, 确认还原成功即可
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MGxPXoyy-1633937406086)(Linux 和数据库day03随堂笔记.assets/image-20200526120028854.png)]
八. 数据类型与约束(重点)
作用: 为了更加准确存储数据, 保证数据的有效性, 需要结合数据类型和约束来限制数据的存储
数据类型
整数:int,有符号范围(-2147483648 ~2147483647),无符号范围(0 ~ 4294967295)
小数:decimal,例如:decimal(5,2) 表示共存5位数,小数占2位,整数占3位
字符串:varchar,范围(0~65533),例如:varchar(3) 表示最多存3个字符,一个中文或一个字母都占一个字符
日期时间:datetime,范围(1000-01-01 00:00:00 ~ 9999-12-31 23:59:59),例如:'2020-01-01 12:29:59'
整数类型设置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jPqbPWHE-1633937406087)(Linux 和数据库day03随堂笔记.assets/image-20200526145709622.png)]
约束
主键(primary key):物理上存储的顺序
非空(not null):此字段不允许填写空值
惟一(unique):此字段的值不允许重复
默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准
外键(foreign key):维护两个表之间的关联关系(现阶段先不讲解, 后边再进行扩展)
主键设置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PsUF85bb-1633937406087)(Linux 和数据库day03随堂笔记.assets/image-20200526145728520.png)]
主键的特点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2v5EkzoD-1633937406088)(Linux 和数据库day03随堂笔记.assets/image-20200526145744741.png)]
不为空设置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rjOOczL0-1633937406088)(Linux 和数据库day03随堂笔记.assets/image-20200526145801237.png)]
唯一设置 步骤1: 索引
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ljDtyDLo-1633937406088)(Linux 和数据库day03随堂笔记.assets/image-20200526145831236.png)]
唯一设置 步骤2: 字段 -> 选择目标字段
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-irFTEcn3-1633937406089)(Linux 和数据库day03随堂笔记.assets/image-20200526145909448.png)]
唯一设置 步骤3: 索引类型 -> UNIQUE
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-daRIFho0-1633937406089)(Linux 和数据库day03随堂笔记.assets/image-20200526145926683.png)]
唯一设置 步骤4: 验证
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fvr0lQkU-1633937406090)(Linux 和数据库day03随堂笔记.assets/image-20200526150001501.png)]
默认值设置注意事项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WrkRLplp-1633937406090)(Linux 和数据库day03随堂笔记.assets/image-20200526150024688.png)]
九. SQL 语言
注意: SQL 语言重点是查询语句, 因此对表和数据的操作语句仅做了解, 主要是为了熟悉SQL语句的编写习惯
查询窗口的使用
新建查询窗口
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WkxGLB2l-1633937406090)(Linux 和数据库day03随堂笔记.assets/image-20200526170753175.png)]
查询窗口显示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iLgVOJui-1633937406091)(Linux 和数据库day03随堂笔记.assets/image-20200526170807971.png)]
SQL 语句运行方法1: 直接运行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y0BxrQ5I-1633937406091)(Linux 和数据库day03随堂笔记.assets/image-20200526170831101.png)]
SQL 语句运行方法2: 选中再运行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GR7J822a-1633937406091)(Linux 和数据库day03随堂笔记.assets/image-20200526170851439.png)]
SQL 语句基本含义
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4DjmdEld-1633937406092)(Linux 和数据库day03随堂笔记.assets/image-20200526170908532.png)]
保存查询语句
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-njtUkUlf-1633937406092)(Linux 和数据库day03随堂笔记.assets/image-20200526170920645.png)]
显示查询语句文件保存位置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lXeg5SG2-1633937406093)(Linux 和数据库day03随堂笔记.assets/image-20200526170940483.png)]
注释的使用: 单行注释和多行注释
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0eKYDBpu-1633937406093)(Linux 和数据库day03随堂笔记.assets/image-20200526171005663.png)]
数据表
-- 创表语句
-- 需求0: 创建商品表, 包含商品名称和价格
-- create table 表名(
-- 字段1 类型,
-- 字段2 类型
-- );
-- 优化
drop table if exists goods;
-- drop table : 删表 if exists : 如果存在
-- 如果表存在, 执行删除操作
create table goods(
goodsName varchar(20),
price decimal(4, 2)
);
表已存在提示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pWABW4N9-1633937406093)(Linux 和数据库day03随堂笔记.assets/image-20200526171122659.png)]
需求1: 创建商品表
-- 需求1: 创建商品表, 字段包括 id(主键), 商品名称, 价格, 数量, 公司,备注, 并添加商品
drop table if exists goods;
create table goods(
-- unsigned : 无符号
-- primary key : 主键(不为空)
-- auto_increment : 自动递增
-- 直接替换字段名使用皆可
id int unsigned primary key auto_increment,
goodsName varchar(20),
price decimal(6,2),
num int,
company varchar(20),
remark varchar(30)
);
数据
增加数据(插入数据)
需求1 添加商品
-- 需求1 添加商品
-- 查询一次(方便观察表中字段)
select * from goods;
-- 添加1条数据
-- 主键列是自动增长,插入时需要占位,通常使用0或者 default 或者 null 来占位,插入成功后以实际数据为准
-- 语法 insert into 表名 values(...)
insert into goods values
(0, '战神笔记本', 6000.00, 100, '某东', '战神在手, 天下我有!');
-- 注意: 插入的数据个数与字段数必须匹配, 数据类型也需要对应
-- 插入多条数据
insert into goods values
(0, '小新笔记本', 5000.00, 100, '某东', '小新小新, 蜡笔小新!'),
(0, '外星人笔记本', 9999.00, 100, '某宝', '外星人上位, 战神渣渣!');
-- 注意: 插入多条数据, 每条数据使用逗点分隔即可
-- 扩展: 插入指定字段数据(了解)
-- insert into 表名(字段名) values(字段对应值)
insert into goods(goodsName) values('惠普游侠5');
修改数据
需求2: 修改商品数据1条
-- 需求2: 修改商品数据1条, 删除1条数据
-- 修改
-- 先查询所有数据, 便于观察数据内容
select * from goods;
-- 补充惠普电脑的数据
update goods set price=4500.00,num=50,company='并夕夕' where id=4;
-- 注意: 修改数据时, 为保证修改准确性, 务必要给出限定条件(where)
update goods set price=4500.00,num=50,company='并夕夕';
修改数据不指定条件时的效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MmupBplw-1633937406094)(Linux 和数据库day03随堂笔记.assets/image-20200526170213144.png)]
Linux 数据库 day04 随堂笔记
今日内容介绍
- SQL 语句-查询操作
安排如下: 以2人为单位, 结对完成SQL语句查询训练, 目的: 除了自己能的写的出来, 也要能看懂别的人的
SQL 语句
一. 删除数据
需求2: 删除一条数据
-- 删除一条数据
-- 先查询所有数据
select * from goods;
-- 语法格式 : delete from 表名 where 条件
-- 注意: 如果要删除执行数据, 务必给出限定条件, 否则会删除所有数据!
delete from goods where id = 4;
扩展1
-- 扩展1: 逻辑删除(了解)
-- 对于一些重要数据(例如: 商品数据只是库存为零, 不能删除商品数据),不能直接删除, 此时使用逻辑删除
-- 逻辑删除:通过特定字段值来标记该数据为删除状态而已
-- 实现步骤: 1) 增加特定字段(数据值1为未删除0为删除) 2) 对于要进行逻辑删除的数据,该字段赋值为0即可
-- 增加字段: alter table 表名 add 字段名 类型;
-- 增加标记字段
alter table goods add isdelete int;
-- 更新表内所有数据该字段的值
update goods set isdelete = 1;
-- 标记目标数据为是删除状态(修改该字段值为0)
update goods set isdelete = 0 where id = 2;
-- 查询未删除的数据
select * from goods where isdelete = 1;
扩展2
-- 扩展2: 3种删除数据方法(所有数据)
-- delete from 表名 : 清空表数据(只清空数据,保留结构), 但不会重置主键计数
-- truncate table 表名 : 清空表数据(只清空数据,保留结构), 并会重置主键计数(截断表)
-- drop table 表名 : 删除表, 包括表结构和数据
delete from goods;
truncate table goods;
drop table goods;
-- 删除速度 : drop > truncate > delete
二. 查询数据
1) 基本查询
需求3 : 查询所有/查询指定字段/起别名/去重
-- 需求3: 准备商品数据, 查询所有数据, 查询部分字段, 起字段别名, 去重
-- 准备数据
-- 查询所有数据 : select * from 表名;
select * from goods;
-- 查询部分字段
-- 只需要在查询所有数据的基础上, 修改*的位置, 多个字段逗点隔开
select goodsName,price from goods;
-- 起别名 : 使用 as 关键字, 后跟别名即可
select goodsName as '商品名称',price as '价格' from goods;
select goodsName '商品名称',price '价格' from goods; -- 熟练之后 as 关键字可以省略
select goodsName 商品名称,price 价格 from goods; -- 中文别名引号可以省略
-- 去重 : 根据所给字段, 将字段中数据相同数据合并保留一个
-- 需求 : 当前表当中一共有几家公司
select distinct(company) from goods;
2) 条件查询
需求4 : 比较运算符/逻辑运算符
-- 需求4: 查询价格等于30并且出自并夕夕的所有商品信息
-- 条件查询 : where 条件
select * from goods;
select * from goods where price = 30; -- 比较运算符
select * from goods where price = 30 and company = '并夕夕'; -- 逻辑运算符 and : 并列条件
-- 注意 : 在 where 关键后侧的字符串数据, 必须给引号, 否则会报错
-- select * from goods where price = 30 and company = 并夕夕;
需求5 : 模糊查询
-- 需求5: 查询全部一次性口罩的商品信息
-- 查询所有数据
select * from goods;
-- 模糊查询 : like (字符: % 匹配任意的多个字符)
-- 语句格式 : where 字段 like '%信息'
select * from goods where remark like '%一次性口罩'; -- 以一次性口罩结尾, 前面内容不限制
-- 由于目标信息可能出现在中间部分
-- 注意 : 模糊查询时要注意条件设定, 避免遗漏数据
select * from goods where remark like '%一次性口罩%'; -- 提取内容中包含目标信息的数据
-- 扩展: 查询公司来源是 x宝 的商品信息内容
-- like ( _ : 匹配任意单个字符)
select * from goods where company like '_宝';
需求6 : 范围查询
-- 需求6: 查询所有价格在30-100的商品信息
-- 查询所有数据
select * from goods;
-- 条件查询-范围查询 : between 起始值 and 结束值 : 表示一个连续的范围
select * from goods where price between 30 and 100;
-- 注意: 范围应该从小到大
-- select * from goods where price between 100 and 30; -- 查询不出数据
-- 扩展: 以下数据出自于 某东 和 x宝 商品信息
-- 条件查询-范围查询 : in (条件1, 条件2, ...): 表示在某个不连续范围内
select * from goods where company in ('某东', 'x宝');
需求7 : 空判断
-- 需求7: 查询没有描述信息的商品信息
-- 查询所有数据
select * from goods;
-- 判断空 : is null
-- 注意 : null 与 '' 不是一码事; null : 空; '': 空字符(例如:空格/制表符(tab))
select * from goods where remark is null;
-- 扩展 : 查询以下数据中描述信息不为空的所有商品数据
select * from goods where remark is not null; -- not : 表示对条件取反; not null : 双重否定表示肯定
需求8 : 排序
-- 需求8: 查询所有商品信息, 按照价格从大到小排序, 价格相同时, 按照数量少到多排序
-- 查询所有数据
select * from goods;
-- 排序 : order by 字段名 asc(升序)/desc(降序)
select * from goods order by price desc;
-- 需求实现
select * from goods order by price desc, count asc;
-- 扩展:
select * from goods order by price; -- 默认情况下 order by 是以升序进行排列
select * from goods order by price desc, count; -- 因此 asc 可以省略
需求9 : 聚合函数
-- 需求9: 查询以下信息: 商品信息总条数; 最高商品价格; 最低商品价格; 商品平均价格; 一次性口罩的总数量
-- 查询所有数据
select * from goods;
-- 聚合函数 : SQL 提前准备还一些方法, 具备一定的作用
-- 数据总数 : count()
select count(*) from goods;
select count(remark) from goods; -- 注意: 统计数据总数时, 推荐使用 * (按照数据最多的那一列统计总数)
-- 最大值 : max()
select max(price) from goods;
-- 最小值 : min()
select min(price) from goods;
-- 平均值 : avg()
select avg(price) from goods;
-- 求和 : sum()
select * from goods where remark like '%一次性口罩%'; -- 先获取所有一次口罩的数据
select sum(count) from goods where remark like '%一次性口罩%'; -- 需求实现
需求10 : 分组
-- 需求10: 查询每家公司的商品信息数量
-- 查询所有数据
select * from goods;
-- 分组 : group by 字段 : 可以根据给出的字段数据进行数据分组
-- 注意 : 一般情况下, 分组要配合聚合函数一起使用, 目的是对分组后的数据进行进一步统计
select company 公司名称,count(*) from goods group by company;
-- 分组后再次进行条件筛选
-- 扩展 : 查询某东和x宝最贵商品的价格
-- 先按照公司分组
select company 公司名称 from goods group by company;
-- 注意 : 如果想在分组后再次进行条件筛选, 可以使用 having 关键字
-- 把并夕夕的数据排除掉
select company 公司名称 from goods group by company having company != '并夕夕';
-- 获取公司商品最贵价格
select company 公司名称, max(price) from goods group by company having company != '并夕夕';
需求 11 : 分页查询
-- 需求11: 查询当前表当中第5-10行的所有数据
-- 查询所有数据
select * from goods;
-- 分页查询 : limit 起始索引, 数据行数
-- 索引 : 在计算机当中, 不同于人类的自然计数从 1 开始, 计算机的计数起始值是 0 开始(索引)
-- 起始索引: 实际数据顺序 - 1 即为其对应的索引值
select * from goods limit 4, 6;
-- 扩展 : 如果获取是当前数据中的第1行数据时, 起始索引可以省略
-- 获取当前数据中的第1行数据
-- select * from goods limit 0, 1;
select * from goods limit 1;
-- 分页查询公式的使用
-- 扩展 : 分页查询公式的应用
-- 条件 : 每页显示 m 条数据,求:显示第 n 页的数据
-- 公式 : (n-1)*m, m : 查看指定页面数据
-- 假设 : 当前数据中, 每页显示 3 条数据, 查看第 2 页数据内容
select * from goods limit 3, 3;
SQL 查询作业安排
- 课上的后9个案例, 脱离笔记, 独立完成一遍!
- 完成作业1之后, 完成课下作业2(晚自习发)
- 作业完成后, 提交在线文档, 以小组形式, 进行互审
- 互审过程中记录问题, 完成互审后, 联络老师进行问题沟通
Linux 和数据库 day05 随堂笔记
连接查询
需求1: 内连接
-- 需求1: 查询所有存在商品分类的商品信息
-- 查询商品数据
select * from goods;
select * from category;
-- 在查询中, 需要将两张表存在对应关系的数据全部显示出来时, 需要使用连接查询-内连接
-- 内连接 : 显示两张表中存在对应关系的数据, 无对应关系的数据不显示
-- 语法 : 表1 inner join 表2 on 表1.字段 = 表2.字段
select * from goods inner join category on goods.typeId = category.typeId;
连接查询共通知识点
-- 连接查询共用知识点
-- 对连接后的表进行字段显示限制
-- 注意: 需要由对应的 表名.字段 的方式实现(防止表与表之间存在相同的字段名)
select goods.goodsName, category.cateName from goods inner join category on goods.typeId = category.typeId;
-- 表名.* : 代表显示该表的所有字段
select goods.*, category.cateName from goods inner join category on goods.typeId = category.typeId;
-- 连接查询中, 往往会给表名起别名, 目的: 1) 缩短表名 2) 给表单独创建空间(了解)
select go.goodsName, ca.cateName from goods go inner join category ca on go.typeId = ca.typeId;
需求2: 左连接
-- 需求2: 查询所有商品信息,包含商品分类
-- 查询所有商品
select * from goods;
select * from category;
-- 左连接 : 以 left join 关键为界, 关键字左侧的表的信息要全部显示出来, 而关键字右侧表的信息, 有对应的部分显示, 无对应的部分以 null 占位填充即可
-- 语法 : 表1 left join 表2 on 表1.字段 = 表2.字段
select * from goods go left join category ca on go.typeId = ca.typeId;
-- 需求3: 查询所有商品分类及其对应的商品的信息
-- 左连接
select * from category ca left join goods go on ca.typeId = go.typeId;
需求2: 右连接
-- 需求2: 查询所有商品信息,包含商品分类
-- 查询所有商品
select * from goods;
select * from category;
-- 注意 : 右连接主要解决 3 张及以上表进行连接查询时常见
-- 右连接 : 以 right join 关键为界, 关键字右侧的表的信息要全部显示出来, 而关键字左侧表的信息, 有对应的部分显示, 无对应的部分以 null 占位填充即可
-- 语法 : 表1 right join 表2 on 表1.字段 = 表2.字段
select * from category ca right join goods go on ca.typeId = go.typeId;
-- 需求3: 查询所有商品分类及其对应的商品的信息
-- 右连接
select * from goods go right join category ca on go.typeId = ca.typeId;
内连接和左右连接的小结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7DCz2piw-1633937474201)(Linux 和数据库 day05 随堂笔记.assets/image-20200529112619531.png)]
连接查询的实质
-- 需求 : 显示所有价格低于 120 的商品信息, 包含其对应商品分类
select * from goods;
select * from category;
-- 注意 :
-- 1. 连接操作实质: 只是将分布于多张表的数据, 通过连接的方式进行整理, 形成数据源
-- 2. 连接操作完成后, 之前的所有的查询语法, 都可以继续使用
-- 3. 具体连接方法的选择, 要以具体需求为准
-- 内连接 : 如果有商品没有分类对应信息, 不会被显示出来
-- 注意 : 如果使用内连接, 会造成数据缺失, 查询结果错误
select * from goods go
inner join category ca on go.typeId = ca.typeId
where go.price < 120;
-- 左连接
select * from goods go
left join category ca on go.typeId = ca.typeId
where go.price < 120;
自关联的介绍
特征 : 只有 1 张表, 表中最少存在两列字段具备对应关系;
原理 : 通过起别名的方式, 将 1 张表变为 2 张表, 通过对应字段的对应关系, 进行条件比对, 实现连接查询
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3wbqGhD4-1633937474202)(Linux 和数据库 day05 随堂笔记.assets/image-20200529115856450.png)]
需求4: 自关联
-- 需求4: 查询河南省所有的市
-- 查询所有数据
select * from areas;
-- 自关联 :
-- 1) 通过起别名的方式, 将一表变俩表
-- 2) 通过 表1.字段 = 表2.字段 实现表间关联
select * from areas a1
inner join areas a2 on a1.aid = a2.pid
where a1.atitle = '河南省';
需求5 : 自关联
-- 需求5: 查询河南省的所有的市和区
-- 自关联
select * from areas;
--
select * from areas a1
inner join areas a2 on a1.aid = a2.pid
left join areas a3 on a2.aid = a3.pid
-- inner join areas a3 on a2.aid = a3.pid
where a1.atitle = '河南省';
子查询的介绍
定义 : 在一条查询语句当中, 利用另一条语句作为条件或数据源, 充当条件或数据源的语句称之为子查询语句.
注意 : 子查询语句在使用时, 务必使用括号括起来
需求6 : 子查询-充当条件
-- 需求6: 查询价格高于平均价的商品信息
-- 查询所有数据
select * from goods;
-- 查询平均价格
select avg(price) from goods; -- 68.33
-- 需求实现
select * from goods where price > 68.33;
-- 优化实现 - 子查询 : 在 where 关键字后边的子查询语句是充当条件的
select * from goods where price > (select avg(price) from goods);
需求7 : 子查询-充当数据源
-- 需求7: 查询所有来自并夕夕的商品信息, 包含商品分类
-- 查询所有数据
select * from goods;
select * from category;
-- 并夕夕商品信息
select * from goods where company = '并夕夕';
-- 需求实现 - 子查询 : 在 from 和连接查询关键字后边的子查询语句时充当数据源的
select * from category ca
inner join (select * from goods where company = '并夕夕') a on ca.typeId = a.typeId;
扩展1 : 子查询的分类
根据子查询语句返回的结果形式体现, 子查询共分为 4 类:
子查询返回的结果是一个值(一行一列), 称之为: 标量子查询
子查询返回的结果是一列数据(一列多行), 称之为: 列子查询
子查询返回的结果是一行数据(一行多列), 称之为: 行子查询
子查询返回的结果是多行多列(相当于一张表), 称之为: 表级子查询
扩展2 : 子查询关键字
-- 需求 : 查询在25-100之间的商品的价格
select price from goods where price between 25 and 100;
-- in : 范围
-- select * from goods where price in (25, 30, 77, 30, 72,25);
select * from goods where price in (select price from goods where price between 25 and 100);
-- some/any : 任意一个
select * from goods where price = some(select price from goods where price between 25 and 100);
select * from goods where price = any(select price from goods where price between 25 and 100);
-- all : 全部(= all : 等于所有; != 或 <> all : 不等于所有)
select * from goods where price = all(select price from goods where price between 25 and 100);
select * from goods where price != all(select price from goods where price between 25 and 100);
select * from goods where price <> all(select price from goods where price between 25 and 100);
Linux 和数据库 day06 随堂笔记
今日内容介绍
全天内容无需立马掌握
- MySQL 的高级功能应用
数据库设计
ER模型
定义: E 代表实体(数据表), R 代表联系(数据表之间对应的字段)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-betLfnTm-1633937544079)(Linux 和数据库 day06 随堂笔记.assets/image-20200530092701017.png)]
关系常见分类
- 一对一
- 一对多
- 多对多
外键
如果一个实体的某个字段指向另一个实体的主键,就称为外键。
被指向的实体,称之为主实体(主表),也叫父实体(父表)。
负责指向的实体,称之为从实体(从表),也叫子实体(子表)
作用: 对关系字段进行约束,当为从表中的关系字段填写值时,会到关联的主表中查询此值是否存在,如果存在则填
写成功,如果不存在则填写失败并报错
-- 主表
drop table if exists class;
create table class(
id int unsigned primary key auto_increment,
name varchar(10)
);
-- 从表
drop table if exists stu;
create table stu(
name varchar(10),
class_id int unsigned,
-- stu 表的 class_id 指向 class 表的 id, class_id 是 stu 表的外键
-- foreign key(自己的字段名) references 目标表名(目标表的主键)
foreign key(class_id) references class(id)
);
扩展1 : 对应存在表添加外键
-- 扩展1 : 对于已经存在的表添加外键
-- alter table 从表名 add foreign key (从表字段) references 主表名(主表主键);
alter table stu add foreign key (class_id) references class(id);
扩展2 : 查看和删除外键
-- 扩展2 : 查看外键和删除外键
-- 查看外键
-- show create table 表名
show create table stu;
-- CREATE TABLE `stu` (
-- `name` varchar(10) DEFAULT NULL,
-- `class_id` int(10) unsigned DEFAULT NULL,
-- KEY `class_id` (`class_id`),
-- CONSTRAINT `stu_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`)
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8
-- 删除外键
-- alter table stu drop foreign key 外键名称
alter table stu drop foreign key stu_ibfk_1;
利用 Navicat 查看外键
设计表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5opdrkSF-1633937544080)(Linux 和数据库 day06 随堂笔记.assets/image-20200530101959619.png)]
查看外键
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fu7WM13Q-1633937544080)(Linux 和数据库 day06 随堂笔记.assets/image-20200530102010111.png)]
结论 : 由于设置外键会极大降低对数据修改效率, 因此在实际工作中遇到使用外键的几率比较低
索引
定义: 类似于图书中的目录, 能够起到快速检索数据的作用
作用: 对于大量数据进行查询效率优化时, 可以采取添加索引的策略
-- 索引应用检验案例
-- 开启时间监测
set profiling=1;
-- 查询示例数据 num = 10000 的值
select * from test_index where num = 10000;
-- 查看运行时间
show profiles;
-- 添加索引
-- create index 索引名称 on 表名(目标字段)
create index num_index on test_index(num);
-- 再次执行查询数据操作
select * from test_index where num = 10000;
-- 再次查看运行时间
show profiles;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3AZimYba-1633937544081)(Linux 和数据库 day06 随堂笔记.assets/image-20200530104630164.png)]
扩展1: 查看索引
-- 扩展1 : 查看索引
-- show index from 表名
show index from test_index;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jia4QBh4-1633937544081)(Linux 和数据库 day06 随堂笔记.assets/image-20200530111632908.png)]
扩展2 : 创表时添加
-- 扩展2 : 创表时添加
create table create_index(
id int primary key,
name varchar(10) unique, -- unique : 设置端唯一值
age int,
key(age) -- 指定添加索引方法
);
-- 查看索引
show index from create_index;
扩展3 : 删除索引
-- 扩展3 : 删除索引
-- drop index 索引名称 on 表名;
drop index age on create_index;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7s8UT3jc-1633937544081)(Linux 和数据库 day06 随堂笔记.assets/image-20200530111728027.png)]
结论 : 索引在使用的时候能提高查询效率, 但是在进行插入/更新/删除时, 索引会造成障碍, 因此需要在执行这些操作前, 先移除索引, 操作结束后, 重新添加索引即可
命令行中操作 MySQL
前提: 要进行操作系统环境中, 存在 MySQL 环境
登录 MySQL
mysql -u数据库用户名 -p数据库密码
例如:
mysql -uroot -p123456
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I7uHNXRT-1633937544082)(Linux 和数据库 day06 随堂笔记.assets/image-20200530113322869.png)]
数据库操作
查看所有数据库 : show databases;
使用数据库 : use 数据库名称;
查看当前使用的数据库 : select database();
创建数据库 : create database 数据库名称 charset=utf8;
删除数据库 : drop database 数据库名称;
查看所有数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tl1tscHx-1633937544082)(Linux 和数据库 day06 随堂笔记.assets/image-20200530114833294.png)]
使用数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w9TAsP7G-1633937544083)(Linux 和数据库 day06 随堂笔记.assets/image-20200530114856547.png)]
查看当前使用的数据库名称
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K837oSDC-1633937544083)(Linux 和数据库 day06 随堂笔记.assets/image-20200530114911902.png)]
创建数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oZNqioVi-1633937544084)(Linux 和数据库 day06 随堂笔记.assets/image-20200530114935610.png)]
删除数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Me9TqbbC-1633937544084)(Linux 和数据库 day06 随堂笔记.assets/image-20200530114947809.png)]
数据表操作
查看数据库中的所有数据表 : show tables;
查看表结构 : desc 表名;
查看创表语句 : show create table 表名;
注意 : 进入到数据库之后, 所有的 SQL 查询语句, 均可以正常使用!
查看所有数据表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-291AVozn-1633937544084)(Linux 和数据库 day06 随堂笔记.assets/image-20200530120409185.png)]
查看表字段信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yFbueh5i-1633937544085)(Linux 和数据库 day06 随堂笔记.assets/image-20200530120426735.png)]
查看创表语句
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aF5PQlMv-1633937544085)(Linux 和数据库 day06 随堂笔记.assets/image-20200530120446940.png)]
命令行和图形化页面操作步骤对比
连接数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5sCtxG3l-1633937544086)(Linux 和数据库 day06 随堂笔记.assets/image-20200530141709512.png)]
查看数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YFeKci35-1633937544086)(Linux 和数据库 day06 随堂笔记.assets/image-20200530141722101.png)]
选择数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-scCls64z-1633937544086)(Linux 和数据库 day06 随堂笔记.assets/image-20200530141735111.png)]
新建查询
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uaMBrKDX-1633937544087)(Linux 和数据库 day06 随堂笔记.assets/image-20200530141747407.png)]
查看所有表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2162A9xk-1633937544088)(Linux 和数据库 day06 随堂笔记.assets/image-20200530141804794.png)]
查看表结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eK8HdbpF-1633937544088)(Linux 和数据库 day06 随堂笔记.assets/image-20200530141831481.png)]
编写 SQL 查询语句
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8r9QSrDe-1633937544088)(Linux 和数据库 day06 随堂笔记.assets/image-20200530141846334.png)]
结论 : 命令行使用是为了在没有图形化工具的情况下, 应急使用操作数据库的手段
存储过程
定义 : 可以叫存储程序, 通过一定的代码逻辑, 将一句或多久SQL语句进行封装, 通过调用存储过程, 快速实现其内部封装SQL语句操作
用途 : 可以用来向数据库中, 快速插入大量测试数据时使用
基本语法格式
delimiter // -- 取消默认结尾标识符 ; 的作用
create procedure 存储过程名(参数列表)
begin -- 代码逻辑的开始
SQL语句
end //
delimiter ; -- 还原默认结尾标识符 ; 的作用
调用方法
-- 在查询窗口中
call 存储过程名();
语法实现
-- 修改句尾标识符为'//'
delimiter //
-- 如果存在 test 存储过程则删除
drop procedure if exists test;
-- 创建无参数的存储过程 test
create procedure test()
begin
-- 声明变量 i
declare i int;
-- 变量初始化赋值为 0
set i = 0;
-- 设置循环条件: 当 i 大于 10 时跳出 while 循环
while i < 10000 do
-- 往 datatest 表插入数据
insert into datatest values (null, i);
-- 循环一次, i 加一
set i = i + 1;
-- 结束 while 循环
end while;
-- 查看 datatest 表数据
select * from datatest;
-- 结束存储过程定义语句
end//
-- 恢复句尾标识符为';'
delimiter ;
事务
定义 : 所谓事务可以称之一个操作序列, 一系列操作要么都执行, 要么就不执行. 对于数据库来讲, 对于数据的操作行为, 要么都实现, 要么都不实现, 最终需要确保写入到数据库的数据的一致性(原子性)!
事务实现案例
前提: 数据表的数据引擎类型必须是 InnoDB (可以通过查看创表语句来确认)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tyqzg2Sj-1633937544089)(Linux 和数据库 day06 随堂笔记.assets/image-20200530151924221.png)]
-- 注意 : 出发事务操作一般是由修改数据操作产生(插入数据insert/更新数据update/删除数据delete)
-- 开启事务
begin;
-- 提交事务
commit;
-- 回滚事务
rollback;
案例实现步骤
1. 开启两个终端窗口(A窗口操作/B窗口查询)
2. A 窗口 begin 开启事务, 执行修改数据操作
3. B 窗口查询数据(此时B看不到A的修改结果)
4. A 提交事务 commit
5. B 再次查看(可以见到A的修改结果)
6. A 再次开启事务, 执行修改数据操作
7. A 执行回滚事务 rollback
8. B 查看不到A的修改操作结果
视图
场景 : 能够封装 SQL 语句, 以类似于表的形式存在
-- 创建视图语法
-- 注意: 视图命名一般以 v_视图名称 形式实现
-- create view 视图名称 as select 语句;
create view v_goods as select goodsName 商品名称, price 价格, num 数量, company 公司 from goods;
-- 视图的用法: 当成表查询使用即可
select * from v_goods;
-- 复杂 SQL 语句视图封装
select go.goodsName, ca.cateName from goods go inner join category ca on go.typeId = ca.typeId;
-- 封装连接查询语句时, 如果存在重名字段名称, 需要通过别名进行修改
create view v_goods_cate as select go.*, ca.id 序号, ca.typeId 类型, ca.cateName from goods go inner join category ca on go.typeId = ca.typeId;
select * from v_goods_cate;
-- 删除视图语句
-- drop view 视图名称
drop view v_goods_cate;
注意 : 视图可以起到隐藏真实数据表内容的作用
视图名称以 v 开头的原因
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T1SdDnPi-1633937544089)(Linux 和数据库 day06 随堂笔记.assets/image-20200530161517641.png)]
修改 MySQL 数据库密码
场景 : 遗忘数据库密码时使用
1. 修改数据库配置文件, 使之登录不需要密码
此操作需要具备服务器 root 账户权限
-
查找配置文件并修改
切换 root 用户 su - 定位配置文件位置 locate my.cnf 使用 vi 工具打开配置文件 vi /etc/my.cnf 在文件内容 [mysqld] 下方添加此内容, 保存后退出 skip-grant-tables
切换 root 用户
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fDa0NJUG-1633937544090)(Linux 和数据库 day06 随堂笔记.assets/image-20200530173030630.png)]
查看和获取 MySQL 配置文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XDogG8Bc-1633937544090)(Linux 和数据库 day06 随堂笔记.assets/image-20200530173010669.png)]
添加内容 跳过密码登录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zk01NyP4-1633937544090)(Linux 和数据库 day06 随堂笔记.assets/image-20200530172715882.png)]
保存文件修改内容退出
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hN7lpXNB-1633937544091)(Linux 和数据库 day06 随堂笔记.assets/image-20200530172643441.png)]
确认配置文件内容已经修改
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Scc7FcnO-1633937544091)(Linux 和数据库 day06 随堂笔记.assets/image-20200530172605509.png)]
-
重新启动 MySQL 服务
systemctl restart mysqld 重启完成可以通过查看状态命令进行验证 systemctl status mysqld
重启和查看 mysqld 服务
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a4XSedXU-1633937544092)(Linux 和数据库 day06 随堂笔记.assets/image-20200530172540813.png)]
-
重新登录 MySQL 查看是否需要密码进行登录
确认不需要密码可以登录 MySQL
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TU6ktYTw-1633937544092)(Linux 和数据库 day06 随堂笔记.assets/image-20200530172506473.png)]
2. 登录数据库, 修改数据库账户密码
注意 : 本步骤为 SQL 语句, 需要在 mysql > 状态下执行
use mysql; -- 选择 mysql 数据库
-- 更新密码
-- 注意 : authentication_string 字段名需要根据 MySQL 版本就行对应修改
-- update user set authentication_string=password('新密码') where user = '用户名';
update user set authentication_string=password('123') where user = 'root';
-- 刷新权限
flush privileges;
3. 还原配置文件设置, 使之登录需要密码
还原配置文件设置与添加设置步骤基本相同
-
查找配置文件并修改
切换 root 用户 su - 定位配置文件位置 locate my.cnf 使用 vi 工具打开配置文件 vi /etc/my.cnf 使用 # 注释 [mysqld] 下方内容, 保存后退出 # skip-grant-tables
注释配置文件内容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SlQogOXT-1633937544092)(Linux 和数据库 day06 随堂笔记.assets/image-20200530172431871.png)]
-
重新启动 MySQL 服务
systemctl restart mysqld 重启完成可以通过查看状态命令进行验证 systemctl status mysqld
-
重新使用修改后的密码登录 MySQL 即可
MySQL 日志的获取
注意 : MySQL 自带日志功能, 但是开启日志功能, 极其消耗数据库性能, 因此默认情况下是不开启的
-- 查看日志功能是否开启
show variables like 'general%';
-- 开启操作
set global general_log = 1;
-- 关闭操作
set global general_log = 0;
-- 注意: 日志功能使用完成, 需要记得马上关闭, 避免影响数据库性能!!!!!!
查看日志功能是否开启
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kdcu3AYP-1633937544093)(Linux 和数据库 day06 随堂笔记.assets/image-20200530172252210.png)]
开启日志功能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kb8aN5DX-1633937544093)(Linux 和数据库 day06 随堂笔记.assets/image-20200530172311376.png)]
获取日志文件内容(注意: 要从服务器端获取)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yYEhonS8-1633937544093)(Linux 和数据库 day06 随堂笔记.assets/image-20200530172327241.png)]
关闭日志功能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wFucaUhC-1633937544094)(Linux 和数据库 day06 随堂笔记.assets/image-20200530172355424.png)]