好几天没有看sql了,原因是上次讨论班废了一段时间,最近上半学期要结课了,很多东西都在搞。
哎!
春招实习上岸好难呀!
继续努力吧!
这道题真的是让人摸不着头脑哈!
在SQLite数据库中,可以用 “EXPLAIN” 关键字或 “EXPLAIN QUERY PLAN” 短语,用于描述表的细节
EXPLAIN SELECT * FROM employees
中间以一个空格区分
这道题主要考察的是一个拼接语句,我们来看一下有哪些点
MySQL、SQL Server、Oracle等数据库支持CONCAT方法,
而本题所用的SQLite数据库只支持用连接符号"||"来连接字符串
-- CONCAT方法
SELECT CONCAT(last_name," ",first_name) AS name
FROM employees
-- ||方法
SELECT last_name||" "||first_name AS name
FROM employees
列表 类型 是否为NULL 含义
actor_id smallint(5) not null 主键id
first_name varchar(45) not null 名字
last_name varchar(45) not null 姓氏
last_update timestamp not null 最后更新时间,默认是系统的当前时间
根据题意,本题关键点是actor_id的主键设置与last_update的默认获取系统时间:
1、在actor_id字段末尾加上PRIMARY KEY是将该字段设置为主键,或者在表的最后一行加上PRIMARY KEY(actor_id)
2、在last_update末尾加上DEFAULT是为该字段设置默认值,且默认值为(datetime(‘now’,‘localtime’)),即获得系统时间,注意最外层的括号不可省略即建表语句走起
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))
INSERT INTO actor (actor_id,
first_name,
last_name,
last_update)
VALUES ('1',
'PENELOPE',
'GUINESS',
'2006-02-15 12:34:33'),
('2',
'NICK',
'WAHLBERG',
'2006-02-15 12:34:33')
在 SQLite 中,用 INSERT OR IGNORE 来插入记录,或忽略插入与表内UNIQUE字段都相同的记录
INSERT OR IGNORE INTO actor
VALUES (3, 'ED', 'CHASE', '2006-02-15 12:34:33')
用 INSERT OR REPLACE 来插入记录,或更新替代与表内UNIQUE字段都相同的记录
INSERT OR REPLACE INTO actor
VALUES (3, 'ED', 'CHASE', '2006-02-15 12:34:33')
注意这个点!
这里指的存在表示的是unique属性的列值存在的情况下,unique表示键值唯一
将actor表中的所有first_name以及last_name导入该表
CREATE TABLE actor_name (first_name VARCHAR(45) NOT NULL,
last_name VARCHAR(45) NOT NULL) ;
INSERT INTO actor_name (first_name,
last_name)
SELECT first_name, last_name
FROM actor