实习复习纲要-数据库

一.数据库四个属性CAID
C:Consistency(一致性)事务执行前和执行后必须处于一致性状态,例:用户A和用户B的前加起来一共是5000; 无论AB用户之间是如何相互转换的,事务结束后两个用户的钱加起来还是5000,这就是事务的一致性;
A:Atomicity(原子性)事务包含的所有操作要么全部成功,要么全部失败回滚;成功必须要完全应用到数据库,失败则不能对数据库产生影响;
I:Isolation(隔离性) 当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不被其他事务的操作所干扰,多个并发事务之间要相互隔离;
D:Durability(持久性)持久性是指事务的操作,一旦提交,对于数据库中数据的改变是永久性的,即使数据库发生故障也不能丢失已提交事务所完成的改变。

二.集合运算
(1)Union并,Intersection交,Difference差在这里插入图片描述
差:A-B是由属于A但是不属于B的元组组成的集合。

(2)Product笛卡尔积 x
在这里插入图片描述
当两个表格含有相同属性,比如R和S都有B属性,应该在结果中用R.B和S.B进行区分。

三.自然选择运算
(1)投影 R[]
从表中选出指定的属性值组成一个新表
CN:=CUSTOMER[cname]
取出CUSTOMER表中的cname列形成新表。
(2)选择 where
S where C
C 可以是 >, <, =, >=,<=
当满足的条件是多个时:
S where C and C1,S where C or C1,S where not C
(3)连接 join ∞
如果S和R没有任何相同属性,那么连接就和笛卡尔积一样效果。如果有相同属性,连接和交一样。
连接和交的区别在于,只有两个表属性完全相同才算交,一部分相同就是连接。在这里插入图片描述

  1. inner join
    在这里插入图片描述
    通过两个表的字段中的相同值,显示数据记录
    在这里插入图片描述
  2. left outer join
    在这里插入图片描述
    左外连接:就是把左边表的数据全部取出来,而右边表的数据有相等的,显示出来,如果没有,显示NULL
    在这里插入图片描述
  3. right outer join
    在这里插入图片描述
    右外连接:就是把右边表的数据全部取出来,而左边表的数据有相等的,显示出来,如果没有,显示NULL
    在这里插入图片描述

(4)除法÷
在这里插入图片描述
(5)例题
在这里插入图片描述
1.先找出c006买的商品:
pc6 := (ORDERS where cid = ‘c006’)[pid]
2.投影出人们的cid和买的商品pid
CP := ORDERS[cid,pid]
3.除法得到买了所有c006买的商品的顾客
CP ÷ pc6

查询所有没有通过代理商a03订购商品的顾客id
1.(ORDERS where aid = ‘a03’)
2.ORDERS[cid] - (ORDERS where aid = ‘a03’)

四.基本语句
1.Create Table
Create Table S
(
sno CHAR(5) NOT NULL UNIQUE,
sname CHAR(10) UNIQUE,
age INT,
PRIMARY KEY(sno)
);
2.Alter Table
Alter Table S Drop Column age
Alter Table S Add Address varchar(30)
新增加的属性不能为NOT NULL,因为原来的元组在这一列的值默认置为NULL。
3.Drop Table
Drop Table S

4.约束
列约束:
NOT NULL
CONSTRAINT
UNIQUE
PRIMARY KEY (=NOT NULL + UNIQUE)
CHECK
REFERENCES

表约束:
UNIQUE
PRIMARY KEY
CHECK
FOREIGN KEY REFERENCES

例:
qty属性 int类型 非空 限制名qtyck :检查qty值一定大于0
qty integer not null constraint qtyck check (qty >= 0),

dollars属性 float类型 默认值0.0 限制名dollarsck:检查dollars值一定大于0.0
dollars float default 0.0 constraint dollarsck check (dollars>=0.0),

限制名cidref:设置cid为外键连接customers
constraint cidref foreign key (cid) references customers

5.SELECT

选择两条属性:select aid, pid from orders;

选择唯一属性:select distinct pid from orders; (distinct保证返回值是unique的。distinct放在要寻找的属性:pid前面)

选择TOPn属性:select TOP 4 from student order by age (默认为升序)

6.WHERE

等于:select * from student where dept = ‘computer’
如果找NULL或NOT NULL要用IS
select * from student where dept IS NULL
在两个值之间:where age between 22 and 30

在两个选项之间:where dept IN (‘computer’,‘foreign’)

7.函数 count(), AVG(), max(),
Group by pid, 相同pid的元组会排在一起
例1:Query the total number of students
select count(*) from Student

例2: Select total number of students who select courses.
select count (distinct sno) from SC

例3: Compute the average grade of students who select ‘C3’ course
select avg(grade) from SC where cid = ‘C3’

8.Exist
exist不返回任何数据,只返回TRUE或者FALSE

9.除法Division
ORDERS[cid,aid] DIVIDEBY (AGENTS where city = ‘New York’)[aid]

写全:
select c.cid from customers c
where not exists(select * from agents a
where a.city = ‘New York’ and
not exists (select * from orders x
where x.cid = c.cid and x.aid = a.aid
));

10 INSERT, UPDATE, DELETE

添加INSERT
INSERT INTO student
VALUES (‘95020’,‘chendong’,‘male’,‘IT’,‘18’);

更改UPDATE
UPDATE SC
Set grade = grade*1.1
Where sno = ‘S4’ and cno = ‘C3’

删除DELETE
Delete from SC
Where cno = ‘C4’

五 索引INDEX

1.原理
INDEX通过B+树实现,时间复杂度logn,比按条遍历要快

2.语句
Create cluster index stuname on s(sname)
在s表的sname列建立聚簇索引,这个索引名字叫做stuname

3.聚簇索引和非聚簇索引

聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据
非聚簇索引:将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置

非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引。辅助索引叶子节点存储的不再是行的物理位置,而是主键值,辅助索引访问数据总是需要二次查找。

聚簇索引具有唯一性,由于聚簇索引是将数据跟索引结构放到一块,因此一个表仅有一个聚簇索引。
主键就是聚簇索引。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值