A. 在sql语言的SELECT语句中,对投影操作进行说明的是哪个子句
SELECT
B. 怎样使用SQL语句实现选择、投影和连接等关系运算
SQL语句中select对应投影运算,where语句对应选择运算,from后面的表对应连接运算,其中
from a, b表示笛卡尔集
from a join b on a.A=b.A对应自然连接
C. 2个表的笛卡尔积怎么用sql语句表示
第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小
SELECT * FROM table1 CROSS JOIN table2
select a.*,b.* from table1 a ,table2 b
D. SQL三张表连接笛卡尔积是多少
table1(2条数据)
结论: 最终得到的数量为table1 join table2后的交集在×table3的数量
2x2=4
E. 问一道SQL语言的题目
1.写一个视图,列出每个国家人口最多的城市的人口数量,字段列表为(国名,人口)
create view v_max_population
as
select 国家.国名,max(城市.人口) from 国家
inner join 城市 on 国家.首都名=城市.首都名
group by 国家.国名
思路:
这里要使用 inner join ,内联结,否则结果虽似正确,但某些情况下就可能出错。按 国名 进行分组,再用max取出最大值。另外,这数据库的建模本身就不符合3NF,之间的外键联系居然是首都名,这样不仅造成冗余,也不方便修改。
2.在国家表中增加一列:城市数量(int)
alter table 国家 add 城市数量 int
3.在国家表新增的城市数量字段中,填写表中每个国家的城市数量
update 国家 N set N.城市数量=
(
select count(城市.城市名) from 城市 C
where N.首都名=C.首都名
)
思路:子查询,从外边的国家N表中传数据进去里边的查询使用,从而得出该国家城市数量
4.列出每个国家中人口数最少的城市名称和人口数量
select 城市.城市名,min(城市.人口) from 城市
inner join 国家 on 国家.首都名=城市.首都名
group by 国家.国名
思路:同1。inner join是进行笛卡尔积的运算,也就是说,将两张表合为一张。
如合成后的新表为:
国名,首都名,面积,城市名,首都名,人口
F. sql 有关笛卡尔积的问题
我测试建了几个表,你自己对照改成你得表名列名就行了
create table student
(
sid int identity primary key,
name nvarchar(50)
)
insert into student
select 'aaa' union
select 'bbb' union
select 'ccc'
go
create table F
(
fid int identity primary key,
fname nvarchar(50)
)
go
insert into F
select '数学' union
select '语文' union
select '英语'
go
create table Score
(
cid int identity primary key,
sid int,
fid int,
score int
)
go
insert into score
select 1,1,60 union
select 1,2,70 union
select 1,3,80 union
select 2,1,90
go
select * from student
select * from f
select * from score
go
select s.sid,f.fid,s.name,fname
from student s
cross join score c
cross join f
where
not exists
(
select cid from score where s.sid=score.sid and f.fid=score.fid
)
group by s.sid,s.name,fname,f.fid
order by sid
G. 若有关系R (A,B,c,D)和S(C,D,E),则与表达式π3,4,7(σ4<5 (R×S))等价的SQL语句是什么
若有关系R (A,B,C,D)和S(C,D,E),则与表达式π3,4,7(σ4<5 (R×S))等价的SQL语句是SELECT R.C,R.D,S.EFROM R, S WHERER.D<S.C。
两个集合X和Y的笛卡尔积,表示为X×Y,是指第一个对象是X的成员,而第二个对象是Y的所有可能有序对的其中一个成员。假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。等价的SQL语句是SELECT*FROM R, S。
σ4<5是限制关系代数,用对关系的运算来表达查询。等价的SQL语句是R.D<S.C。
π3,4,7是获取查询表里的对应的数据。等价的SQL语句是R.C,R.D,S.E。
(7)投影笛卡尔积对应的sql题目扩展阅读:
关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的,所以按照运算符的不同,主要将关系代数分为传统的集合运算和专门的关系运算两类。
笛卡尔积RxS是一个(m+n)目关系,前n列是关系R的属性,后n列是关系S的属性。每个元组的前n个属性是关系R的一个元组,后m个属性是关系S的一个元组。若关系R有p个元组,关系S有q个元组,关系RxS有pxq个元组,且每个元组的属性为(m+n)。
H. SQL的笛卡尔积问题,我现在需要从这3张表中取出这些数据,但出现重复,求正确语句
消除笛卡尔乘积最根本的原因在于唯一ID,就像学号,一个学生就只有一个学号,学号就是这个学生的唯一标识码。使用左连接,当左边的ID和右边ID都是唯一时,就不会产生笛卡尔现象。 Selectwms_process_doc.CODE,wms_process_doc.COMPANY_ID,wms_process_doc.DESCRIPTION,wms_process_doc.CREATED_TIME,wms_process_doc.STORAGE_DATE,wms_processplan.CODE, wms_processplan.NAME, wms_processplan.PACKAGE_UNIT_ID, wms_process_doc.EXPIRE_DATE, wms_process_doc.PRODUCE_DATE, wms_process_doc.PROCESS_QUANTITY, wms_processplan_detail.QUANTITY_BU, wms_process_doc.LOCATION_CODE,wms_process_doc.BILL_TYPE_ID,wms_process_doc.PICKED_QUANTITY FROM wms_process_doc left join wms_processplan on wms_process_doc.XX = s_processplan.XX left join wms_processplan_detail ON s_processplan.XX = wms_processplan_detail .XX
I. SQL数据库常用命令及语法举例
下面是一些常用的SQL语句,虽然很基础,可是却很值得收藏,对于初学者非常实用