天天看點

牛客SQL刷題 Day-07

目錄

1、擷取select * from employees對應的執行計劃

2、将employees表的所有員工的last_name和first_name拼接起來作為Name,中間以一個空格區分

3、建立一個actor表,包含如下列資訊

4、對于表actor批量插入如下資料

5、對于表actor批量插入如下資料,如果資料已經存在,請忽略,不使用replace操作

總結

1、擷取select * from employees對應的執行計劃

答案:

explain select * from employees;
           

2、将employees表的所有員工的last_name和first_name拼接起來作為Name,中間以一個空格區分

CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,
    `birth_date` date NOT NULL,
    `first_name` varchar(14) NOT NULL,
    `last_name` varchar(16) NOT NULL,
    `gender` char(1) NOT NULL,
    `hire_date` date NOT NULL,
    PRIMARY KEY (`emp_no`)
);
           

答案:

select (last_name || ' ' || first_name) as Name
from employees
           

3、建立一個actor表,包含如下列資訊

牛客SQL刷題 Day-07

答案:

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)
);
           

4、對于表actor批量插入如下資料

CREATE TABLE IF NOT EXISTS actor (
    actor_id smallint(5) NOT NULL PRIMARY KEY,
    first_name varchar(45) NOT NULL,
    last_name varchar(45) NOT NULL,
    last_update timestamp NOT NULL DEFAULT (datetime('now','localtime'))
);
           

答案:

insert into actor values
(1,'PENELOPE','GUINESS','2006-02-15 12:34:33'),
(2,'NICK','WAHLBERG','2006-02-15 12:34:33');
           

5、對于表actor批量插入如下資料,如果資料已經存在,請忽略,不使用replace操作

CREATE TABLE IF NOT EXISTS actor (
    actor_id smallint(5) NOT NULL PRIMARY KEY,
    first_name varchar(45) NOT NULL,
    last_name varchar(45) NOT NULL,
    last_update timestamp NOT NULL DEFAULT (datetime('now','localtime'))
)
           
insert or ignore into actor
values(3,'ED','CHASE','2006-02-15 12:34:33');
           

總結

老實說,最開始剛看到這些題目時,是一臉懵逼的,需要一點點查詢答案,後面發現,這些題目都是SQLite庫。是以今天的題目是由以下幾點知識點組成:

(1)SQLite Explain(解釋)

在 SQLite 語句之前,可以使用 "EXPLAIN" 關鍵字或 "EXPLAIN QUERY PLAN" 短語,用于描述表的細節。

如果省略了 EXPLAIN 關鍵字或短語,任何的修改都會引起 SQLite 語句的查詢行為,并傳回有關 SQLite 語句如何操作的資訊。

  • 來自 EXPLAIN 和 EXPLAIN QUERY PLAN 的輸出隻用于互動式分析和排除故障。
  • 輸出格式的細節可能會随着 SQLite 版本的不同而有所變化。
  • 應用程式不應該使用 EXPLAIN 或 EXPLAIN QUERY PLAN,因為其确切的行為是可變的且隻有部分會被記錄。
EXPLAIN 的文法:
EXPLAIN [SQLite Query]
           
EXPLAIN QUERY PLAN 的文法:
EXPLAIN  QUERY PLAN [SQLite Query]
           
此處來自:SQLite Explain |菜鳥教程

(2)SQL字元串拼接

SQL Server、Oracle、MySQL可以使用concat()函數進行字元串拼接,但SQLite中不支援這種拼接方式,需要使用:|| 符号進行兩個字元串的拼接。

(3)預設系統時間設定

牛客SQL刷題 Day-07
此處來自:SQLite 日期 & 時間 |菜鳥教程

(4)INSERT OR IGNORE相關用法含義

insert or replace:如果不存在就插入,存在就更新;

insert or ignore:如果不存在就插入,存在就忽略。