没有过早,也没有太晚,与你遇见自然是恰逢其时。

2021-05-16
宜 窗边看风景
忌 买错礼物
内卷,是一个人默无声息的悲哀。
--伊维勒

之前说过会分享关于软件测试的笔记及在我工作中遇到的很多问题。所以打算开出一个专门的软件测试专栏,之后这里的内容会不断填充。
今天要分享的是数据库的相关内容。

01
数据库介绍
数据库就是一个以某种有组织的方式存储的数据集合。简单理解就是将数据库想象成一个文件柜。此文件柜是一个存放数据的物理位置,不管数据是什么以及如何组织的。
我们一直都在使用数据库,比如当你从自己的电子邮件地址簿里查找名字时,你就在使用数据库的查找功能。如果你在某个完整网站进行搜索,也是在使用数据库,登录网站时还需要数据库验证自己的账户跟密码。即使是在自动取款机上使用ATM卡,也是要利用数据库进行PIN码验证及余额检查。
02
数据库种类
主流数据库:
微软sql server 2008 R2,access
瑞典mysql
美国oracle 10g 11g 12c
小型数据库 access
中型数据库mysql,sql sever
大型数据库 负载级别sysbase<oracle<db2 安全性高 昂贵
03
数据库安装
数据库安装可分为数据库服务器及数据库客户端。
Oracle 11g 相当于服务器
PLSQL Developer 相当于客户端
一般情况下,测试人员只需要用到客户端,所以只需要安装PLSQL Developer就即可。
在工作中,我一般当用到的数据库为mysql,客户端我会用sql yog(所用内存较小,比较方便),但大多数情况下,Navicat用的比较多,因为这个软件支持的数据库种类比较多,比如sql sever 2008,mysql,oracle等。
(sqlyog、navicat等有需要的可后台回复关键字)
01
数据库使用
数据库对象:表、视图、索引、用户、角色、表空间、存储过程、包......
一:创建Oracle数据库对象(DDL:Data Definition Language)
ddl:数据库定义语句
create 创建
alter 修改
drop 删除
truncate 删除
1、表的创建、修改与删除
表是存储用户数据的基本结果。建立一个表结构的基本任务是对组成表的字段进行定义,指出该表由哪些字段组成,字段值的数据类型及对字段的约束。
******表的创建******
创建表结构的格式:
create table 表名(
列名1 数据类型 ,
列名2 数据类型 ,
列名3 数据类型 ,
列名4 数据类型 ,
列名5 数据类型 ,
...
列名N 数据类型
);
create table 表名(
列名1 数据类型 [primary key],
列名2 数据类型 [unique],
列名3 数据类型 [not null | null],
列名4 数据类型 check(条件),
列名5 数据类型 [references 表名(列名)]
...
列名N 数据类型 [default 默认值] [各种约束]
);
列名命名规则:字母、数字、下划线(_)组成,不要以数字开头
数据类型:在Oracle中有很多数据类型,我们需要掌握三种:字符串、数字、日期
数字:number 可以表示整数,也可以表示小数 number(5,2) 一个数为5位数的有效数,2位小数 -999.99~999.99 numbe(5) -99999~99999
日期:date
字符串:char、varchar2,在Oracle中,字符串用单引号引起来,用双引号引起来是别名
char是定长,如char(12),存储内容的最大长度是12个字节,若实际存储内容只有6个字节,该列仍然占用12个字节 char(10) '小明'
varchar2是可变长,如varchar2(12),存储内容的最大长度是12个字节,若实际存储内容只有6个字节,该列仍然占用6个字节
字节:字节是由二进制代码组成,二进制代码就是0和1组成,8个二进制位组成1个字节,即1B = 8b
字符:是由字节经过特定的编码方式组成,编码就相当于一个翻译官,不同的翻译官所掌握的语言也不一样,UTF-8是掌握了8国语言的翻译官,即UTF-8是国际通用字符集数据库服务器可以使用不同的翻译官(即使用不同的字符集)若数据库使用GBK或GB2312做为翻译官,那么1个中文字符占2个字节若数据库使用UTF-8做为翻译官,那么1个中文字符占3个字节建议最保守的做法是:1个中文字符占3个字节对于英文字符来说,一个字符占用1个字节。
主键(primary key):相当于身份证号码,是唯一的,通过身份证号码只能找到一个人,即通过主键列只能找到一行数据,在创建表时,通常要有主键列,主键属于表对象,所以主键有一个名字,若没给主键指定名字,oracle会自动分配一个唯一的名字,在一个表中只能有一个主键对象
约束:就是限制
唯一约束(unique):值不能重复,但是可以为null。属于表对象(跟列一样),必须要有名字,若没有指定名字,则Oracle随即分配一个唯一的名字
非空约束(not null):值不能为空,一个列默认是可以为空
主键(primary key):相当于身份证号码,包含非空约束和唯一约束,也是属于表对象,在设计一张表示,需要有主键列
检查约束(check):检查值是否满足某个条件,属于表对象,必须要有名字
外键(references):也属于表对象,必须要有名字
默认值(default):当没有给列指定值的时候,则取默认值;在创建表时,若没有给列指定默认值,那么该列的默认值是空(即null)
创建一个简单的表
create table t_student(
id number,
name varchar2(50),
sex char(12),
birthday date
);
create table student_tmp(
id number,
name varchar2(50),
sex char(12),
birthday date
);
以下两个表有约束关系:
create table t_class(
classid number primary key, ---- 主键
classname varchar2(100)
);
--sysdate:获取系统当前时间,格式是:年月日时分秒
create table t_user(
t_id number primary key, ---- 主键
t_sex varchar2(20) check(t_sex = '男' or t_sex = '女'), ----- 检查
t_name varchar2(50) not null, --- 非空
t_cardid varchar2(20) unique, --- 唯一
t_birthday date default sysdate, ---- 默认值
classid number references t_class(classid) ----- 外键
);
-------- 查看表结构 --------
在 command window(命令窗口)下输入:
desc 表名;
商品售货系统设计案例
现有一个商品的数据、记录客户及其购物情况,由下三张表组成
商品goods(商品号goodsid,商品名goodsname,单价untiprice,商品类别category,供应商provider)
客户customer(客户号customerid,姓名name,住址address,电邮email,性别sex,身份证cardid)
购买purchase(客户号customerid,商品号goodsid,购买数量nums)
1、每个表格要建立主键或外键,客户的姓名不能为空值;单价必须大于0,购买数量必须在1到30之间;
电邮不能重复;客户的性别必须是男或女,默认是男。

******扩展知识:表的修改(A)
--------修改表:增加列 --------
alter table 表名
add(字段名1 数据类型 [not null | null],字段名2 数据类型 [not null | null]);
如果要新增多个列,则要用逗号将各列定义分开。
例:向t_student表中增加一个性别和住址字段
alter table t_student
add(score number,addr varchar2(50));
alter table t_student
add classid number references t_class(classid);
--------修改列:修改数据类型、约束等等
alter table 表名
modify(列名 数据类型 [default 默认值] [not null | null]);
如果要修改多个列,则要用逗号将各列定义分开。
例:修改t_student的name字段类型为varchar2(50),且默认值为"习大大"。
alter table t_student
modify name varchar2(50) default '习大大' not null;
****** 扩展知识:表的修改(A)
--------删除列--------
alter table 表名
drop column 列名;
例:
alter table t_student
drop column score;
alter table t_student
drop column addr;
******表的删除*******
删除表结构:drop table 表名
例:删除student_tmp2表
drop table student_tmp2;
delete,truncate,drop的区别:

***********************************
以上。
文/闪电
编辑/南瓜
图源/干货资源分享姬
界世的你当不
只作你的肩膀
无


无畏的太阳
干货|攻略|推荐|资源|教程
空·