#数据库SQL实战#【Day8】

--------------------------------------------------
学习用,欢迎讨论。
--------------------------------------------------
查看详细题目的方法:
复制以下题目内容;
Ctrl+F查找刚刚复制的题目即可。
--------------------------------------------------
题目29:使用join查询方式找出没有分类的电影id以及名称
select f.film_id, f.title from film as f
left join film_category as fc on f.film_id = fc.film_id
where fc.category_id is NULL
题目要求使用join的方法,那么直接的思路就是通过left join连接film表和film_category表。没有分类的电影对应category_id字段为空。
当然由于编译器的问题,使用其他方法也能通过测试。如果不要求使用join方法,还有很多选择,比如子查询、except等等。下面是子查询的一种方法:
select film_id, title
from film
where film_id not in
(
    select f.film_id from film as f
    inner join film_category as fc on f.film_id = fc.film_id
    inner join category as c on fc.category_id = c.category_id
)
--------------------------------------------------
题目30:使用子查询的方式找出属于Action分类的所有电影对应的title,description
select title, description
from film
where film_id in
(
    select fc.film_id from film_category as fc
    inner join category as c on fc.category_id = c.category_id
    where c.name = 'Action'
)
直接在film表中查找要求的内容,再通过film_id进行限制,并通过子查询给出范围。
当然上面的语句除了使用子查询,还使用了join方法。下面的语句则完全使用了子查询:
select title, description from film
where film_id in
(
    select film_id from film_category
    where category_id in
    (
        select category_id from category
        where name = 'Action'
    )
)
--------------------------------------------------
题目31:获取select
explain select * from employees
关于关键字“explain”参见:http://www.runoob.com/sqlite/sqlite-explain.html
--------------------------------------------------
题目32:将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分
select ( last_name || ' ' || first_name ) as Name from employees
SQLite的连接符号为“||”
--------------------------------------------------
题目33:创建一个actor表,包含如下列信息
create table actor(
    actor_id     smallint(5) primary key                         not null,
    first_name   varchar(45)                                     not null,
    last_name    varchar(45)                                     not null,
    last_update  timestamp default (datetime('now','localtime')) not null
)
首先,关于主键的定义,可以使用如上方法,也能在最后定义。其次,本题的重点在于通过datetime('now','location')获取系统默认时间。
--------------------------------------------------
题目34:批量插入数据
insert into actor values
(1, 'PENELOPE', 'GUINESS', '2006-02-15 12:34:33' ),
(2, 'NICK', 'WAHLBERG', '2006-02-15 12:34:33' )
--------------------------------------------------
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务