说明:该内容衔接上一篇的内容
十八、子查询
CREATE TABLE IF NOT EXISTS film (film_id smallint(5) NOT NULL DEFAULT '0',title varchar(255) NOT NULL,description text,PRIMARY KEY (film_id));CREATE TABLE category (category_id tinyint(3) NOT NULL ,name varchar(25) NOT NULL, `last_update` timestamp,PRIMARY KEY ( category_id ));实现语句:CREATE TABLE film_category (film_id smallint(5) NOT NULL,category_id tinyint(3) NOT NULL, `last_update` timestamp);使用子查询的方式找出属于Action分类的所有电影对应的title,description
获取select * from employees对应的执行计划
二十、创建表
实现语句:
create table actor(
actor_id smallint(5) not null,
first_name varchar(45) not null,
last_name varchar(45) not null,
last_update timestamp not null default (datetime('now','localtime')),
primary key(actor_id));
二十一、批量插入数据(注意数据的类型)
insert into actor(actor_id,first_name,last_name,last_update) values (1,'PENELOPE','GUINESS','2006-02-15 12:34:33'),(2,'NICK','WAHLBERG','2006-02-15 12:34:33');
二十二、插入重复数据,忽略掉
对于表actor批量插入如下数据,如果数据已经存在,请忽略,不使用replace操作
实现语句:
insert or ignore into actor
values (3,'ED','CHASE','2006-02-15 12:34:33');
知识补充:
如果不存在则插入,如果存在则忽略
INSERT OR IGNORE INTO tablename VALUES(...);
如果不存在则插入,如果存在则替换
INSERT OR REPLACE INTO tablename VALUES(...);
这里指的存在表示的是unique属性的列值存在的情况下,unique表示键值唯一
二十四、删除数据
语法:delete from 表名
(1)无条件删除:
delete from student;
(2) 有条件删除:
delete from student where sno='001';
二十五、高级查询
(1) 简单case函数
语法:case 所计算表达式
when 被比较的表达式或者是具体值 then 结果值
[.......n]
else 比较结果均不为true的返回的表达式
end
(2)搜索case函数
语法:case
when 比较表达式 then 结果值
[.....n]
else 比较结果均不为true的返回的表达式
end
(3)子查询
如果一个SELECT语句嵌套在另一个SELECT、INSERT、UPDATE或DELETE语句中,则称为子查询或内层查询;而包含子查询的语句称为主查询。
子查询通常用于满足下列需求 :
把一个查询分解成-系列的逻辑步骤;
提供一个列表作为WHERE子句和IN、EXISTS、 ANY、ALL的目标对象;
提供由外层查询中每-条记录驱动的查询。
子查询通常有几种形式:
WHERE列名[NOT] IN (子查询);
WHERE列名比较运算符(子查询);
WHERE EXISTS(子查询)。