数据库基础
MySQL的安装和配置
- 尽量不要下载最新版,安装时可能没有开发者版本
官方安装链接 - 安装后配置MySQL的root用户密码,我的密码是123456
若安装时忘记root密码,可在安装程序中删除注册表,再重新安装配置 - 添加环境变量,要写成Mysql\bin\的形式
若不知道MySQl装在哪里,可以Win+R输入services.msc,在服务中找到MySQL,右键找到根目录 - 启动MySQL 一般开机自启,也可以在cmd输入net start/stop mysql80
使用管理员模式启动cmd - 连接数据库 mysql -u root -p
关系数据库基础
基本定义
-
域:一组具有相同数据类型的值的集合,如整数,实数,性别
-
笛卡儿积:所有域的所有取值的组合
D1{a,b} D2{c,d}
D1*D2={(a,c),(a,d),(b,c),(b,d)} -
元组:笛卡儿积中每一个元素称作一个元组(Tuple),如(a,c)
-
分量:元组中每一个值称作一个分量
-
基数:笛卡尔积中的元素数量,如例中基数为2*2=4
关系
- 关系的表示
属性1 | 属性2 | 属性3 |
---|---|---|
1 | a | b |
2 | c | d |
3 | e | f |
- 表的每行对应一个元组,表的每列对应一个属性属性的取值范围叫做域
- n目/度关系必须有n个属性
码
- 候选码:关系中某一属性的值能唯一地标识一个元组,称为候选码,可以有一个或多个
- 全码:极端情况下,关系中所有属性都为这个关系的候选码,称为全码
- 主码:若一个关系有多个候选码,则选定其中一个为主码,主码只有一个!
- 主属性:候选码的诸属性
- 非主属性
三类关系
- 基本关系(基本表) 实际存在的表
- 查询表 查询结果的表
- 视图表 导出的表,是虚表
关系模式
是对关系的描述
定义关系模式
形式:R(U,D,DOM,F)
R:关系名
U:组成关系的属性名的集合
D:属性U中属性来自的域
DOM:属性向域的映像集合
F:属性间数据依赖关系
- 关系模式和关系:关系模式是静态的,稳定的 ,关系是动态的,随时间不断变化的
- 关系可以看作关系模式在某一时刻的状态或内容
基本关系操作
- 注意,基本关系运算只有五种:并(U)、差、(—)笛卡尔积(X)、投影、选择
- 其它运算即交、连接和除,均可通过5种基本的运算来表达
关系完整性
- 实体完整性:若属性A是基本关系R的主属性,则属性A不能取空值
教材上没有补充:不能取空,也不能相同,也不能随意更改 - 参照完整性:若属性或属性组F是基本关系R的外码它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的值必须为空值(F的每个属性值均为空值)或等于S中某个元组的主码值
- 用户自定义完整性
- 外码:外码:设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码
基本关系R称为参照关系
基本关系S称为被参照关系 - 关系R和S不一定是不同关系
- S和K必须定义在同一个域上
- 外码不一定要与对应主码同名
专门的关系运算 /p10
- 选择:在关系R中选择满足条件的诸元组选出行
σf®={t|t∈R∩F(t)=‘true’}
其中,f为选择条件,R为目标表
如σSage<20(Student)查询学生表(Student)中年龄(Sage)小于20的学生的所有信息(元组) - 投影:从关系R中选出若干属性列组成新关系选出列
πA®={T[A]|t∈R}
其中,A为R的属性列,R为目标表
如πSnane,Sdepet(Student)查询学生的姓名和所在系
可以去重,显示不重复的分量 - 连接:从两个关系的笛卡儿积中选取属性将间满足一定关系的元组
其中A和B分别为R和S上度数相等且可比的属性组
连接的结果是满足条件的属性组
主要分为两种:
A | B | C |
---|---|---|
a1 | b1 | 5 |
a1 | b2 | 6 |
a2 | b3 | 8 |
a2 | b4 | 12 |
B | E |
---|---|
b1 | 3 |
b2 | 7 |
b3 | 10 |
b3 | 2 |
b5 | 2 |
1.等值链接R⊳⊲S A,B属性值相同
A=B
A | R.B | C | S.B | E |
---|---|---|---|---|
a1 | b1 | 5 | b1 | 3 |
a1 | b2 | 6 | b2 | 7 |
a2 | b3 | 8 | b3 | 10 |
a2 | b3 | 8 | b3 | 2 |
2.自然连接R⊳⊲S 等值连接的特殊情况,A=B属性相同,很常用连接时去除重复属性
A | B | C | E |
---|---|---|---|
a1 | b1 | 5 | 3 |
a1 | b2 | 6 | 7 |
a2 | b3 | 8 | 10 |
a2 | b3 | 8 | 2 |
数据库基础
https://fireworks258.github.io/2024/05/08/数据库基础/