解法練習 案例1.子查詢練習 欄位 說明film_id 電影idtitle 電影名稱description 電影描述信息category_id 電影分類idname 電影分類名稱last_update 電影分類最後更新時間film_id 電影idcategory_id 電影分類idlast_upda ...
解法練習
案例1.子查詢練習
欄位 說明
film_id 電影id
title 電影名稱
description 電影描述信息
category_id 電影分類id
name 電影分類名稱
last_update 電影分類最後更新時間
film_id 電影id
category_id 電影分類id
last_update 電影id和分類id對應關係的最後更新時間
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 ‘分隔符’]
--分組後連接