Linux——一

一、Linux

Linux目录结构(掌握)

  • FHS标准:
    • /boot:启动目录,内核存放地
    • /etc:配置文件存放地
    • /tmp:程序产生的临时文件
    • /home:用户的目录,新增用户账号时,用户的家目录都存放在此目录
    • /lib:库文件,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
    • /bin:可执行文件和常用的Linux命令
    • /sbin:系统管理员的命令和工具
    • /usr:应用程序和文件的安装地
    • /mnt:挂载其他文件系统
    • /root:root账户的home目录
    • /dev:存放Linux系统下的设备文件

在这里插入图片描述

vi 编辑器使用

在这里插入图片描述
在这里插入图片描述

Linux管理文件和目录命令

在这里插入图片描述

pwdcd

  • 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)]


一. 硬件和软件

硬件: 能看见也能摸得到

软件: 能看见不能摸得到

关系: 没有软件的硬件是没有任何意义的, 只有存在软件的硬件才能为人所用


二. 操作系统
作用
  1. 是硬件设备上的第一层软件
  2. 有了操作系统可以方便我们调用所有的硬件设备
  3. 所有应用程序(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]

绝对路径和相对路径

绝对路径: 路径源头固定不变, 常见有两个: ‘/’: 根目录; ‘~’: 当前用户的家目录

相对路径: 以当前所在路径为源头, 常见的表示形式有两个: ‘.’:当前路径下; ‘…’:当前目录的上一层(父层级)

路径注意事项:

  1. 绝对路径使用时, 需要确定文件在根目录下还是用户目录下, 合理选择起始符号即可
  2. 初学时, 建议所有路径优先使用绝对路径, 当清楚文件结构关系后, 逐步转换为相对路径
  3. 相对路径中, 如果是当前路径下的文件获取操作, 那么 ‘./’ 一般是可以省略的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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 数据库)


五. 数据库的远程连接(重点)

注意: 实际工作中, 数据库是安装在服务器当中的, 如果要直连数据库进行数据校验, 就必须远程连接

连接步骤
  1. 获取两个信息: 服务器的 IP 地址; 数据库的账号和密码(找相关人员询问)
  2. 在自己电脑上使用数据库连接工具(例如: Navicat), 建立连接, 远程连接数据库
  3. 连接过程中需要确认自己电脑和服务器是否能够正常通信(ping 命令)
注意事项:
  1. 课上使用的 MySQL 的账号密码虽然是 root 和 123456, 但是和 CentOS 系统的 root 用户没有关系
课程注意:
  1. 如果第一次连接成功, 再次使用时, 提示 IP 地址问题, 则需要重新获取虚拟机系统的 IP 地址

  2. 使用过程中, 要确保虚拟机系统不会待机或进入休眠状态, 修改方法如下:

    点击电源 -> 点击设置

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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)]


还原操作
  1. 新建一个与备份数据库设置相同的数据库

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HQCZeUKy-1633937406084)(Linux 和数据库day03随堂笔记.assets/image-20200526115826227.png)]

  2. 运行上一步保存的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)]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值