目錄
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表,包含如下列資訊
答案:
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 和 EXPLAIN QUERY PLAN 的輸出隻用于互動式分析和排除故障。
- 輸出格式的細節可能會随着 SQLite 版本的不同而有所變化。
- 應用程式不應該使用 EXPLAIN 或 EXPLAIN QUERY PLAN,因為其确切的行為是可變的且隻有部分會被記錄。
EXPLAIN QUERY PLAN 的文法:EXPLAIN [SQLite Query]
此處來自:SQLite Explain |菜鳥教程EXPLAIN QUERY PLAN [SQLite Query]
(2)SQL字元串拼接
SQL Server、Oracle、MySQL可以使用concat()函數進行字元串拼接,但SQLite中不支援這種拼接方式,需要使用:|| 符号進行兩個字元串的拼接。
(3)預設系統時間設定
此處來自:SQLite 日期 & 時間 |菜鳥教程
(4)INSERT OR IGNORE相關用法含義
insert or replace:如果不存在就插入,存在就更新;
insert or ignore:如果不存在就插入,存在就忽略。