数据库

   之前写了数据库的创建,还有单一数据库的增、删、改、查

   这里记录子查询和联接查询


  子查询:

-- 获得到和‘Brazil’同属一个地区的所有国家
SELECT * FROM bbc WHERE region=(
SELECT region FROM bbc WHERE contryName='Brazil'
);


-- 给出人口多于Russia的国家名称
SELECT * FROM bbc WHERE population>(
SELECT population FROM bbc WHERE contryName='Russia'
);


-- 给出'India','Iran'所在地区的所有国家信息
SELECT * FROM bbc WHERE region IN(
SELECT region FROM bbc WHERE contryName='India' OR contryName='Iran'
);


-- 给出人均gdp超过'United Kingdom'(英国)的欧州国家
SELECT * FROM bbc  WHERE region='Europe' AND gdp/population>(
SELECT gdp/population FROM bbc WHERE contryName='United Kingdom'
); 


-- 给出人口比'Canada'多但少于Algeria的国家的信息
SELECT * FROM bbc WHERE population>(
SELECT population FROM bbc WHERE contryName='Canada'
) AND population<(
SELECT population FROM bbc WHERE contryName='Algeria'
);


-- 给出gdp比任何欧州国家都多的国家
SELECT * FROM bbc WHERE gdp>(
SELECT MAX(gdp) FROM bbc WHERE region='Europe'
);


-- 给出每个地区人口最大的国家
SELECT * FROM bbc WHERE population IN(
SELECT MAX(population) FROM bbc GROUP BY region 
);


-- 给出地区中所有国家的人口总数为0的地区
SELECT region FROM bbc GROUP BY region HAVING SUM(population)=0;


-- 有些国家的人口数比她的周边国家要多三倍,请列出这些国家和地区。
SELECT * FROM bbc b WHERE b.population>4*(
SELECT MAX(bc.population) FROM bbc bc WHERE b.region=bc.region AND b.contryName!=bc.contryName
);


联接查询:

-- 显示电影id=1中演员名单
SELECT a.* FROM casting c,actor a WHERE a.id=c.actorid AND c.movieid=1;


-- 显示电影'Alien'中演员名单
SELECT a.NAME FROM movie m,casting c,actor a WHERE m.id=c.movieid AND a.id=c.actorid AND m.title='Alien';


-- 显示有'Harrison Ford'参演的电影名称
SELECT m.title FROM movie m,casting c,actor a WHERE m.id=c.movieid AND a.id=c.actorid AND a.NAME='Harrison Ford';


-- 显示有'Harrison Ford'参演的电影名称,但'Harrison Ford'角色排名不是第一
SELECT m.title FROM movie m,casting c,actor a WHERE m.id=c.movieid AND a.id=c.actorid AND a.NAME='Harrison Ford' AND c.movieord!=1;


-- 显示1962年发行的电影,及该影片的主角(排名第一)
SELECT m.title,a.NAME FROM movie m,casting c,actor a WHERE m.id=c.movieid AND a.id=c.actorid AND m.yr=1962 AND c.movieord=1;


-- 显示'John Travolta'每年出演的电影数量
SELECT m.yr,COUNT(m.title) FROM movie m,casting c,actor a WHERE m.id=c.movieid AND a.id=c.actorid AND a.NAME='John Travolta' GROUP BY m.yr;


-- 列出'Julie Andrews'参演的所有电影名称以及该片的主角
SELECT m.title,a.NAME FROM movie m,casting c,actor a WHERE m.id=c.movieid AND a.id=c.actorid AND m.id IN(
SELECT c1.movieid FROM casting c1 ,actor a1 WHERE a1.id=c1.actorid AND a1.NAME='Julie Andrews'
) AND c.movieord=1;


-- 列出在10部电影中出任过主角的演员
SELECT a.NAME FROM movie m,casting c,actor a WHERE m.id=c.movieid AND a.id=c.actorid AND c.movieord=1 AND c.movieord=1 GROUP BY a.NAME HAVING COUNT(m.title)=10 ;


-- 按演员人数的多少依次列出1978的电影以及演员数。
SELECT m.title,COUNT(a.NAME) FROM movie m,casting c,actor a WHERE m.id=c.movieid AND a.id=c.actorid AND m.yr=1978 GROUP BY m.title ORDER BY COUNT(a.NAME) DESC;


-- 列出所有和'Art Garfunkel'合作过的演员
SELECT DISTINCT a.NAME FROM movie m,casting c,actor a WHERE m.id=c.movieid AND a.id=c.actorid AND m.id IN(
SELECT c1.movieid FROM casting c1,actor a1 WHERE a1.id=c1.actorid AND a1.NAME='Art Garfunkel'
) AND a.NAME!='Art Garfunkel';


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值