具体题目参考链接:https://www.nowcoder.com/ta/sql
文章目录
- 32. 将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分
- 33. 创建一个actor表,包含如下列信息
- 34. 请你对于表actor批量插入如下数据(不能有2条insert语句哦!)
- 35. 对于表actor插入如下数据,如果数据已经存在,请忽略(不支持使用replace操作)
- 36. 请你创建一个actor_name表,并且将actor表中的所有first_name以及last_name导入该表.
- 37. 针对如下表actor结构创建索引,对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname
- 39. 针对salaries表emp_no字段,查询emp_no为10005, 使用强制索引。
- 40. 对于actor表,现在在last_update后面新增加一列名字为create_date, 类型为datetime, NOT NULL,默认值为'2020-10-01 00:00:00'
32. 将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分
思路:
①不同字符串连接方法不一样,在 MySQL 中,可以利用 CONCAT() 函数将多个字符串连接起来。
②空格用’ '表示
SELECT CONCAT(last_name, ' ', first_name) AS Name FROM employees;
33. 创建一个actor表,包含如下列信息
思路:创建主键可以写在最后,PRIMARY KEY()
CREATE TABLE actor(
actor_id SMALLINT(5) NOT NULL,
first_name VARCHAR(45) NOT NULL,
last_name VARCHAR(45) NOT NULL,
last_update DATE NOT NULL ,
PRIMARY KEY(actor_id)
);
34. 请你对于表actor批量插入如下数据(不能有2条insert语句哦!)
思路:MySQL 插入多条记录的写法:
INSERT INTO 表名 VALUES (value1, value2, …), (value1, value2, …), …(value1, value2, …)
INSERT INTO actor VALUES (1, 'PENELOPE', 'GUINESS', '2006-02-15 12:34:33'),
(2, 'NICK', 'WAHLBERG', '2006-02-15 12:34:33');
35. 对于表actor插入如下数据,如果数据已经存在,请忽略(不支持使用replace操作)
思路:这里指的存在表示的是unique属性的列值存在的情况下,unique表示键值唯一。
如果数据存在则忽略,在 insert into 之间加个 ignore 就可以
INSERT IGNORE INTO actor VALUES (3, 'ED', 'CHASE', '2006-02-15 12:34:33');
36. 请你创建一个actor_name表,并且将actor表中的所有first_name以及last_name导入该表.
思路:将 actor 表的部分拿来创建 actor_name 表。
CREATE TABLE actor_name SELECT first_name, last_name FROM actor;
另一种更详细的写法:
CREATE TABLE actor_name (
first_name VARCHAR(45) NOT NULL,
last_name VARCHAR(45) NOT NULL
)
SELECT first_name, last_name FROM actor;
37. 针对如下表actor结构创建索引,对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname
思路:
创建唯一索引:CREATE UNIQUE INDEX <唯一索引名> ON <表名> (<列名>);
创建一个简单的索引:CREATE INDEX <普通索引名> ON <表名> (<列名>);
CREATE UNIQUE INDEX uniq_idx_firstname ON actor(first_name);
CREATE INDEX idx_lastname ON actor(last_name);
39. 针对salaries表emp_no字段,查询emp_no为10005, 使用强制索引。
思路:
强制索引:FORCE INDEX(<索引名>);
SELECT * FROM <表名> FORCE INDEX (<索引名>)
SELECT * FROM salaries FORCE INDEX (idx_emp_no) WHERE emp_no = 10005;
40. 对于actor表,现在在last_update后面新增加一列名字为create_date, 类型为datetime, NOT NULL,默认值为’2020-10-01 00:00:00’
思路:
添加列是使用变更表定义的ALTER TABLE语句,
ALTER TABLE <表名>
ADD COLUMN <列名> <列的定义>;
DEFAULT 用于向列中插入默认值。
ALTER TABLE actor
ADD COLUMN create_date DATETIME NOT NULL DEFAULT '2020-10-01 00:00:00';