解法练习

案例1.子查询练习

字段 说明
film_id 电影id
title 电影名称
description 电影描述信息
category_id 电影分类id
name 电影分类名称
last_update 电影分类最后更新时间
film_id 电影id
category_id 电影分类id
last_update 电影id和分类id对应关系的最后更新时间

ilm表
 
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));
category表
 
CREATE TABLE category  (
category_id  tinyint(3)  NOT NULL ,
name  varchar(25) NOT NULL, `last_update` timestamp,
PRIMARY KEY ( category_id ));
film_category表
 
CREATE TABLE film_category  (
film_id  smallint(5)  NOT NULL,
category_id  tinyint(3)  NOT NULL, `last_update` timestamp);
 
使用子查询的方式找出属于Action分类的所有电影对应的title,description
 
解题命令
select title,description
from film
where film_id in(select film_id from film_category
where category_id in(select category_id from category w
where name='Action'))
--子查询解法
select f.title,f.description
from film as f inner join film_category as fc on f.film_id = fc.film_id
inner join category as c on c.category_id = fc.category_id
where c.name = 'Action';
--常规解法

名词解释补充

Explain解释

获取select * from employees对应的执行计划

explain select * from employees

连接字符串

将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分

--MySQL、SQL Server、Oracle等数据库支持CONCAT方法,
而本题所用的SQLite数据库只支持用连接符号"||"来连接字符串 --CONCAT方法:
select CONCAT(CONCAT(last_name," "),first_name) as name from employees
--或者
select CONCAT(last_name," ",first_name) as name from employees --本题中使用:
select last_name||" "||first_name as name from employees

插入数据时,已有则忽略

insert IGNORE into ‘表’
values()

创建索引

CREATE UNIQUE INDEX ... ON ... 创建唯一索引值
CREATE INDEX ... ON ... 创建普通索引值
--例
CREATE UNIQUE INDEX uniq_idx_firstname ON actor(first_name);
CREATE INDEX idx_lastname ON actor(last_name);

MYSQL中常用的强制性操作

网址:https://www.jb51.net/article/49807.htm

截取字符串

substr(字符串,起始位置,长度)
起始位置:截取的子串的起始位置(注意:字符串的第一个字符的索引是1)。值为正时从字符串开始位置 开始计数,值为负时从字符串结尾位置开始计数。
长度:截取子串的长度
--例 取first_name最后两位
select first_name from employees
order by substr(first_name,length(first_name)-1,2)
--MYSQL中的Right函数
SELECT first_name FROM employees ORDER BY RIGHT(first_name ,2);

 group_concat() 函数

group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’]
--分组后连接

最新文章

  1. passport源码研究
  2. sql 补齐字段位数
  3. css大小单位px em rem的转换和详解
  4. 携手K2 BPM,华住酒店完美实现“互联网+”转型
  5. 【转】JAVA SSH 框架介绍
  6. php7.0 redis扩展下载地址
  7. Windows二进制文件的Python扩展包
  8. Zookper
  9. MariaDB多源复制环境搭建(多主一丛)
  10. [Monkey King]
  11. 集大1513 & 1514班 软件工程第一次作业评分与点评
  12. is not eligible for getting processed by all BeanPostProcessors
  13. MATLAB GUI设计(线性卷积和循环卷积的比较--笔记)
  14. SpringCloud-day07-Feign
  15. Spark 1.x 爆内存相关问题汇总及解
  16. 实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制
  17. Linux服务器定位CPU高占用率代码位置经历
  18. vue中定义多重样式
  19. win7,8走网络打印机出现删除设备和打印机门未关闭的解决方法
  20. 铁乐学Python_day03-字符串常用操作方法

热门文章

  1. [Go] 并发imap收信
  2. postman---postman文件夹介绍以及批量执行用例
  3. 初识 RESTful API规范
  4. 常用的架包对应的maven配置
  5. alias别名
  6. tensorflow的MNIST教程
  7. web-综合题2
  8. day59_9_25中间键与登录认证
  9. Java:String,int相互转化
  10. Selenium WebDriver 中鼠标事件(全)