返回顶部
首页 > 资讯 > 数据库 >软件测试基础篇——MySQL
  • 766
分享到

软件测试基础篇——MySQL

mysql数据库 2023-09-03 14:09:50 766人浏览 泡泡鱼
摘要

Mysql 1、数据库技术概述 数据库database:存放和管理各种数据的仓库,操作的对象主要是【数据data】,科学的组织和存储数据,高效的获取和处理数据SQL:结构化查询语言,专为**关系型数据

Mysql

1、数据库技术概述

  1. 数据库database:存放和管理各种数据的仓库,操作的对象主要是【数据data】,科学的组织和存储数据,高效的获取和处理数据
  2. SQL:结构化查询语言,专为**关系型数据库而建立的操作语言,用户在使用SQL语句时,只需要发出“做什么”**的命令,具体“怎么做”是不用参与的。

​ 解释:关系型数据库:指的是这一类数据库,对于数据的存储和管理方式:都是以【表】的形式来组织的,关系:表

​ 比如:MySQL,Oracle,SQL Server系统的数据库——>关系型数据库——>都是以【表】的形式来存储和管理数据

  1. mysql数据库特征
    1. 体积小:消耗资源较少
    2. 速度快:处理数据的速度较快
    3. 成本低:开源免费,技术成本投入比较便宜
    4. 可移植性:又被称为跨平台性,可以在多个操作系统中进行使用

2、Mysql数据库的安装与配置

  1. MySQL安装:参考安装文档
  2. 验证:MySQL数据库安装完毕后,可以借助于自带的【命令行工具】,进行操作
  3. MySQL数据库的卸载:控制面板——>卸载程序——>找到MySQL组件(两个)——>右键选择卸载
  4. MySQL数据库的连接操作:
    1. 自带的【命令行工具】进行连接使用
    2. 连接MySQL数据库的工具:HeiDiSQL

3、MySQL数据库的创建与删除

  1. 创建数据库的语法

creat database 数据库名;

​ 例:创建一个testdb01的数据库

​ create database testdb01;

  1. 查看现有的数据库

show databases;

  1. 删除数据库语法:

​ drop database 数据库名字;

  1. MySQL注释:解释说明作用,不参与执行

​ 单行注释:- - 单行注释的内容

​ 多行注释:

4、MySQL数据库表的操作

image-20230812174108599

  1. 创建表语法:

create table 表名(

​ 列名1 数据类型,

​ 列名2 数据类型,

​ 列名3 数据类型,

​ …

​ 列名n 数据类型

​ );

注意:最后一个列不需要加逗号

  1. MySQL支持的数据类型:

    1. 数值型

      整数类型:tinyint:微整型 smallint:小整型 int:整型,MySQL默认 bigint:大整型

      小数类型:又被称为“浮点型”,decimal(总位数,小数位),MySQL默认

      ​ 例:价格 decimal(5,2) 999.99 float(总位数,小数位) double(总位数,小数位)

    2. 日期时间类型

      date 年月日yyyy–mm–dd

      time 时间hh:mm:ss

      year 年份yyyy

      datetime 日期时间,MySQL默认

    3. 字符串类型

      char(长度):定长字符串类型,如果传递的数据值长度未达到指定长度,系统会用空格给占用,不会做释放

      ​ 例:name char(10)——>tom:3个字符,还有7个字符长度空间未利用,系统直接给空格占用

      varchar(长度):变长字符串类型,如果传递的数据值长度未达到指定长度,系统直接释放,不会占用

      ​ 例:name varchar(10)——>tom:3个字符,剩下7个字符长度空间,直接释放

  2. 创建表的操作:

    1. 每一张表的创建,一定找好它所属的数据库

    2. 切换数据库语法:use 数据库名字;

      经过切换之后,就来到了指定的数据库下进行操作

    3. 表创建:创建一个学生信息表(学号 字符串15,姓名 字符串20,年龄 整数,入学年份 year)

    练习:a.创建一个学校的数据库:schooldb

    ​ b.切换到学校的数据库,进行以下列表的创建

    ​ b.1创建student表(sno 字符串类型15,sname 字符串10,sage 微整型,入学时间 日期时间类型)

    ​ b.2创建选课表(学号 字符串类型15,课程号 字符串类型5,成绩 整型)

    ​ b.3创建教师表(教师编号 字符串10,教师姓名 字符串类型10,专业 字符串类型8,薪资 小数类型8,2,入职年份year)

    image-20230717161926055

  3. 删除表语法:

​ drop table 表名1,表名2…;

  1. 修改表结构:alter table 系列语句

    1. 添加

      alter table 表名 add 列名 数据类型;

    2. 删除列

      alter table 表名 drop 列名;

    3. 修改列的数据类型

      alter table 表名 modify 列名 新的数据类型;

    4. 修改列名

      alter table 表名 change 旧列名 新列名 数据类型(新的数据类型);

  2. 显示表结构:desc 表名;

  3. 数据库常见的专业名词

关系:表 例:一个关系——>一张表

关系名:表名

​ 表中的行:元组,记录 例:表中有3个元组——>3行数据/3条记录

​ 表中的列:属性,字段 例:表中有3个字段——>3个属性/3个列

​ 表中的列名:属性名,字段名

​ 表中的值:属性值,字段值

image-20230812174039936


回顾

SQL:结构化查询语言

库的操作:

​ 创建:create database 数据库名字;

​ 查看:show databases;

​ 删除:drop database 数据库名字;

​ 切换:use 数据库名字;

表的操作:

​ 创建:create table 表名(

​ 列名1 数据类型,

​ …

​ 列名n 数据类型

​ );

​ 删除:drop table 表名;

​ 修改:alter table 表名; 系列语句

​ 添加:add 列名 数据类型;

​ 删除列 drop 列名;

​ 修改列的数据类型 modify 列名 新的数据类型;

​ 修改列名 change 旧列名 新列名 新的数据类型;

​ 显示表结构:desc 表名;

5、表中约束的使用

约束:(给一张表添加)限制,要求,规则……

  1. 为了保证数据库表中数据的完整性(指的是存储在数据库表中的数据是准确的和可靠的),就引入了约束的应用。

  2. 关系的完整性约束

    1. 为了实现表结构以及表中数据的完整性,约束可以从三个角度来考虑(约束的分类):实体完整性约束,域完整性约束,参照完整性约束。

    2. 实体完整性约束:

      • 思想:保证表中数据的唯一性,至少不会出现重复的数据

      • 提供的两个约束:主键约束,唯一约束

      • 主键约束 primary key 最多有一个

        ①思想:唯一,不重复,不为空

        ②创建表的同时关联主键约束

        格式一:

        create table 表名(

        列名1 数据类型 primary key,

        列名2 数据类型

        );

        格式二:

        ​ create table 表名(

        ​ 列名1 数据类型,

        ​ 列名2 数据类型,

        ​ constraint 主键约束的名字 primary key(列名1)

        ​ );

        备注:主键约束的名字:如果需求给了,我们直接照搬使用;如果没给名字,名字自定义:PK_列名

        constraint:约束

        格式三:

        ​ create table 表名(

        ​ 列名1 数据类型,

        ​ 列名2 数据类型,

        ​ primary key(列名1)

        ​ );

        ③针对已经存在的表关联主键约束

        格式一:alter table 表名 add primary key(列名);

        格式二:alter table 表名 add constraint 主键约束的名字 primary key(列名);

        格式三:alter table 表名 modify 列名 数据类型 primary key;

        ④删除主键约束

        格式:alter table 表名 drop primary key;

      • 联合主键

        ①思想:本质上还属于主键约束,只不过primary key变成修饰两个列的操作,把这两个列,看成是一个整体,共同遵守主键约束的特性:唯一,不重复,不为空

        ②创建表的同时关联联合主键

        格式二:

        ​ create table 表名(

        ​ 列名1 数据类型,

        ​ 列名2 数据类型,

        ​ constraint 主键约束的名字 primary key(列名1,列名2)

        ​ );

        格式三:

        ​ create table 表名(

        ​ 列名1 数据类型,

        ​ 列名2 数据类型,

        ​ primary key(列名1,列名2)

        ​ );

        ③针对已经存在的表关联联合主键

        格式一:alter table 表名 add primary key(列名1,列名2);

        格式二:alter table 表名 add constraint 主键约束的名字 primary key(列名1,列名2);

        注意:一个表中,不管是单列的主键约束,还是联合主键,有且只能有一个(它俩是互斥的)

        练习:

        ​ a.创建选课表(学号,姓名,课程号,课程名,课时,其中学号和课程号设置为联合主键,主键名为PK_NO)

        ​ b.创建考勤表(学号,出勤时间,上课时长,其中学号和出勤时间设置为联合主键)

        ​ c.针对已经存在的任意两张表,选择任意两列,添加联合主键

        ​ d.删除任意两张表中的联合主键

        image-20230718114153965

        • 唯一约束 unique

          ①思想:保证数据的唯一性,不允许有重复的值,但是可以有空值;一个表中可以有多个唯一约束;如果不给唯一约束起名字,默认和列名保持一致

          ②创建表的同时关联唯一约束

          ​ 格式一:

          ​ create table 表名(

          ​ 列名1 数据类型 unique,

          ​ 列名2 数据类型 unique,

          ​ 列名3 数据类型

          ​ );

          ​ 格式二:

          ​ create table 表名(

          ​ 列名1 数据类型,

          ​ 列名2 数据类型,

          ​ 列名3 数据类型,

          ​ constraint 唯一约束的名字 unique(列名1),

          ​ constraint 唯一约束的名字02 unique(列名2)

          ​ );

          ​ 备注:唯一约束的名字:如果需求给了,我们直接照搬使用;如果没给可以自定义:UN_列名

          ③针对已经存在的表关联唯一约束

          ​ 格式:alter table 表名 add unique(列名);

          ④删除唯一约束

          ​ 格式:alter table 表名 drop index 唯一约束的名字;

          练习:

          ​ a.创建一个电影表(电影编号 主键约束,电影片名 唯一约束,时长,类别 唯一约束)
          b.创建一个商品表(商品编号 主键约束:PK_编号,商品名称 唯一约束:UN_名称,价格)
          c.针对已经存在的表,任意选择两个找出合适的列,添加唯一约束
          ​ d.删除任意两张表的唯一约束

          image-20230718150258388

    3. 域完整性约束

      思想:保证表中不会输入无效的值,提供了两个约束:默认约束,非空约束

      1. 默认约束 default

        ①思想:表中的列如果设置有默认约束,那么该列不进行填充数据时,就会把默认值直接补上;一个表中可以有多个默认约束

        ②创建表的同时关联默认约束

        ​ create table 表名(

        ​ 列名1 数据类型 default 默认值,

        ​ 列名2 数据类型 default 默认值,

        ​ 列名3 数据类型

        ​ );

        备注:如果默认的值是数字,就直接写数据;是字符串或日期时间,需要加上引号(单双引号都可)

        ③针对已经存在的表关联默认约束

        ​ 格式:alter table 表名 modify 列名 数据类型 default 默认值;

        ④删除默认约束

        ​ 格式:alter table 表名 modify 列名 数据类型;

      练习:

      ​ a.创建一张表tempStudent,包括sno,sname,sdept,sage四 列,为sno添加主键、sname唯一、sdept默认”软件测试” , sage非空约束

      ​ b.找到任意一张表,给任意一个列,添加默认约束

      ​ c.删除tempStudent表的sdept默认约束

      image-20230718160109661

      1. 非空约束 not null

        思想:不能有空的情况;一个表中可以有多个非空约束

        ①创建表的同时关联非空约束

        ​ create table 表名(

        ​ 列名1 数据类型 not null,

        ​ 列名2 数据类型 not null,

        ​ 列名3 数据类型

        ​ );

        ②针对已经存在的表关联非空约束

        ​ 格式:alter table 表名 modify 列名 数据类型 not null;

        ③删除非空约束

        ​ 格式:alter table 表名 modify 列名 数据类型;

        练习:

        ​ a.创建一个订单表(订单编号 主键约束,订单名称 非空约束,手机号 唯一约束,收货地址 默认是河南)

        ​ b.针对已有的表,找到其中一个列,设置为非空约束

        ​ c.删除任意一个表中的非空约束


回顾

主键约束:primary key:唯一,不重复,不为空——>最多只能有一个

唯一约束:unique:不允许有重复的值,可以有空值

默认约束:default:默认值会进行填充

非空约束:not null:不能有空值


  1. 参照完整性约束:外键约束 foreign key

​ ①思想:针对两张表来进行的操作,他会把其中的一张表看成是【主表】,另外一张表看成是【从表】,从表参照主表;主表与从表之间建立参照关系,实质上是通过两个表中公有的列来完成的:通过从表中的列,参照引用主表中的列,建立起联系;列名可以不一致,但是列的数据类型和内容保持一致;外键约束是建立在从表的列中;主表中被参照引用的列,必须是主键约束或唯一约束;

​ 主表与从表一旦建立起外键约束,对从表的限制:从表如果想要进行数据的插入操作,首先得“询问主表的意见”,主表有关联的数据,才能允许从表做插入的操作;

​ ==对主表的限制:主表如果想要删除数据,需要“询问从表的意见”,主表数据被从表正在参照引用,那么该数据主表是无法删除的;==从表中的外键约束也可以有多个:一个从表可以参照引用多个主表,或者,一个主表也可以被多个从表参照引用

加强表与表之间的联系

②创建表的同时关联外键约束

​ create table 主表表名(

​ 列名1 数据类型 primary key,

​ 列名2 数据类型

​ );

​ create table 从表表名(

​ 列名1 数据类型,

​ 列名2 数据类型,

​ 列名3 数据类型,

​ constraint 外键约束的名字 foreign key(从表列名1) references 主表表名(主表列名1),

​ constraint 外键约束 的名字2 foreign key(从表列名2) references 主表表名2(主表列名2)

​ );

​ 备注:外键约束的名字,如果需求给了,我们就照搬使用;如果没有给,自定义名字:FK_列名

​ 练习:

​ a.创建工人表(工人编号 主键约束,姓名,年龄)

​ b.创建薪资表(工人编号,部门,薪资,其中工人编号参照引用工人表的工人编号)

​ c.创建一张表,让该表参照引用已经建立好的任意两张表,建立外键约束关系

image-20230719111418479

针对已经存在的表来关联外键约束

​ 格式:alter table 从表表名 add constraint 外键约束的名字 foreign key(从表列名) references 主表(主表列名);

④删除外键约束

​ 格式:alter table 表名 drop foreign key 外键约束的名字;

​ 练习:

​ a.找到其中任意一张表,设置外键约束,关联另外一张主表

​ b.删除其中两张表的外键约束


6、插入数据

  1. SQL语言分类:

​ DDL语言:数据定义语言:create语句,alter语句,drop语句——实现对库或表的创建,修改,删除操作

​ DML语言:数据操作/操纵语言:insert语句,delete语句,update语句——实现对表中数据的增删改操作

​ DQL语言:数据查询语言:select语句——实现对表中数据的查询操作

  1. insert语句:实现对表中数据的插入操作(增加数据):值和列名一定是匹配的(一一对应)

​ 格式一:insert into 表名(列名1,列名2,列名3…) values(值1,值2,值3…);

​ 格式二:insert into 表名 values(值1,值2,值3…);

​ 格式三:insert into 表名 values(值1,值2,值3…),(值1,值2,值3…),(值1,值2,值3…);

​ 备注:如果插入的数据是:字符串或日期时间,需要加引号;数字直接写

7、删除数据

delete语句:删除表中的数据

  1. 删除表中所有的数据:delete from 表名;
  2. 有条件的删除:delete from 表名 where 条件;

​ 条件中可以用到的比较运算符:

​ = 例:性别=‘男’

​ > 例:年龄>18

​ < 例:年龄<30

​ >= 例:成绩>=80

​ <= 例:成绩<=50

​ != <> 不等于 例:籍贯 !=‘北京’

多条件的删除操作:

①多个条件同时满足:and——>where 条件1 and 条件2 and 条件3…;

②多个条件只需要满足其中任意一个:or——>where 条件1 or 条件2 or 条件3….;

8、更新数据

update语句:实现表中数据修改操作

  1. 格式一:

​ update 表名 set 列名=新值;

  1. 格式二:

​ update 表名 set 列名1=新值,列名2=新值,列名3=新值…;

  1. 格式三:有条件的更新

​ update 表名 set 列名1=值,列名2=值 where 条件;

update student set sage=18 where ssex=‘女’ or sage>20;

场景:在更新数据的过程中,也可以进行计算的操作


回顾
  1. 外键约束 foreign key:实现两个表之间的参照关系:从表:插入数据,主表:删除数据——>加强表与表之间的联系
  2. 数据的增删改

​ 增:insert into 表名 values(值1,值2…);

​ 删:delete from 表名 where 条件;

​ 改:update 表名 set 列名=值 where 条件;


9、查询的基本操作

  1. 查询select:针对数据库表中的数据按照特定的组合,条件,次序进行检索查看的操作
  2. 查询的基本语法:

select 列名1,列名2,列名3… from 表名;

select字句:写的是要查询的列,告诉要“查什么”

from字句:写的是查询用到的表,告诉“从哪查

查看表中所有的数据:select * from 表名; *任意,所有

  1. 别名查询:针对查询结果的标题,进行另起名字的操作

​ 格式一:

​ select 列名1 别名1,列名2 别名2,列名3 别名3… from 表名;

​ 格式二:as关键字

​ select 列名1 as 别名,列名 as 别名… from 表名;

  1. 去重复查询:针对列中重复的数据,去重后进行查看显示(将查询的结果去重复之后再显示)

​ 格式:select distinct 列名 from 表名;

  1. 在查询的过程中,也可以进行查询结果的计算操作

​ 格式:select 计算公式 别名 from 表名;

  1. 选择查询(条件查询):where子句

​ 格式:select 列名 from 表名 where 条件;

①比较搜索条件:比较运算符 = > < > = <= <> !=

②逻辑运算符:and or

③范围搜索条件查询

​ 1.在范围之内的数据:between 开始值 and 结束值;

​ 格式:select 列名 from 表名 where 列名 between 开始值 and 结束值;

​ 2.排除在范围之内的数据:not between 开始值 and 结束值;

​ 格式:select 列名 from 表名 where 列名 not between 开始值 and 结束值;

​ 备注:开始值和结束值,也会参与查询的过程

④列表搜索条件查询:

1.匹配列表中的数据(任意一个):in(值1,值2,值3…)

​ 格式:select 列名 from 表名 where 列名 in(值1,值2,值3…);

​ 思想:只要条件中的列,匹配到列表中任意一个值,就会有相关的查询结果(记录)

2.排除列表中的数据:not in(值1,值2,值3…)

​ 格式:select 列名 from 表名 where 列名 not in(值1,值2,值3…);

​ 思想:只要是列表中的值,都把他们排除在外

⑤模糊查询:字符串匹配查询

1.匹配和字符模板相关的数据:like ‘字符模板’

​ 格式:select 列名 from 表名 where 列名 like ‘字符模板‘;

​ 2.排除和字符模板相关的数据:not like ‘字符模板’

​ 格式:select 列名 from 表名 where 列名 not like ‘字符模板’;

​ 通配符:

​ % 任意个字符(零个或多个)

​ _ 单个字符

⑥空值查询:

1.查询记录中有为空的信息:is null

​ 格式:select 列名 from 表名 where 列名 is null;

​ 2.查询记录中不为空的信息:is not null

​ 格式:select 列名 from 表名 where 列名 is not null;

⑦聚合函数:实现对列中数据的计算操作

​ sum(列名) 求和

​ avg(列名) 求平均值

​ max(列名) 最大值

​ min(列名) 求最小值

​ count(*) 统计元组的个数(行数)

​ count(列名) 统计该列中值的总个数

​ 备注:除了count(*)之外,其他聚合函数操作时,均忽略空值

​ 格式:select 聚合函数 from 表名 where 条件;

⑧行数限定查询:limit

​ 格式一:select 列名 from 表名 limit 行数; ——–>默认从第一行开始查看

​ 格式二:select 列名 from 表名 limit 开始位置下标,行数;

⑨分组查询:针对查询的结果,按照某个列来进行划分(分组) group by

​ 格式:select 列名,聚合函数 from 表名 group by 列名;

⑩having:针对分组后的数据,进行条件筛选的操作

备注:having的使用,必须搭配group by; having后面大部分都是聚合函数当条件,where后面不能直接写聚合函数

​ 格式:select 列名,聚合函数 from 表名 group by 列名 having 分组的条件;

⑪.排序:order by :针对查询的结果,按照某个列进行排序:升序asc 默认,降序desc

​ 格式:select 列名 from 表名 order by 列名 asc|desc;

备注:聚合函数(distinct 列名):对列中的值,进行去重复后,再来进行计算操作

​ 例:sum(distinct grade):先对成绩去重,然后再来进行求和


回顾

select 列名

from 表名

where 条件

group by 分组的列名

having 分组条件(聚合函数当条件)

order by 排序列名 asc|desc;

去重复:distinct

聚合函数:sum(列名) avg(列名) max(列名) min(列名) count(*):行的总数量 count(列名):值的总个数

行数限定:limit


10、MySQL常用的函数(了解)

  1. 字符串函数

length() 统计字符串的字节长度

char_length() 统计字符串长度

mid(字符串数据,开始的位置,截取的字符个数)

统计字符串字节长度 一个汉字占3个字节,一个字母占1个字节

  1. 数学函数

​ round():四舍五入

​ round(数字,保留小数位) 指定保留小数位的四舍五入

​ round(数字) 保留整数

​ least(值1,值2,值3…) 求最小值

​ greatest(值1,值2,值3…) 求最大值

  1. 日期时间函数

now() 获取当前日期时间

current_date() 获取当前日期

current_time() 获取当前时间

to_days() 计算总天数(从0开始计算)

dayofyear() 计算该年已过的天数

week() 统计日期所在的周数

  1. 控制函数

​ if(布尔表达式,参数一,参数二) true:执行参数一,false:执行参数二

​ if(null,参数一,参数二) 直接执行参数二

​ ifnull(参数一,参数二) 参数一有值,直接查询,如果为null,就查参数二

11、多表查询操作

  1. 概述:在实际操作过程中,我们所需要的数据,可能会来源于多张表,这个时候就需要进行多表连接,实现查询的操作
  2. 多表查询的实现方式:表连接
  3. 表连接查询的分类:内连接查询,外连接查询
  4. 内连接:思想:只有表与表之间匹配到的数据,才会被查询出来

​ ①格式一:通过where实现连接

​ select 表名1.列名1,表名1.列名2,表名2.列名1,表名3.列名1,表名4.列名1…

​ from 表名1,表名2,表名3,表名4,…

​ where 表名1.列名=表名2.列名 and 表名2.列名=表名3.列名 and 表名3.列名=表名4.列名… and 其他条件;

​ ②格式二:通过**(inner) join on**实现连接 inner可以省略 inner join:内连接

​ select 表名.列名

​ from 表名1 inner join 表名2

​ on 表名1.列名=表名2.列名 inner join 表名3

​ on 表名2.列名=表名3.列名 inner join 表名4

​ on 表名3.列名=表名4.列名…

​ where 其他的条件;

​ 备注:表与表之间建立连接的列:列名可以不一致,但是列的数据类型和内容保持一致;

​ 可以利用别名对表名进行重命名做替代的操作:表明 别名;

​ 如果查询的列只在其中的一张表出现,那么可以省略表名,直接写列名;如果查询的列,多张表都有,一定要加上表名:表名.列名;条件中的列名前方应该也加上表名:表名.列名,但是同样遵守以上原则

​ ③多表连接查询做题思想:

​ (1)确定表:根据题意描述,确定会用到的表

​ (2)确定表与表之间能够建立连接的列

​ (3)确定要查询的列

​ (4)确定是否有额外的条件,如果有,就关联其他的条件


回顾

多表查询:表连接:

内连接:思想:只有表与表之间匹配到的数据,才会被查询出来

select 表名.列名

from 表名1,表名2,表名3…

where 表名1.列=表名2.列 and 表名2.列=表名3.列 and 其他条件;

[inner] join in

select 表名.列名

from 表名1 inner join 表名2

on 表名1.列名=表名2.列名 inner join 表名3

on 表明2.列名=表名3.列名…

where 其他条件;


备注:针对inner join on连接方式:可以分为:等值连接查询和非等值连接查询,判定方式:就看条件中除了等号以外,是否还有其他的比较运算符

  1. 外连接:思想:至少会返回一个表的所有内容
    1. 左外连接:会返回左表的所有内容;左表的数据在右表中匹配不到,默认位置就为空null
    2. 区分左右表:先写的表是:左表;后写的表是:右表

select 表名.列名

from 表名1 left [outer] join 表名2

on 表名1.列名=表名2.列名

​ 3.右外连接:会返回右表的所有内容;右表的数据在左表中匹配不到,默认位置就为空null

select 表名.列名

from 表名1 right [outer] join 表名2

on 表名1.列名=表名2.列名

12、子查询

  1. 子查询:指的是查询语句中,嵌套查询语句,一般出现在where后面,表示条件的
  2. 子查询的应用场景:

​ ①看似题上给了条件,但是条件的结果并没有明说,需要给查询出来

​ ②where后面不能直接写聚合函数,那么就可以通过子查询把聚合函数的结果给查出来,拿上结果值做操作即可

  1. 子查询语法:

格式一:通过in匹配子查询的结果 嵌套子查询

​ select 列名 from 表名 where 列名 in(select 列名 from 表名 where 条件);

​ 备注:假如子查询语句前面使用not in,相当于把子查询的结果排除在外

格式二:通过“=”匹配子查询的结果 相关(单值)子查询

​ select 列名 from 表名 where 列名=(select 列名 from 表名 where 条件);

​ 注意:①==外查询的条件要什么,子查询就查什么,一定做好匹配,比如:条件要学号,子查询就只能查学号;②“=”匹配的子查询结果只能有一个==,而in匹配子查询结果是可以有任意个,很多时候我们无法把控子查询结果的个数,就可以优先考虑in

格式三:通过比较运算符匹配子查询的结果

​ select 列名 from 表名 where 列名 比较运算符(select 列名 from 表名 where 条件);

  1. insert和select结合使用
    1. 思想:把查询的结果,插入到指定的表中
    2. 格式:insert into 表名 select语句:
  2. update和select结合使用

​ 格式:update 表名 set 列名=值 where 列名 in(select 列名 from 表名 where 条件);

​ 备注:参考select语句中嵌套select语句的套路,都是放在where后面,表示条件

  1. delete和select结合使用

​ 格式:delete from 表名 where 列名 in(select 列名 from 表名 where 条件);

​ 备注:也是放在where后面,表示条件


回顾

子查询:嵌套查询语句

select语句+子查询

delete语句+子查询

update语句+子查询

——>都是放在where后面,表示条件

insert语句+子查询


13、视图的概述

  1. 定义:视图基于某个查询结果的虚表:视图(虚表)——>对实表进行查询;视图的结构,取决于对实表的查询过程和结果;对表进行增删改查的操作,放在视图中同样成立,把表名换成视图的名字。
  2. 注意:视图<——>增删改insert,update,delete操作<——>实表(基表),互为影响
  3. 作用:方便用户实现对数据的操作

14、视图(view)的操作

  1. 创建视图:

​ create view 视图的名字 as select语句;

  1. 修改视图结构

    1. 视图插入数据:参考insert语法

      ​ insert into 视图名字 values(值1,值2,值3…);

    2. 修改结构

      ​ alter view 视图的名字 as select语句;

    3. 修改视图数据:参考update语法

      ​ update 视图的名字 set 列名=值 where 条件;

  2. 删除视图

    1. 删除视图的数据:参考delete语句

      delete from 视图的名字 where 条件;

    2. 删除视图

      drop view 视图的名字;

15、索引概述

  1. 描述:索引是针对表中的列来进行设置的;一个表中索引的设置没有个数限制;索引能够快速定位获取表中的数据;设置索引的列会自动给插入的数据进行排序;索引技术服务于查询操作,提高查询效率

​ 例:如果把一张表看成是一本书,索引就相当于书本的目录

  1. 索引的作用(优点)

①加快数据的检索(查看,查询)——>最根本的作用

​ ②保证数据的唯一性——>唯一索引

​ ③实现表与表之间的参照完整性——>加强表与表之间的联系

​ ④减少group by分组,order by排序的时间

  1. 索引的缺点

​ ①创建索引需要花费时间和消耗数据空间

​ ②索引的存在会减慢数据的增删改的速度

​ ③对小表(数据少)建立索引不会产生优化的效果

​ ④表中数据量越大,索引的优势就越明显

  1. 优先考虑建立索引的列:
    1. 定义有主键或外键约束的列
    2. 频繁查询的列
    3. 连接中频繁使用的列——>表连接的列,子查询的列
    4. 分组或排序的列

16、索引(index)的操作

  1. 创建普通索引:

​ create index 索引的名字 on 表名(列名);

  1. 创建唯一索引:

​ create unique index 索引的名字 on 表名(列名);

  1. 删除索引:

​ drop index 索引的名字 on 表名;


回顾
  1. 视图——>基于某个实表的查询结果——>虚表

​ 创建视图:create view as select语句;

​ 修改视图结构:alter view 视图名字 as select语句;

​ 增删改查——>insert,delete,update,select——>视图

​ 删除视图:drop view 视图名字;

  1. 索引:作用(优点),缺点,优先考虑建立索引的列

​ create [unique] index 索引的名字 on 表名(列名);

​ drop index 索引的名字 on 表名;

来源地址:https://blog.csdn.net/qq_44985444/article/details/132251502

您可能感兴趣的文档:

--结束END--

本文标题: 软件测试基础篇——MySQL

本文链接: https://lsjlt.com/news/392286.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 软件测试基础篇——MySQL
    MySQL 1、数据库技术概述 数据库database:存放和管理各种数据的仓库,操作的对象主要是【数据data】,科学的组织和存储数据,高效的获取和处理数据SQL:结构化查询语言,专为**关系型数据...
    99+
    2023-09-03
    mysql 数据库
  • 软件测试面试必杀篇:【2023软件测试面试八股文宝典】
    800道软件测试面试真题,高清打印版打包带走,横扫软件测试面试高频问题,涵盖测试理论、Linux、MySQL、Web测试、接口测试、App测试、Python、Selenium、性能测试、LordRunner、计算机网络、数据结构与算法、逻辑...
    99+
    2023-08-31
    单元测试 压力测试 python
  • 软件测试面试必备的一些基础理论概念
    测试的基本概念测试是软件生存周期中十分重要的一个过程,是产品发布、提交给最终用户前的稳定化阶段。1、 测试的分类:从测试方法的角度可以分为手工测试和自动化测试。手工测试:不使用任何测试工具,根据事先设计好的...
    99+
    2024-04-02
  • 软件测试员必备基础:3分钟带你入门自动化测试!
    目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够明白自动化测试并很好落地实施的团队还不是非常多,我们接下来用通俗的方式来介绍自动化测试……...
    99+
    2023-06-05
  • Python 测试框架:建立牢不可破的软件基础
    在现代软件开发中,测试是不可或缺的一部分。Python,一种备受推崇的编程语言,提供了一系列强大的测试框架,帮助开发者构建健壮且可靠的软件。 1. 单元测试 单元测试是最基本的测试类型,用于验证单个函数或类的方法。Python 中最流行...
    99+
    2024-04-02
  • java——《面试题——基础篇》
    全文章节 Java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java—...
    99+
    2023-10-21
    java 面试题
  • Python面试题 基础篇
    最近,整理了一些python常见的面试题目,语言是一种工具,但是多角度的了解工具能帮助我们更好的工作。 从很多国内网站以及一些国外论坛翻译过来的,虽然本文标注为"原创",但是仅仅是自己日常整理的材料,文章后面会附上参考来源。 第一部分:...
    99+
    2023-01-31
    面试题 基础 Python
  • MySQL基础篇(一)
    本文主要内容为MySQL的基础语句以及正则表达式等内容。 本文操作的数据库内容存在个人github:https://github.com/YuanGao-1/blog_demo.git init_schema.sql为建表脚本 init...
    99+
    2018-12-14
    MySQL基础篇(一)
  • mysql学习笔记之基础测试
    10. 基础测试 10.1...
    99+
    2024-04-02
  • python基础测试题
    答案答案不一定正确待修改中 仅供参考 """def grammar(): return ''' 5个python数据类型:int整数型 folat浮点型 tuple元组 str字符串 list列表 set集合 dic...
    99+
    2023-01-31
    测试题 基础 python
  • 【Mysql系列】Mysql基础篇
    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,...
    99+
    2023-12-23
    mysql 数据库
  • linux基础篇06-测试常见linux命令集合六
    本篇主要接着上一篇文章继续就“测试常见linux命令集合六”进行展开讲解,主要包括“touch、vim、yum、whereis、rpm”命令。希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!29:命令touc...
    99+
    2023-06-05
  • linux基础篇01-测试常见linux命令集合一
    本篇文章主要就“测试常见linux命令集合一”进行展开讲解,主要包括“cd、ls、pwd、mkdir、mv”命令。对于非高频或者愿意深入研究的可以进行小度搜索,希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!01:命令...
    99+
    2023-06-05
  • python3--基础综合测试
    一:选择题1、python不支持的数据类型有A、charB、intC、floatD、list选择:A解释:char类型在python中不存在,它是其他编程语言的一种数据类型,比如C/C++,JAVA2、x ="foo"y...
    99+
    2023-01-30
    综合测试 基础
  • Java基础单元测试
    本篇博文目录: 1.单元测试(1) 测试Java方法(原生) 2. JUnit 5(1) JUnit 5简单使用的例子(2) JUnit5常用注解(3) JUnit5常用注解的使用(4).JUnit5内置断言 ...
    99+
    2023-08-17
    单元测试 java junit
  • 软件测试之Android单元测试
            软件测试之Android单元测试  单元测试工具   android源代...
    99+
    2022-06-06
    android单元测试 软件测试 测试 软件 Android
  • Redis必备面试题《基础篇》
    Date:2019-11-12 读前思考:   面试官会问什么样的问题?   所问的问题背后真实的套路是什么?   喜欢问Redis哪些问题?   如何顺畅回答面试问的问题?吊打面试官。   什么是Redis?   Redis相比memca...
    99+
    2015-12-04
    Redis必备面试题《基础篇》
  • 软件测试要学什么(7)软件测试常用工具
           总结了7个常见的软件测试问题,这些问题你也提过吗  1. 软件测试工程师岗位职责是什么  答:你可以去看看招聘网站上很多公司的招聘公布,都有岗位职责,看起来感觉离你自己还有一段距离。你可...
    99+
    2023-06-03
  • mysql 基准测试
    ...
    99+
    2024-04-02
  • MySQL基础篇-MySQL 命令大全
    当然是为我的第一位粉丝->怡宝 准备的一篇MySQL咯 要看进阶篇的小伙伴点着哦!!!! MySQL进阶篇 - 索引篇 1.启动MySQL,备份数据: 1.1启动MySQL服务: cmd 命令行启动...
    99+
    2023-09-17
    sql mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作