(中等)SQL练习36:创建一个actor_name表

本文指导如何使用SQL在Mysql中创建actor_name表,通过查询actor表并填充first_name和last_name字段,涉及知识点包括表结构定义、数据迁移和LIKE操作。

SQL练习36:创建一个actor_name表

题目描述

对于如下表 actor,其对应的数据为:
在这里插入图片描述

请你创建一个 actor_name 表,并且将 actor 表中的所有 first_name 以及 last_name 导入该表。
actor_name 表结构如下:
在这里插入图片描述


考察知识点

通过查询结果来填充创建的表。

Mysql 中创建表的三种方式:

1️⃣ 直接创建

CREATE TABLE IF NOT EXISTS actor
(
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL
);

2️⃣ 按照另一张表的结构来创建新表。

CREATE TABLE IF NOT EXISTS 待创建表 LIKE 来源表

3️⃣ 常规创建表后,将查询得到的数据填充表(本题解法)。


解题思路

将查询得到的数据填充表。

CREATE TABLE IF NOT EXISTS actor_name
(
first_name VARCHAR(45) NOT NULL,
last_name VARCHAR(45) NOT NULL
)
SELECT first_name, last_name
FROM actor

题目来源:牛客网-SQL数据库实战题

每日打卡,❤ 点个赞再走吧!!!❤

在这里插入图片描述
后续会继续分享 Mysql 方面的文章,如果感兴趣的话可以点个关注不迷路哦~。

<think>好的,我需要帮助用户创建一个名为actor_name的新,并从现有的actor中导入数据。首先,我需要确认用户的需求:创建的结构应该包含first_name和last_name两个字段,都是varchar(45)且非空,然后将现有数据导入。 根据用户提供的引用,特别是引用[1]和[2],actor的结构已经明确,其中first_name和last_name都是varchar(45)且NOT NULL。所以新的结构应该与这两列一致。创建SQL语句应该使用CREATE TABLE,并指定字段类型和约束。 接下来是插入数据部分。用户需要将现有actor中的数据导入到新中。这时候应该使用INSERT INTO ... SELECT语句。需要确保选择的字段与新的字段对应,并且数据类型匹配。因为新的字段是first_name和last_name,而原也有同名字段,所以直接SELECT即可。 还要注意,如果原中有重复数据或者有其他约束,可能需要处理,但根据用户提供的引用,原中的字段都是NOT NULL,所以数据应该可以直接插入,不会出现空值问题。另外,是否需要一次性插入还是分批?用户没有特别说明,所以用基本的INSERT INTO ... SELECT应该足够。 可能还需要考虑事务处理,确保数据完整,但用户的问题中没有提到,所以暂时可以忽略。此外,是否需要添加主键或其他约束?用户只要求两个字段,所以新可能没有主键,但根据引用[2],原的主键是actor_id,但新不需要,所以按照用户需求创建即可。 总结步骤:先创建actor_name,结构正确,然后插入数据。需要验证SQL语法是否正确,比如字段类型、是否允许NULL等。确保INSERT语句正确选择原的字段,并且目标存在。 现在检查是否有遗漏。比如,创建时是否指定了正确的字段类型和约束?是的,varchar(45) NOT NULL。插入语句是否正确?是的,SELECT first_name, last_name FROM actor。如果actor中有大量数据,这个操作可能需要时间,但用户没有提到性能优化,所以没问题。 最后,是否需要考虑索引或其他优化?用户没有要求,所以暂时不需要。因此,解决方案应该是正确的。</think>### 分步解答 #### 1. 创建 `actor_name` 使用 `CREATE TABLE` 语句定义结构,字段需与原 `actor` 的 `first_name` 和 `last_name` 保持一致: ```sql CREATE TABLE IF NOT EXISTS actor_name ( first_name VARCHAR(45) NOT NULL COMMENT '名字', last_name VARCHAR(45) NOT NULL COMMENT '姓氏' ); ``` - **字段类型**:与原一致,均为 `VARCHAR(45)`[^1][^2] - **约束条件**:`NOT NULL` 保证字段非空[^1] - **注释**:可选添加字段说明(`COMMENT`) #### 2. 插入数据到新 通过 `INSERT INTO ... SELECT` 语句从原提取数据: ```sql INSERT INTO actor_name (first_name, last_name) SELECT first_name, last_name FROM actor; ``` - **字段匹配**:目标字段与原字段名称一致,直接映射 - **数据完整性**:原字段已定义 `NOT NULL`,插入时无需额外过滤空值[^2] ### 完整操作示例 ```sql -- 创建 CREATE TABLE IF NOT EXISTS 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; ```
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream丶Killer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值