sql语句实现查询

    说明:该内容衔接上一篇的内容

    十八、子查询

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 f.title,f.description
from film f
where f.film_id in(
    select fc.film_id
    from film_category fc,category c
    where fc.category_id=c.category_id
    and c.name='Action'
                            );
十九、获取执行计划
获取select * from employees对应的执行计划
  实现语句:
  explain   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表示键值唯一
二十三、更新数据
语法:update 表名  set  字段名=值;
(1)无条件更新:
 
    update sc  set  grade=grade+10;
  
(2)有条件更新:
   
    update sc  set grade=grade+10 where sno=10;
    update  sc  set  grade=grade+10 from sc   join student s on  s.sno=sc.sno where sc.name='计算机系';

二十四、删除数据

语法: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(子查询)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值