当前位置: 首页 > news >正文

Linux 和数据库笔记-03

今天主要内容

  • 数据库相关介绍

  • 数据库(软件)常见类型

  • Navicat 工具基本使用

  • 常见的数据类型和约束(重点)

  • SQL 语句的编写(表和数据)


一. 数据库是什么?

  • 为什么学习数据库

  • 软件中产生的所有数据, 最终都要存储于数据库当中

  • 测试人员如果想要进行数据查询/数据校验, 就必须掌握对数据库的基本操作

![image-20200526093846799](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 地址; 数据库的账号和密码(找相关人员询问)

  1. 在自己电脑上使用数据库连接工具(例如: Navicat), 建立连接, 远程连接数据库

  1. 连接过程中需要确认自己电脑和服务器是否能够正常通信(ping 命令)

注意事项:
  1. 课上使用的 MySQL 的账号密码虽然是 root 和 123456, 但是和 CentOS 系统的 root 用户没有关系

课程注意:
  1. 如果第一次连接成功, 再次使用时, 提示 IP 地址问题, 则需要重新获取虚拟机系统的 IP 地址

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

点击电源 -> 点击设置

![image-20200526105358743](Linux 和数据库day03随堂笔记.assets/image-20200526105358743.png)

修改 power -> 空白屏幕(从不)

![image-20200526105428493](Linux 和数据库day03随堂笔记.assets/image-20200526105428493.png)


六. Navicat 基本使用

数据库连接操作
常规操作

![image-20200526111038405](Linux 和数据库day03随堂笔记.assets/image-20200526111038405.png)

注意: 连接只需要建立一次, 后续使用中, 可以通过'编辑连接', 调整连接选项设置即可!

数据库操作
注意: 默认的数据库不要随意操作

![image-20200526111450646](Linux 和数据库day03随堂笔记.assets/image-20200526111450646.png)

连接上鼠标右键 -> 新建数据库

![image-20200526120451801](Linux 和数据库day03随堂笔记.assets/image-20200526120451801.png)

如图设置字符集和排序规则

![image-20200526120610892](Linux 和数据库day03随堂笔记.assets/image-20200526120610892.png)

数据库操作注意事项

![image-20200526120629798](Linux 和数据库day03随堂笔记.assets/image-20200526120629798.png)

编辑数据库

![image-20200526120645945](Linux 和数据库day03随堂笔记.assets/image-20200526120645945.png)

数据库修改注意事项

![image-20200526120810751](Linux 和数据库day03随堂笔记.assets/image-20200526120810751.png)


数据表操作
表 -> 鼠标右键 -> 新建表

![image-20200526120946092](Linux 和数据库day03随堂笔记.assets/image-20200526120946092.png)

添加一个字段 -> 填写表名 -> 保存

![image-20200526121021962](Linux 和数据库day03随堂笔记.assets/image-20200526121021962.png)

再次添加或修改字段

![image-20200526121043661](Linux 和数据库day03随堂笔记.assets/image-20200526121043661.png)

添加或修改字段注意事项

![image-20200526121118602](Linux 和数据库day03随堂笔记.assets/image-20200526121118602.png)


数据操作
打开表

![image-20200526121134187](Linux 和数据库day03随堂笔记.assets/image-20200526121134187.png)

数据修改注意事项

![image-20200526121149757](Linux 和数据库day03随堂笔记.assets/image-20200526121149757.png)

数据常规操作

![image-20200526121203089](Linux 和数据库day03随堂笔记.assets/image-20200526121203089.png)

删除数据注意事项

![image-20200526121214016](Linux 和数据库day03随堂笔记.assets/image-20200526121214016.png)

清空表 : 清理数据保留字段

![image-20200526121234628](Linux 和数据库day03随堂笔记.assets/image-20200526121234628.png)

数据修改后, 常用刷新

![image-20200526121257437](Linux 和数据库day03随堂笔记.assets/image-20200526121257437.png)


七. 数据库的备份与还原(Navicat)

测试过程中会产生垃圾数据, 测试结束时一般都需要还原原有数据, 因此需要在测试执行前先备份, 测试结束后执行还原

注意: 如果是测试工作中的备份与还原, 以下步骤对同一个数据库进行操作即可!

备份操作
要备份的数据库上鼠标右键 -> 转储SQL文件

![image-20200526120300832](Linux 和数据库day03随堂笔记.assets/image-20200526120300832.png)

选择保存位置

![image-20200526120311496](Linux 和数据库day03随堂笔记.assets/image-20200526120311496.png)

提示成功关闭即可, 备份完成

![image-20200526120329665](Linux 和数据库day03随堂笔记.assets/image-20200526120329665.png)

生成的文件注意事项

![image-20200526122826024](Linux 和数据库day03随堂笔记.assets/image-20200526122826024.png)


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

![image-20200526115826227](Linux 和数据库day03随堂笔记.assets/image-20200526115826227.png)

  1. 运行上一步保存的SQL文件即可

![image-20200526115841855](Linux 和数据库day03随堂笔记.assets/image-20200526115841855.png)

找到之前报错的SQL文件

![image-20200526115908144](Linux 和数据库day03随堂笔记.assets/image-20200526115908144.png)

确认路径后, 点击开始

![image-20200526115929808](Linux 和数据库day03随堂笔记.assets/image-20200526115929808.png)

如图提示成功, 关闭即可

![image-20200526115947768](Linux 和数据库day03随堂笔记.assets/image-20200526115947768.png)

进入新建数据库中, 刷新数据, 确认还原成功即可

![image-20200526120028854](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'
整数类型设置

![image-20200526145709622](Linux 和数据库day03随堂笔记.assets/image-20200526145709622.png)

约束
主键(primary key):物理上存储的顺序
非空(not null):此字段不允许填写空值
惟一(unique):此字段的值不允许重复
默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准
外键(foreign key):维护两个表之间的关联关系(现阶段先不讲解, 后边再进行扩展)
主键设置

![image-20200526145728520](Linux 和数据库day03随堂笔记.assets/image-20200526145728520.png)

主键的特点

![image-20200526145744741](Linux 和数据库day03随堂笔记.assets/image-20200526145744741.png)

不为空设置

![image-20200526145801237](Linux 和数据库day03随堂笔记.assets/image-20200526145801237.png)

唯一设置 步骤1: 索引

![image-20200526145831236](Linux 和数据库day03随堂笔记.assets/image-20200526145831236.png)

唯一设置 步骤2: 字段 -> 选择目标字段

![image-20200526145909448](Linux 和数据库day03随堂笔记.assets/image-20200526145909448.png)

唯一设置 步骤3: 索引类型 -> UNIQUE

![image-20200526145926683](Linux 和数据库day03随堂笔记.assets/image-20200526145926683.png)

唯一设置 步骤4: 验证

![image-20200526150001501](Linux 和数据库day03随堂笔记.assets/image-20200526150001501.png)

默认值设置注意事项

![image-20200526150024688](Linux 和数据库day03随堂笔记.assets/image-20200526150024688.png)


九. SQL 语言

注意: SQL 语言重点是查询语句, 因此对表和数据的操作语句仅做了解, 主要是为了熟悉SQL语句的编写习惯

查询窗口的使用
新建查询窗口

![image-20200526170753175](Linux 和数据库day03随堂笔记.assets/image-20200526170753175.png)

查询窗口显示

![image-20200526170807971](Linux 和数据库day03随堂笔记.assets/image-20200526170807971.png)

SQL 语句运行方法1: 直接运行

![image-20200526170831101](Linux 和数据库day03随堂笔记.assets/image-20200526170831101.png)

SQL 语句运行方法2: 选中再运行

![image-20200526170851439](Linux 和数据库day03随堂笔记.assets/image-20200526170851439.png)

SQL 语句基本含义

![image-20200526170908532](Linux 和数据库day03随堂笔记.assets/image-20200526170908532.png)

保存查询语句

![image-20200526170920645](Linux 和数据库day03随堂笔记.assets/image-20200526170920645.png)

显示查询语句文件保存位置

![image-20200526170940483](Linux 和数据库day03随堂笔记.assets/image-20200526170940483.png)

注释的使用: 单行注释和多行注释

![image-20200526171005663](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)
);
表已存在提示

![image-20200526171122659](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='并夕夕';
修改数据不指定条件时的效果

![image-20200526170213144](Linux 和数据库day03随堂笔记.assets/image-20200526170213144.png)

相关文章:

Linux 和数据库笔记-03

今天主要内容数据库相关介绍数据库(软件)常见类型Navicat 工具基本使用常见的数据类型和约束(重点)SQL 语句的编写(表和数据)一. 数据库是什么?为什么学习数据库软件中产生的所有数据, 最终都要存储于数据库当中测试人员如果想要进行数据查询/数据校验, 就必须掌握对数据库的基…...

布尔定律---布尔代数的基本定律

一、单变量布尔定律 1、0-1定律 2、互补定律 3、重叠定律 4、还原定律 小结:或运算和与运算定律的差别在于:所有的“|”运算符换成“&”,运算结果为 0 换成 1。这就是对偶定律。它不仅是单逻辑变量的定律,而且对于所有布尔定…...

OSG三维渲染引擎编程学习之七十五:“第七章:OSG场景图形交互” 之 “7.6 多视图”

目录 第七章 OSG场景图形交互 7.6 多视图 7.6.1 多视图描述 7.6.2 多视图相机示例 第七章 OSG场景图形交互 作为一个成熟的三维渲染引擎,需...

【计算机】单位制前缀的歧义-KB、kb、MB混用

引言 经常遇到容量、带宽的单位,MB,GB在进行单位换算时,总是傻傻分不清,查些资料浅记录一下。 公制(metric system) 又译米制,是一个国际化十进位量度系统。法国在1799年开始使用公制&#xf…...

nodejs调用浏览器打开URL链接

本文主要介绍的是node.js调用Chrome浏览器/默认浏览器打开链接地址的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 安装第三方插件open 通过open模块,可以在任何平台上打开某个浏览器网址。 通过NPM安装 npm i…...

ARM uboot 的移植2-从三星官方 uboot 开始移植

一、inand 驱动问题的解决 1、先从现象出发定位问题 (1) 解决问题的第一步,是定位问题。所谓定位问题,就是找到源代码当中导致这个问题的那一句或者那几句代码。有时候解决这个问题需要修改的代码和直接导致这个问题的代码是不同的。我们这里说的定位问…...

js作用域和作用域链

1、局部作用域分为函数作用域和块作用域 1.1、函数作用域: 在函数内部声明的变量只能在函数内部被访问,外部无法直接访问。 总结 1.函数内部声明的变量,在函数外部无法被访问 2.函数的参数也是函数内部的局部变量 3.不同函数内部声明的变量无法互相访…...

C语言字符串

目录 一、字符串的引入和注意事项 1.1 字符串定义的几种方式: 1.2 定义字符串的方法一和方法二的区别: 1.3 字符串输出的几种方式: 1.3.1 循环下标法遍历输出字符串: 1.3.2 转义字符%s输出字符串: 1.3.3 使用puts函…...

Eureka注册中心快速入门

一、提供者与消费者**服务提供者:**一次业务中,被其他微服务调用的服务。(提供接口给其他微服务)**服务消费者:**一次业务中,调用其他微服务的服务。(调用其它微服务提供的接口)比如…...

xmu 离散数学 卢杨班作业详解【1-3章】

文章目录第一章 命题逻辑常用latex数学公式1.4.5679101113171923242627第二章 一阶逻辑1.2.3.6.9.10.12.13.一阶逻辑推理理论12.13.15.第三章 集合2478101213.第一章 命题逻辑 常用latex数学公式 符号代码∨\vee∨$\vee$∧\wedge∧$\wedge$→\rightarrow→$\rightarrow$⇒\Ri…...

mvn命令

在IDEA右侧Maven菜单中,有以下几种指令。 clean:清理,清除上一次构建生产的文件。执行该命令会删除项目地址下的target文件,但不会删除本地的maven已生成的文件。 validate:验证,验证项目是否正确且所有必…...

JS - 事件循环EventLoop

一、面试题:说一下事件循环(回答思路梳理) 首先 js 是单线程运行的( JS 可以修改 DOM,如果在 JS 执行的时候 UI 线程还在工作,就可能导致不能安全的渲染 UI),在代码执行的时候&…...

【Java基础】30分钟Git 从入门到精通

一、 版本控制工具1、什么是版本控制系统?版本控制系统(Version Control System):是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对…...

0100 MySQL03

1.distinct关键字 把查询结果去除重复记录,原表数据不会被修改,只能出现在字段的最前端 select distinct job from emp; select distinct job,deptno from emp;//表示两个字段联合起来 去重 2.连接查询 从一张表中单独查询,称为单表查询 两张表联合…...

32- PyTorch基础 (PyTorch系列) (深度学习)

知识要点 PyTorch可以说是现阶段主流的深度学习框架 . 1 PyTorch入门 1.1 PyTorch概述 Torch是什么?一个火炬!其实跟Tensorflow中Tensor是一个意思,可以当做是能在GPU中计算的矩阵.,也可以当做是ndarray的GPU版! PyT…...

用gdb.attach()在gdb下断点但没停下的情况及解决办法

在python中,如果导入了pwntools,就可以使用里面的gdb.attach(io)的命令来下断点。 但是这一次鼠鼠遇到了一个情况就是下了断点,但是仍然无法在断点处开始运行,奇奇怪怪。 这是我的攻击脚本 我们运行一下。 可以看到其实已经运行起…...

Linux入门篇-作业(jobs)调度(本质仍然是进程)

简介 之所以叫做作业调度,作业是以shell为单位的,一个shell建立的作业,不会被另外一个shell看到(包 括root),但是仍然可以看到作业对应的进程。①前台进程(front process) 运行在用户…...

vue 监听 取消监听

vue 的 watch 除了可以使用声明式的配置项以外,还可以通过命令式 this.$watch 方法。 如下是我们比较少用的命令式(想要初始只监听一次,必须命令式写法): 监听只运行一次 声明式 export default{data: {showType: fa…...

0103深度优先搜索和单点连通-无向图-数据结构和算法(Java)

文章目录1.1 走迷宫1.2 图的深度优先搜索实现1.3 算法分析及性能1. 4 单点连通性后记1.1 走迷宫 简单的迷宫,如下图1.1-1所示: 探索迷宫而不迷路,我们需要: 选择一条没有标记过的通道,在你走过的路上铺一条绳子&…...

进销存管理系统

技术:Java等摘要:进销存管理系统是为了实现企业仓库商品管理的系统化、规范化和自动化,从而提高企业管理效率而设计开发的管理信息系统。它完全取代了过去一直用人工管理的工作方式,避免了由于管理人员手工操作上的疏忽以及管理质…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...