关系数据结构定义及基本操作

关系数据模型由三部分组成,分为关系数据结构、关系操作、关系完整性约束。

一、关系数据结构

1、基本概念定义

域是一组具有相同数据类型的值的集合

关系

关系是多种域的笛卡尔积的子集,关系的每一行对应一个元组,每一列对应一个域。由于域可以相同,为了加以区分,每一列成为属性。n目关系有n个属性。

笛卡尔积

所谓笛卡尔积其实就是一个全排列,所有元组各种方式的组合。

主码

若一个关系有若干个候选码,则选择一个为主码,主码只能有一个。

候选码

若关系中的某一属性组的值能唯一地表示一个元组,而其子集不能,则称该属性组为候选码。

主属性

候选码中的属性均成为主属性。

非主属性

不包含在任何候选码中的属性成为非主属性。

全码

关系模式的所有属性都是这个关系模式的候选码,成为全码。

关系的基本类型

基本关系(基本表)、查询表、视图表

基本表

基本表是实际存在的表,它是实际存储数据的逻辑表示。

查询表

查询表是查询结果对应的表。

视图表

视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

根据上面的定义,如果有下表:
工号 | 姓名 | 住址 | 年龄 | 职位

假设工号、姓名和职位都可以唯一标识一个实体,说明都是候选码,那三者也应该都是主属性,三者根据实体完整性规则不可以取空值,余下是非主属性(还是说选定了工号作为主码以后,工号是主属性,其余是非主属性,工号不可以取空值)

2、基本关系的性质

(1)列是同质的,既每一列中的分量为同一类型的数据,来自同一个域。
(2)不同的列可出自同一个域,称其中的每列为一个属性,不同的属性的要给予不同的属性名。
(3)列的顺序无所谓,即列的次序可以任意交换。
(4)任意两个元组不能完全相同。
(5)行的顺序无所谓,即行的次序可以任意交换。
(6)分量必须取原子值,即每一个分量都必须是不可分的数据库。

二、关系的操作

关系的基本操作就是“增删改查”,即包括查询、插入、删除、修改。
关系操作的对象和结果都是集合。函数返回值的类型为集合,在某些情况下要调用操作函数返回值时需要注意转换类型。
下面的举例是在mysql+php环境中执行。

1、 创建库和表

Mysql创建数据库和表使用create命令。

CREATE DATABASE 数据库名;
create table 表名(
   Sno INT UNSIGNED AUTO_INCREMENT,
   Sname VARCHAR(100) NOT NULL,
   Sdept VARCHAR(40) NOT NULL,
   PRIMARY KEY ( Sno )
);
  • 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
  • AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
  • PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。也可以在定义列的时候加上primary key;。

创建数据表

2、查询操作

MySQL 数据库使用SQL SELECT语句来查询数据。

select column_name,column_name from runoob_tbl;
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

where子句

  • 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。
SELECT * from tb1 WHERE Sname='庞先生'and Sage>'18';
  • WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。
  • 你可以使用 AND 或者 OR 指定一个或多个条件。

查询操作分有单表查询和多表查询,具体文章可参考:
https://blog.csdn.net/weixin_39589033/article/details/104233889 基础查询

3、插入操作

MySQL 表中使用 INSERT INTO SQL语句来插入数据。

insert into tb1 (Sname,Ssex,Sdapt)values ('庞先生','男','计算机系');
  • 含有自增字段的列不需要设置数据,它会自动添加。但是在无初始值时需要先插入初始值。
4、更改操作
  1. 如果我们需要修改或更新 MySQL 中表的数据,我们可以使用 SQL UPDATE 命令来操作。
 UPDATE tbl SET Sdapt='C++' WHERE Sname='庞先生';
  • 可以同时更新一个或多个字段。
  • 可以在 WHERE 子句中指定任何条件。不使用将会更新全部数据。
  • 可以在一个单独表中同时更新数据。
  1. 当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。
ALTER TABLE tbl ADD Sno int(10);//在tb1表中增添int类型的Sno字段;
ALTER TABLE tbl  DROP Sno;//使用了 ALTER 命令及 DROP 子句来删除以上创建表的 Sno 字段;
5、删除操作

使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录。

DELETE FROM tbl WHERE Sno=3;
  • 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
  • 你可以在 WHERE 子句中指定任何条件
  • 可以在单个表中一次性删除记录。

三、数据类型

数据类型含义
char(n)长度为n的字符串
VARCHAR(n)最大长度为n的可变长度的字符串
INT(n)整数-2147483648 到 2147483647 常规
SMALLINT(n)小整数 -32768 到 32767 常规
BIGINT(n)大整数-9223372036854775808 到 9223372036854775807 常规
FLOAT(n)带有浮动小数点的小数字。
DOUBLE(n)带有浮动小数点的大数字。
DATE()日期。格式:YYYY-MM-DD

四、表的操作

1、模式的定义

定义模式实际上是定义一个仓库空间,这个空间中可以包含基本表、视图、索引等,是关系数据库的逻辑体现。比如一个“S-T”模式中可以包含student表、course表、SC表等与之有关的对象。

create schema "S-T" authorization <管理员名>;//创建"S-T"模式
create table "S-T".student(
Sname char(40),
Sno int(10)
);//创建student表,它属于S-T模式

create table "S-T".Course(
Cname char(40),
Cno int(10)
);//创建course表,它属于S-T模式
2、创建基本表
create table student(
        id int,
        name varchar(32),
        gender varchar(2),
        class  varchar(8)
);
3、查看表
 desc tabName student;//查看表结构
 show tables student;//查看当前数据库中所有表
 show create table tabName;//查看当前数据库表建表语句
 show table status student;//查看表的相关信息
4、修改基本表

(1)修改表名

 rename table student to user;(可以通过DESC查询是否修改成功)

或者

alter table student rename to user;

(2)增加字段

alter table student add score varchar(32);

在表的第一个位置增加字段:

alter table student add score varchar(32) first;

在表的指定字段之后增加字段:

alter table student add score varchar(32) after name;

(3)修改字段
修改字段的数据类型:

 alter table student MODIFY score int(32);

修改字段的名字:

 alter table student CHANGE score Score varchar(32);

同时修改字段的名字和属性

  alter table student CHANGE score Score int(32);

修改字段的顺序:

  alter table student MODIFY 属性名1 数据类型 FIRST|AFTER 属性名2;
   alter table student MODIFY score varchar(32) FIRST name varchar(40);

(4)删除字段

alter table student DROP score;

(5)删除表

drop table student;
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何具体存储。例如,数组的连续存储,链表的动态分配节点,树和图的邻接矩阵或邻接表表示等。 基本操作:针对每种数据结构定义了一系列基本的操作,包括但不限于插入、删除、查找、更新、遍历等,并分析这些操作的时间复杂度和空间复杂度。 算法: 算法设计:研究如何将解决问题的步骤形式化为一系列指令,使得计算机可以执行以求解问题。 算法特性:包括输入、输出、有穷性、确定性和可行性。即一个有效的算法必须能在有限步骤内结束,并且对于给定的输入产生唯一的确定输出。 算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法,分支限界法等。 算法分析:通过数学方法分析算法的时间复杂度(运行时间随数据规模增长的速度)和空间复杂度(所需内存大小)来评估其效率。 学习算法与数据结构不仅有助于理解程序的内部工作原理,更能帮助开发人员编写出高效、稳定和易于维护的软件系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值