软件测试基础之数据库知识

关系型数据库

关系型数据库的发展历程,大致经历了理论奠基、SQL标准化、商用成型与多元化发展四个阶段:

  1. 理论奠基:数学家E.F.Codd发表了数学论文《用于大型共享数据库的关系数据模型》提出了关系模型及关系运算,为数据库理论奠定了基础。
  2. SQL标准:Codd的同事Don Chamberlin将理论转化为SQL语言,这一语言后来成为关系型数据库的标准语言。
  3. 商用成型:Larry Ellison及其团队看到了商业潜力,开发了首个商用关系型数据库Oracle。
  4. 多元化发展:IBM推出DB2数据库;Michael Stonebraker开发了Postgres并放在BSD版权下,后来演变为Postgres SQL;87年微软与Sybase合作开发了MS SQL;其他主流数据库如MySQL、Ingres和Informix等,也与Michael Stonebraker有关。

《用于大型共享数据库的关系数据模型》中对关系这一词做了具体的解释:

A relation, informally, is a table of values. Formally, a relation is a set of n-tuples. Each n-tuple is an ordered list of n values. All n-tuples in a relation have the same number of values. Each value is taken from some set or domain D1, D2, …, Dn. The values in an n-tuple are called the components of the n-tuple. The values in a component are atomic. That is, no relation value is a set, list, or table.
关系在非正式情况下是一张值的表格。正式地说,一个关系是一组n-元组。每个n-元组是n个值的有序列表。在一个关系中,所有的n-元组都有相同数量的值。每个值都取自一些集合或域D1、D2、…、Dn。n-元组中的值被称为n-元组的组成部分。n-元组中的值是原子的。也就是说,关系值不是一个集合、列表或表格。

在这篇论文中,Codd提出了以下关系的基本特征:
关系是一个二维表:关系被组织成行和列的形式,每一行代表一个记录,每一列代表一个属性。
元组(Tuple):关系中的每一行被称为一个元组,包含了一组属性值。
属性(Attribute):关系中的每一列被称为一个属性,描述了元组的某一方面。
域(Domain):属性的取值范围被称为域,确保属性值的合法性。
键(Key):关系中的某个属性或属性组合可以唯一标识一个元组,称为关系的键。

关系型数据库SQL命令
表级别操作
  • 建表:
CREATE TABLE  Stutend(
    column1 datatype,
    column2 datatype,
    ...
);
  • 删除
DROP TABLE table_name ;    -- 直接删除表,不检查是否存在DROP TABLE [IF EXISTS] table_name;`
  • 添加列
#在 employees 表中添加了一个名为 birth_date 的日期列:
ALTER TABLE employees ADD COLUMN birth_date DATE;   
  • 修改列的数据类型
# 将 employees 表中的 salary 列的数据类型修改为 DECIMAL(10,2):
ALTER TABLE employees MODIFY COLUMN salary DECIMAL(10,2);  
  • 修改列名
# 将 employees 表中的某个列的名字由 old_column_name 修改为 new_column_name
ALTER TABLE employees CHANGE COLUMN old_column_name new_column_name VARCHAR(255);
  • 删除列
# 将 employees 表中的 birth_date 列删除:
ALTER TABLE employees DROP COLUMN birth_date;
  • 修改表名
# 将表名由 employees 修改为 staff:
ALTER TABLE employees RENAME TO staff;

数据级别操作:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
DELETE FROM table_name
WHERE condition;
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column_name [ASC | DESC]]
[LIMIT number];
  • 表连接
    NNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
SELECT column1, column2, ...
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;

LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

SELECT column1, column2, ...
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;

RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

SELECT column1, column2, ...
FROM table1
RIGHT JOIN table2 ON table1.column_name = table2.column_name;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值