#数据库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')获取系统默认时间。
key word: create table [http://www.runoob.com/sqlite/sqlite-create-table.html], datetime [http://www.runoob.com/sqlite/sqlite-date-time.html].
--------------------------------------------------
题目34:批量插入数据
insert into actor values (1, 'PENELOPE', 'GUINESS', '2006-02-15 12:34:33' ), (2, 'NICK', 'WAHLBERG', '2006-02-15 12:34:33' )
key word: insert [http://www.runoob.com/sqlite/sqlite-insert.html].
--------------------------------------------------