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

(默认使用SQLite)

 

题目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 from employees;

"||"用以连接字符串,在Mysql, SQL server, oracle等也支持用“+”来连接。

在Mysql中,可以用concat函数完成:

SELECT CONCAT(last_name, ' ', first_name) FROM employees;

还可以用stuff把同列的数据连接起来:http://blog.csdn.net/rolamao/article/details/7745972 

 

题目3

创建一个actor表,包含如下列信息

列表类型是否为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 最后更新时间,默认是系统的当前时间
CREATE TABLE actor(
    actor_id smallint(5) PRIMARY KEY NOT NULL,
    first_name varchar(45) NOT NULL,
    last_name varchar(45) NOT NULL,
    last_update timestamp NOT NULL DEFAULT (datetime('now','localtime'))
);

注意,datetime('now', 'localtime')外面的括号不可省略。

CREATE语句最好再补充为CREATE TABLE IF NOT EXISTS actor(...);

 

题目4:

对于表actor批量插入如下数据:

actor_idfirst_namelast_namelast_update
1 PENELOPE GUINESS 2006-02-15 12:34:33
2 NICK WAHLBERG 2006-02-15 12:34:33
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');

 

题目5

INSERT OR IGNORE INTO actor
(actor_id, first_name, last_name, last_update)
VALUES
('3', 'ED', 'CHASE', '2006-02-15 12:34:33');

还可以把“IGNORE”替换成“REPLACE”。

在mysql中,用insert IGNORE into actor(去掉“or”)。

posted on 2017-11-08 21:32  RRRRecord  阅读(415)  评论(0编辑  收藏  举报