解法練習
案例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 ‘分隔符’]
--分組后連接
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/113114.html
標籤:MySQL
