SQL期末复习

1.在被引用表中没有与外键中的引用列列表匹配的主键或候选键。解释
我的情况是由于在引用表中设置外键时,引用的列在被引用表中没有设置唯一性。外键通过将列加入另一个表中的唯一键来工作,该唯一键必须定义为某种形式的唯一索引,无论时主键还是其它唯一索引。

2.使用exists谓词时不要引入新的表,比如下面这道题:

-国家 (国名, 首都名, 面积)(首都名为外键,它所引用的是城市表的主键—城市名) 
-城市 (城市名,首都名,人口) (‘首都名’字段为外键,它所引用的本表的主键—城市名。说
明:若一个城市是首都,则城市名、首都名字段内容相同,都是该城市名。)
-邻国(国名,邻国)(记录国与国之间相邻的关系。国名、邻国字段构成联合主键,二者都引
用国家表的国名字段。)

下面是我的表结构:
table 国家
在这里插入图片描述
table 邻国
在这里插入图片描述
求没有邻国的国名(代码如下):

select g1.国名
from 国家 g1
where not exists(
select * from 邻国 where
g1.国名=邻国.国名 or g1.国名=邻国.邻国
)

这段代码返回的是“日本”。
如果我们在not exists那个括号里面又写了一个国家表,那么我们就会返回一个空值,比如:

select 国家.国名
from 国家
where not exists(
select * from 国家,邻国 where
国家.国名=邻国.国名
)

3.查找与德国所有邻国都接壤的国家,类似这样问所有、至少的,关系代数可以用division来实现,也就是除运算

4.order by默认是按升序来排列的。

5.where子句里面不能有聚合子句(count,avg,sum,min,max这些)

往表中插入新列:

alter table tableName add columnName varchar(30)

修改列的类型:

alter table tableName alter column columnName newType

修改列的名称

exec sp_rename 'tableName.column1','column2'(把表名为tableName的column1列名修改为column2)

删除列

alter table tableName drop column columnName

6-18
1.除运算
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值