数据库基础

本文介绍了数据库的基础概念,如域、笛卡尔积、元组和分量,以及关系数据库的性质。通过学生表、课程表和选课表的例子展示了数据的插入、更新和删除操作。还探讨了空值NULL的处理和视图的创建,视图作为虚表提供了对数据的抽象和安全更新。
摘要由CSDN通过智能技术生成

关系数据库

一组相同数据类型的集合
例: 对于属性“性别”来说,它的域为 { ‘男’,‘女’ }

笛卡尔积

笛卡尔积可表示为一个二维表,每一行代表一个元组,每一列代表一个域

元组

笛卡尔积中每一个元素(d1, d2, d3,…,dn)称作一个n元组,简称元组

分量

元组中每一个值都是一个分量
例:(张三, 18, 20203101178)姓名、年龄、学号都是一个分量

基数

域即集合中所有可取值的个数,笛卡尔积的基数等于各集合基数的乘积

关系

D1D2…Dn 的自己称作在域 D1、D2…Dn 上的关系,记作 R(D1, D2,…,Dn)
R为关系名,n为度或目指属性的个数
例:学生信息(姓名,学号,身份证号)
学生信息即为R,n为3

在这里插入图片描述

姓名、学号、成绩三列分别为一个属性
(张三,1101, 99)为一个元组

数据库标准语言

比较常用到的三个表

  1. 学生表 (Student)
Sno(学号)SnameSsexSageSdept(专业)
20203101177药尘35CS(计科)
20203101178萧炎20CS
20203101167美杜莎21IS(信息)
20203101166萧薰儿20MA
  1. 课程表 (Course)
Cno (课程号)CnameCpno(先行课)Ccredit(学分)
1数据库54
2数学2
3信息系统14
4操作系统63
5数据结构74
6数据处理2
7PASCAL语言64
  1. 学生选课表 SC
Sno(学号)Cno(课程号)Grade
20203101177199
20203101178199
20203101167356

数据更新

插入数据

  1. 插入数据到元组
insert into 表名 (属性1,属性2...) values 值1,2,...
  1. 插入子查询结果
insert into 表名 (属性1, 属性2, ...)
select ...

例:

insert into Dept_age ( Dept, Avg_age)
select dept, AVG(Sage) 
from Student 
group by dept

修改数据

update 表名 set 字段名1 =1, 字段名2 =2, ... 
where ...

例:

  1. 所有学生的年龄加1
update Student 
set Sage = Sage + 1;
  1. 将计算机系全体学生的成绩置为0
update SC
set Grade = 0
//计算机系学生和成绩在不同的表里,要先把计算机系的学生查询到再将他们的成绩置为0
where Sno in ( select Sno from Student where Sdept = 'CS');

删除数据

delete from 表名
where ...

注:

delete 是删除表中的数据,但表结构还在
drop 表结构也会被删除

空值NULL的处理

出现空值的情况

  1. 该属性有值,但目前还不知道
  2. 该属性不该有值
  3. 由于某种原因不便填写

空值的判断

关键词:

is null 或者 is not null

空值的约束条件

  1. 属性定义中有 not null 约束条件的不能为空
  2. 加了 unique 限制的属性不能为 null
  3. 码属性不能为 null

空值的运算

  • 算术运算
    空值与另一个值(包括空值)的运算结果为空值
  • 比较运算
    空值与另一个值(包括空值)的比较结果为 unknown
  • 逻辑运算

视图

1. 特点

  • 视图是虚表,从一个或几个基本表中导出来的
  • 只存在视图的定义,不存放视图对应的数据

2. 建立视图

语句

create view <视图名>
as
select 属性1, 属性2, ...
from 表名
where ...
[with check option] // 将视图的更新限制在此视图内

例:

  1. 建立信息系学生的视图
create view IS_Student 
as
select Sno, Sname, Sage
from Student
where Sdept = 'IS';
  1. 建立信息系学生的视图,并要求修改和插入操作仍在该视图内
create view IS_Student 
as
select Sno, Sname, Sage
from Student
where Sdept = 'IS'
with check option;

基于多个表的视图
例:
建立信息系选修了1号课程的学生的视图

create view IS_S1 (Sno, Sname, Grade)
as
select Student.Sno, Student.Sname, SC.Grade
from Student, SC
where Student.Sdept = 'IS' and SC.Cno = 1 and Student.Sno = SC.Cno;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值