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

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序&#xff0c;无论是测试应用程序、搜寻漏洞还是收集情报&#xff0c;它们都能提升工作流程。 FoxyProxy 代理管理工具&#xff0c;此扩展简化了使用代理&#xff08;如 Burp…...