数据库

本文介绍了关系型数据库的基本概念,如表、行、列、主键和外键等,并通过示例展示了如何使用SQL语句来定义表结构、添加数据及进行查询。此外,还解释了数据库事务的概念及其对于数据完整性的意义。

一、关系型数据库

关系型数据库中的数据存储在表(Table)中,表由行(row)和列(column)组成(也称为元组和属性)。一组表的定义被称为一个schema。

:每一个列都有一个名字以及一个关联的数据类型,因此由于列的数据类型限制了存储在该列的数据范围。

:表中的数据可以通过插入/删除行来进行数据的添加和删除。

:key是一个或多个列的集合,唯一地确定了表中的特定行。

主键:例如,在一个员工表中,可以使用员工的身份证号作为员工表的主键,使用“primary key”关键字创建主键数据列。该主键保证了对每个员工来说都是唯一的。主键在物理层面上只有两个用途: 1. 惟一地标识一行。 2. 作为一个可以被外键有效引用的对象。

外键:是指一个键值来自于其他表(通常来自于其他表的主键)的键,因此一个表可以通过一个外键与另一个表关联起来进行联合查询。

 

二、SQL语句

给定两个表,用主键和外键设计一下schema,使其更好地显式定义这些schema之间的关系让别人更容易理解。

HomeMenbers
nameage
陈一18
陈二19
陈三20
陈四21

 

Description
ageinterestphone
20game1111
18study2222
19book3333
21eat4444

 

1.两个表都未定义主键

HomeMenbers
{
    name CHAR(20),
    age  INTEGER(4)
};

Description
{
    age       INTEGER(4),
    interest  CHAR(20),
    phone     CHAR(20)
};

 

 

2.定义主键和外键

HomeMenbers
{
    name CHAR(20),
    age  INTEGER(4) PRIMARY KEY
};

Description
{
    age       INTEGER(4),
    interest  CHAR(20),
    phone     CHAR(20)
    FOREIGN KEY (age) REFERENCES HomeMenbers
};

 

进行了修改后,数据库就能主动承担起确保这些表之间的参照完整性。例如,不能添加一个在HomeMenbers表中不存在的人的信息到Description表中。

 

3.添加一行数据

>>INSERT INTO HomeMenbers VALUES ("陈五",22);

 

 

4.返回HomeMenbers表中所有的数据

>>SELECT * FROM HomeMenbers;

 

 

5.返回一列数据

>>SELECT name FROM HomeMenbers;

 

 

6.限制查询条件

>>SELECT name FROM HomeMenbers WHERE age > 18 AND age < 20;

>>SELECT * FROM HomeMenbers ORDER BY age DESC LIMIT 3;

 

 

三、数据库事务

  数据库中存放数据的完整性是最重要的:如果数据产生了冲突,每个基于它的应用程序都会产生故障或出错。虽然参照完整性有助于维护数据统一性,但即使数据库保持了参照完整性,仍然会发生其他形式的不一致性。一个保持数据完整性的补充机制是数据库事务

  一个事务将一组相关的数据库操作作为一个单一的单元。如果事务中的任何一个操作失败,那么整个事务就会失败,并且该事务所做的任何修改都会被回滚(rollback)。相反,如果所有的操作都成功了,那么所有的修改都会作为一个整体提交(commit)

  举个已经烂透了的例子——两个银行账户之间的转账。一个转账通常包括两个操作:从第一个账户中减少金额,然后将减少的金额添加至第二个账户中。如果从第一个账户中减少金额后,立即产生了一个错误,为了保持数据库中的资金平衡,那么这个时候我们希望系统检测到这个问题并将扣除的钱退还到原来的账户。所以,要么两个操作都成功提交,要么两个都不提交。多安全~~

 

转载于:https://www.cnblogs.com/haauleon/p/8922825.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值