牛客网在线编程网址:https://www.nowcoder.com/activity/oj

(默认使用SQLite)

 

题目1:

对于如下表actor,其对应的数据为:

actor_idfirst_namelast_namelast_update
1 PENELOPE GUINESS 2006-02-15 12:34:33
2 NICK WAHLBERG 2006-02-15 12:34:33

创建一个actor_name表,将actor表中的所有first_name以及last_name导入改表。 actor_name表结构如下:

列表类型是否为NULL含义
first_name varchar(45) not null 名字
last_name varchar(45) not null 姓氏
Create table actor_name as
SELECT first_name, last_name 
FROM actor;

 

题目2:

针对如下表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')))

对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname

CREATE unique index uniq_idx_firstname ON actor(first_name);
CREATE index idx_lastname ON actor(last_name);

 

题目3:

针对actor表创建视图actor_name_view,只包含first_name以及last_name两列,并对这两列重新命名,fist_name为first_name_v,last_name修改为last_name_v:

Create View actor_name_view(fist_name_v, last_name_v) as
select first_name, last_name
FROM actor;

 

题目4:

CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
create index idx_emp_no on salaries(emp_no);

针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引。

CREATE index idx_emp_no ON salaries(emp_no);

select * from salaries
indexed by idx_emp_no
where emp_no = 10005;

如果两句都提交的话会说idx_emp_no已存在,提交第二句就好了。

 

题目5:

存在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')));

现在在last_update后面新增加一列名字为create_date, 类型为datetime, NOT NULL,默认值为'0000 00:00:00'

ALTER table actor
ADD create_date datetime NOT NULL Default '0000-00-00 00:00:00';

这里默认值不能和题意设得一样'0000 00:00:00',还是得补全日期格式。

 

题目5:

构造一个触发器audit_log,在向employees表中插入一条数据的时候,触发插入相关的数据到audit中。

CREATE TABLE employees_test(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
CREATE TABLE audit(
EMP_no INT NOT NULL,
NAME TEXT NOT NULL
);
CREATE trigger audit_log AFTER INSERT
ON employees_test
BEGIN
    insert into audit(emp_no, name) VALUES(new.ID, new.NAME);
END;

这里题意没说清楚。EMP_no应该对应原表的ID列。

posted on 2017-11-10 20:28  RRRRecord  阅读(465)  评论(0编辑  收藏  举报