目录
1. 为什么学习数据库
- 90%以上的软件都需要操作数据,⽐如游戏、社交、新闻、商城、财务等,这些软件都在不停的展示、存储数据, 它们的数据都存储在数据库,数据库是软件的基础
- 测试⼯程师在测试软件的过程中,不仅需要在界⾯上操作,还需要检查数据库中的数据是否正确。从⽽在软件出问 题时,测出更深层的问题。 ⽐如测试注册登录功能,在输⼊了注册信息后,提示注册成功,但是使⽤刚才注册的信息登录不成功。这时需要检查数据库中是否保存了正确的注册信息,如果数据库中没有保存数据,那么使⽤刚才注册的账号肯定登录不了,这样就能定位问题:注册时,没有把数据存储起来
2. 数据库
数据库是指⻓期存储在计算机内、有组织的数据集合。简⽽⾔之,数据库就是⼀个存储数据的地⽅。表是数据库中存储数据的基本单位,数据按照分类存储到不同的表中,能够⾮常⾼效的查询其中的数据
3. RDBMS
Relational Database Management System
关系型数据库系统
关系型数据库的主要产品:
- oracle:在以前的⼤型项⽬中使⽤,银⾏,电信等项⽬
- mysql:web时代使⽤最⼴泛的关系型数据库
- ms sql server:在微软的项⽬中使⽤
- sqlite:轻量级数据库,主要应⽤在移动平台
关系型数据库核心元素:
- 数据⾏(⼀条记录)
- 数据列(字段)
- 数据表(数据⾏的集合)
- 数据库(数据表的集合,⼀个数据库中能够有 n 多个数据表)
4. SQL
Structured Query Language
结构化查询语⾔
在数据库中进⾏操作的语⾔,称为sql,结构化查询语⾔,当前关系型数据库都⽀持使⽤sql语⾔进⾏操作,也就是说可以 通过 sql 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库
- sql语⾔主要分为:
DQL:数据查询语⾔,⽤于对数据进⾏查询,如select
DML:数据操作语⾔,对数据进⾏增加、修改、删除,如insert、udpate、delete
TPL:事务处理语⾔,对事务进⾏处理,包括begin transaction、commit、rollback
DCL:数据控制语⾔,进⾏授权与权限回收,如grant、revoke
DDL:数据定义语⾔,进⾏数据库、表的管理等,如create、drop
CCL:指针控制语⾔,通过控制指针完成表的操作,如declare cursor
- 对于测试⼯程师来讲,重点是数据的查询,需要熟练编写DQL,其它语⾔如TPL、DCL、CCL了解即可
- SQL 是⼀⻔特殊的语⾔,专⻔⽤来操作关系数据库
- 不区分⼤⼩写
5. MySQL
MySQL是⼀个关系型数据库管理系统,由瑞典MySQL AB公司开发,后来被Sun公司收购,Sun公司后来⼜被 Oracle公司收购,⽬前属于Oracle旗下产品
常⽤数据类型 :
整数: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'
约束:
主键(primary key):物理上存储的顺序
⾮空(not null):此字段不允许填写空值
惟⼀(unique):此字段的值不允许重复
默认值(default):当不填写此值时会使⽤默认值,如果填写时以填写为准
外键(foreign key):维护两个表之间的关联关系
6. 数据表操作
- 创建表
create table 表名(
字段名 类型 约束,
字段名 类型 约束,
...
)
- 删除表
格式⼀:drop table 表名
格式⼆:drop table if exists 表名
7. 数据操作-增删改查
-
简单查询
select * from 表名
- 添加数据
添加⼀⾏数据:
insert into 表名 values(...) # 主键列是⾃动增⻓,插⼊时需要占位,通常使⽤0或者 default 或者 null 来占位
insert into 表名(字段1,...) values(值1,...)
添加多⾏数据:
insert into 表名 values(...),(...)...
insert into 表名(列1,...) values(值1,...),(值1,...)...
- 修改
update 表名
set 列1=值1,列2=值2...
where 条件
- 删除
delete from 表名 where 条件
truncate table 表名(删除表的所有数据,保留表结构)
Truncate和Delete、Drop的区别:
1、Delete删除数据时,即使删除所有数据,其中的⾃增⻓字段不会从1开始
2、Truncate删除数据时,其中的⾃增⻓字段恢复从1开始
3、Drop是删除表,所有数据和表结构都删掉
总结:
在速度上,drop > truncate > delete
如果想删除部分数据⽤delete,注意带上where⼦句
如果想删除表,⽤drop
如果想保留表⽽将所有数据删除,⾃增⻓字段恢复从1开始,⽤truncate