数据库-除

本文深入探讨了关系数据库中的除运算和投影操作,包括它们如何改变属性和元组的数量,通过具体实例展示了运算过程及结果。

投影运算的含义简单点就是:从表中选择需要的属性列。


列是属性,行是元组..
而且作投影之后可能会出现重复项,比如:
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c3
作A的投影就是a1, a2; 减少了一行
总结:
并:属性不变,元组可能增加(集合相等时不增加)
交:属性不变,元组可能减少(集合相等时不减少)
投影:属性可能减少(全投影时不减少),元组可能减少(投影后无重复项时不减少)
笛卡尔积:属性增加,元组可能增加(只有1个元组时不增加)

除运算:
R:

A
B
C
a1
b1
c2
a2
b3
c7
a3
b4
c6
a1
b2
c3
a4
b6
c6
a2
b2
c3
a1
b2
c1

S:

B
C
D
b1
c2
d1
b2
c1
d1
b2
c3
d2

R÷S

A
a1


解答如下:

在关系R中,A可以取四个值{a1,a2,a3,a4},其中:

a1的象集为:{(b1,c2),(b2,c3),(b2,c1)}就是a1 对应bc属性上的值

a2的象集为:{(b3,c7),(b2,c3)}

a3的象集为:{(b4,c6)}

a4的象集为:{(b6,c6)}

S在(B,C)上的投影为{(b1,c2),(b2,c3),(b2,c1)}。,只取BC两列

显然只有a1的象集(B,C)a1包含S在(B,C)属性组上的投影,全部包含,所以R÷S={a1}。
### MySQL 数据库基本操作教程 #### 创建数据库 通过 `CREATE DATABASE` 语句可以创建一个新的数据库。语法如下: ```sql CREATE DATABASE 数据库名; ``` 例如,要创建名为 `MyDB_one` 的数据库,可执行以下命令[^2]: ```sql CREATE DATABASE MyDB_one; ``` #### 删数据库 如果需要删已有的数据库,可以通过 `DROP DATABASE` 语句实现。语法如下: ```sql DROP DATABASE 数据库名; ``` 此操作会永久删指定的数据库及其所有内容。 #### 使用数据库 在完成数据库的创建之后,需使用 `USE` 语句来切换到目标数据库以便进一步操作。语法如下: ```sql USE 数据库名; ``` 例如,切换至刚创建的 `MyDB_one` 数据库时,应运行以下命令[^3]: ```sql USE MyDB_one; ``` #### 查看现有数据库列表 为了确认当前环境中存在的数据库,可以使用以下 SQL 语句: ```sql SHOW DATABASES; ``` --- #### 创建数据表 当选定某个数据库后,可通过 `CREATE TABLE` 来定义新表并设置其字段属性。以下是通用模板: ```sql CREATE TABLE 表名 ( 字段1 类型(长度) 属性, 字段2 类型(长度) 属性, ... ); ``` 例如,创建一张学生信息表 `students` 可能涉及以下代码片段: ```sql CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT, gender ENUM('M', 'F') ); ``` #### 删数据表 若不再需要某张表格,则利用 `DROP TABLE` 进行移。具体形式为: ```sql DROP TABLE 表格名称; ``` 比如,删 `stusys` 库里的 `student3` 表的操作方式如下所示[^4]: ```sql DROP TABLE stusys.student3; ``` #### 查询表结构 了解已有表的具体设计情况非常重要。这能够借助两个相似功能却略有差别的指令达成——即 `DESCRIBE` 或者缩写版 `DESC` 和更正式一些的 `SHOW COLUMNS FROM` 。它们均接受参数作为输入以定位特定对象。 - 方法A: DESCRIBE/DESC ```sql DESC 表格名称; -- OR -- DESCRIBE 表格名称; ``` - 方法B: SHOW COLUMNS FROM ```sql SHOW COLUMNS FROM 表格名称; ``` #### 插入记录 向新建好的表里填充初始资料需要用到 INSERT INTO 子句。下面给出了一条示范性的插入语句用于往之前提到过的 student 表增加一条新的学员档案[^1]: ```sql INSERT INTO students (name, age, gender) VALUES ('Alice', 20, 'F'); ``` #### 更新记录 修改已经存在于表内的某些项则依赖于 UPDATE ... SET 结构配合 WHERE 子条件过滤器共同作用下精准定位待编辑的目标单元格位置: ```sql UPDATE students SET age=21 WHERE name='Alice'; ``` #### 删记录 最后,在必要时候清不符合需求的数据点也是维护良好秩序的一部分工作流程之一;DELETE FROM 加上相应的筛选标准即可轻松搞定这项任务: ```sql DELETE FROM students WHERE name='Alice'; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值