数据库基础和MySQL基础命令

1.为什么软件测试工程师还需要学习数据库以及开发方面的知识?

测试工程师的目的是找出软件的不足,并告诉开发工程师,出现问题的环境,操作步骤和输入输出数据;优秀的测试工程师,需要告诉开发团队,软件的不足,这类不足会导致什么情况,如何避免,以及如何去修改(这是为什么高级软件测试工程师比开发工程师工资高的原因)。
测试工程师在测试软件过程中,不仅仅需要在界面进行操作,还需要检查数据库中的数据是否正确,从而在软件出现问题时候,能够定位到问题原因

2.什么是数据库

Excle的数据的确很方便,但是对于企业来说就不一样了。一个公司里面可能有成千上万的Excel表格,还在不同的电脑上,而他们的员工和客户需要实时看到企业给他们提供的所有数据,这种文件管理的方法就很麻烦,总不能每分钟都把一个新的巨大无比的Excel文件发给所有客户呀。
数据库呢,就是存储数据的地方,就像冰箱是存储食物的地方一样。正是因为有了数据库后,所有人可以直接在这个系统上查找数据和修改数据。例如你每天使用余额宝查看自己的账户收益,就是从后台数据库读取数据后给你的。
数据库的英文名称叫DB(Database),那么数据库里面有什么东东呢?
其实,数据库通常包含一个或多个表组成。如果你用过Excel,就会知道Excel是一张一张的二维表。每个表都是由列和行组成的,其中每一列都用名字来标识出来。同样的,数据库里存放的也是一张一张的表,只不过各个表之间是有联系的。所以,简单来说:
数据库=多张表+各表之间的关系
其实数据库是逻辑上的概念,它是一堆互相关联的数据,放在物理实体上,是一堆写在磁盘上的文件,文件中有数据。这些最基础的数据组成了表(table)。
常用的数据库软件,例如MySQL、Oracle、SQL Server等都是实现上面理论的数据库。各个数据库软件的使用差别大同小异,但是因为MySQL是开源的,成为各大公司使用的主流,面试也主要以MySQL为主。
数据库是按照数据的结构来组织,存储,和管理数据的仓库,简而言之,就是存放数据的仓库

3.数据库和SQL是什么关系?

结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ “S-Q-L”),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
数据库里面放着数据,而SQL是用来操作数据库里数据的语言(工具)。
例如有一碗米饭(碗就是mysql,里面放的米是数据),你要吃碗里的米饭,拿什么吃?拿筷子(sql)。用筷子(sql)操作碗里(mysql)的米饭(数据)

4.数据库有哪些?

Oracle是最挣钱的数据库,出自甲骨文公司,市场占有率非常高,功能非常强大,被一些大型企业,电信,银行,证券公司所使用

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。MySQL目前最流行的开源数据库,被甲骨文公司所占用,威胁着老大Oracle的地位,开源,免费,支持多平台,易用

SQLServer,微软开发的数据库,仅支持Windows操作系统,号称是windows上最好用的数据库。数据库的天下不仅仅是MySQL和Oracle的,SQLServer也正在慢慢崛起,微软网罗了不少数据库的专家,推出了不少重磅功能。

MongoDB,最好用的文档型数据库,是NOSQL类型数据库的领导者之一,也是当前最成功的NoSQL类型数据库,数据存储格式采用JSON形式,非常灵活。

Redis,最好的内存级数据库,查询效率极高,并且在Redis 3.0之后,支持多种数据类型,String,Set,List,Hash等类型,开始支持集群,弥补了自身短板。是目前做缓存最流行的数据库

Neo4J,最好的图形化数据库,流行话较低,但是图形化数据库的绝对领导者。

SQLite,最流行的嵌入式数据库,占领手机行业的绝对领导者地位,Android和IOS两大手机系统,都内嵌了SQLite数据库,SQLite是一个完整的关系型数据库,支持标准SQL,支持事务操作,程序包非常小,是嵌入式设备的最佳选择。

5.表中字段基本数据类型

MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型
1、一个汉字占多少长度与编码有关:

UTF-8:一个汉字=3个字节

GBK:一个汉字=2个字节

2、varchar(n) 表示 n 个字符,无论汉字和英文,Mysql 都能存入 n 个字符,仅是实际字节长度有所区别

5.1数据类型

  • 可以通过查看帮助文档查阅所有支持的数据类型
  • 使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间
  • 常用数据类型如下:
    • 整数:int,bit
    • 小数:decimal
    • 字符串:varchar,char
    • 日期时间: date, time, datetime
    • 枚举类型(enum)
  • 特别说明的类型如下:
    • decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位
    • char表示固定长度的字符串,如char(3),如果填充’ab’时会补一个空格为’ab ’
    • varchar表示可变长度的字符串,如varchar(3),填充’ab’时就会存储’ab’
    • 字符串text表示存储大文本,当字符大于4000时推荐使用
    • 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径

5.2数值类型(常用)

5.1数字

在这里插入图片描述

5.2字符串

在这里插入图片描述

5.3时间日期类型

在这里插入图片描述

6.字段属性

  • 主键primary key:物理上存储的顺序
  • 非空not null:此字段不允许填写空值
  • 惟一unique:此字段的值不允许重复
  • 默认default:当不填写此值时会使用默认值,如果填写时以填写为准
  • 字段描述comment:字段描述是用来描述字段的,能在查看数据表创建语句的时候显示出来(不会再select结果中显示出来),也可在查看表的详细信息时显示出来,可以帮助我们了解某一个字段的意义
  • 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
  • 说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加、修改、删除、查询)时,都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证呢?答:可以在逻辑层进行控制

7.数据库语句操作

7.1登录MySQL

在这里插入图片描述
登录成功
在这里插入图片描述

7.2创建数据库

create database 数据库名 charset=utf8;

7.3删除数据库

drop database mydb1;
在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失

7.4 查看所有数据库

show databases;

7.5选择数据库

user mydb1
注意:所有的数据库名,表名,表字段都是区分大小写的。所以你在使用SQL命令时需要输入正确的名称。

7.6查看数据库创建细节

show create database mydb1

7.8创建一个使用gbk字符集的数据库

create database mydb2 character set gbk

8.表结构语句操作

8.1 创建一个数据表

创建MySQL数据表需要以下信息:
表名
表字段名
定义每个表字段

创建表

create table students(
id int unsigned primary key auto_increment not null,
name varchar(20) not null,
age int unsigned,
high decimal(5,2),
gender enum(“男性”,“女性”,“中性”,“保密”) default “保密”,
);
decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位,例如:185.88
枚举类型(enum) 例如:enum(“男性”,“女性”,“中性”,“保密”)

8.2删除表

drop table student;

8.3查看所有表

show tables

8.4查看表的创建细节

show create table student;

8.5展示表结构

desc student

8.6在原有的学生基础上添加address列

alter table student add address varchar(20)

8.7在原有的学生基础上删除address列

alter table student drop address

9.定义表的约束

如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引。 您可以使用多列来定义主键,列间以逗号分隔。
UNIQUE KEY的用途:主要是用来防止数据插入的时候重复的
ENGINE 设置存储引擎,CHARSET 设置编码

10.增加数据

10.1插入数据

insert into student values(2,’李四’,19,1.95,‘男’);

11.删除数据

11.1删除单条数据

delete from student where id=1;

11.2删除所有数据

delete from student;

11.3摧毁表

truncate table student;

12修改数据

12.1设置所有人的年龄加10岁

update student set age=age+10

12.2修改zhangsan 为张三

update student set name=’张三’ where name=’zhangsan’

12.3修改王五的年龄和身高

update student set salery=100.01,birthday=’1999-10-10’ where id=3;

13.查询数据

13.1查询所有学生信息

select * from student;

13.2查询id为1的学生信息

select * from student where id=1;

13.3查询id为1的学生姓名

select name from student where id=1;

13.5 as别名

select name as 姓名 from 表名

13.6范围查询 # 条件查询between,and以及in的使用

 **<     >     =      >=     <=     !=**

select * from 表名 where age>14
select * from 表名 where age>14 and high>170.00; #年龄在14之上和身高170.00之上
select * from 表名 where age between14 and 18; #年龄在14-18之间的
select * from student where agein(14,18);#查询年龄在14-18内的

13.7模糊查询like

select * from 表名 where name like 要查询的数据

‘小%’ 以小开始的名字
‘%小%’ 有小的名字
‘_ ’ 2个字的名字
_ _’ 3个字的名字

13.8排序查询

按照数学成绩从小到大查询

select * from student order by math;

按照数学成绩从大到小查询

select * from student order by math desc;

13.9分页查询

limit是mysql的语法 select * from table limit m,n

其中m是指记录从m+1开始 ,N代表取n条记录。 select * from student limit 2,4
即取出第3条至第6条,4条记录

查询出数学成绩由高到低前两名 select * from student order by math desc limit 0,2;

13.10 分组查询

分组查询 select * from 表名group by sex;

分组查询加条件 select * from 表名 group by sex having age>18;

(1) having 条件表达式:用来分组查询后指定一些条件来输出查询结果
(2) having作用和where一样,但having只能用于group by

13.11聚合函数

count(个数):select count() from 表名;
max(最大值):select max(列名) from 表名;
min(最小值):select min(列名) from 表名;
sum(求和):select sum(列名) from 表名;
avg(平均值):select avg(平均值) from 表名;
计算平均年龄:sum(age)/count(
)

13.12内连接/外连接

内连接 inner join … on 查询两张表,设定条件,将两张表中对应的数据查询出来,不会产生笛卡尔积,不会产生临时表,性能高
select * from 表1 inner join 表2;

左外连接 left join … on
将两张表对应的数据查询出来,同时将左表自己没有关联的数据也查询出来,注意:join前面是左,后面是右
select * from 表1eft join 表2 on 表1.c_id=表2.id;

右外连接 right join on 将两张表对应的数据查询出来,同时将右表自己没有关联的所有数据查询出来
select * fr-/lom 表1 right join 表2 on 表1.c_id=表2.id;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值