MySQL - 创建表的三种方法详解及练习

目录

[🥙1. 基础创建](#🥙1. 基础创建)

🧀实例1

[🥙2. 带约束创建](#🥙2. 带约束创建)

🧀实例2

[🥙3. 复制创建](#🥙3. 复制创建)

🧀实例3:

🧀实例4:

🧀实例5:

​ 🧀实例6:

🧀实例7:

[🥙4. 牛客题:](#🥙4. 牛客题:)


🥙1. 基础创建

sql 复制代码
-- 基本语法
CREATE TABLE 表名称(
    字段名1 数据类型1,
    字段名2 数据类型2,
    字段名3 数据类型3);

🧀实例1

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

|-------------|-------------|
| 列表 | 类型 |
| actor_id | smallint(5) |
| first_name | varchar(45) |
| last_name | varchar(45) |
| last_update | date |

示例代码

sql 复制代码
drop table if exists actor;
create table actor(
    actor_id smallint(5),
    first_name varchar(45),
    last_name varchar(45),
    last_update date
);

结果:

🥙2. 带约束创建

sql 复制代码
-- 基本语法
CREATE TABLE 表名称(
    字段名1 数据类型1 主键 自增长,
    字段名2 数据类型2 非空 默认值,
    字段名3 数据类型3)
ENGINE=当前表格的引擎 
AUTO_INCREMENT=自增长的起始值 
DEFAULT CHARSET=表数据的默认字符集;

🧀实例2

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

CHARSET为utf8,ENGINE为INNODB

|-------------|-------------|----------|------|--------|
| 列表 | 类型 | 是否为NULL | 含义 | 其他 |
| actor_id | smallint(5) | not null | 主键id | 自增从1开始 |
| first_name | varchar(45) | not null | 名字 | |
| last_name | varchar(45) | not null | 姓氏 | |
| last_update | date | not null | 日期 | |

sql 复制代码
drop table if exists actor;
create table actor(
    actor_id smallint(5) primary key auto_increment comment '主键id',
    first_name varchar(45) not null comment '名字',
    last_name varchar(45) not null comment '姓氏',
    last_update date not null comment '日期'
)ENGINE=INNODB,AUTO_INCREMENT=1,DEFAULT charset =utf8;

结果:

🥙3. 复制创建

sql 复制代码
CREATE TABLE new_table LIKE old_table;   #复制表的所有结构
CREATE TABLE new_table SELECT list FROM old_table WHERE 0;  #复制表的部分结构
CREATE TABLE new_table SELECT * FROM old_table;   #复制表的所有结构+所有数据
CREATE TABLE new_table SELECT field_list FROM old_table;  #复制表的部分结构+所有数据
CREATE TABLE new_table SELECT field_list FROM old_table WHERE condition;  #复制表的部分结构+部分数据 

先往实例2创建的actor表中插入几条数据

sql 复制代码
insert into actor values ('1', 'PENELOPE', 'GUINESS', '2006-02-15 12:34:33'), 
                         ('2', 'NICK', 'WAHLBERG', '2006-02-15 12:34:33');

关于如何插入数据的讲解可参选如下连接:

Mysql - 常用插入数据的三种方法详解及练习-CSDN博客

🧀实例3

另建一个和actor一样的空表actor_copy

sql 复制代码
drop table if exists actor_copy;
create table actor_copy like actor;

结果

🧀实例4

将actor表中的first_name, last_name单独拿出来,存在一个新的空表actor_name中

sql 复制代码
create table actor_name
select first_name,last_name
from actor
where 0;

结果:

🧀实例5

另建一个和actor一模一样表actor_copy1

sql 复制代码
create table actor_copy1
select *
from actor;

结果

🧀实例6

请你创建一个actor_name2表,并且将actor表中的所有first_name以及last_name导入该表.

sql 复制代码
create table actor_name2
select first_name,last_name
from actor;

结果

🧀实例7

请你创建一个actor_name3表,并且将actor表中的first_name为'Nick'人的first_name和last_name导入该表.

sql 复制代码
create table actor_name3
select first_name,last_name
from actor
where first_name='NICK';

结果:

🥙4. 牛客题:

SQL227 创建一个actor表

SQL230 创建一个actor_name表

相关推荐
大模型玩家七七21 分钟前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
曾经的三心草23 分钟前
redis-9-哨兵
数据库·redis·bootstrap
明哥说编程27 分钟前
Dataverse自定义表查询优化:D365集成大数据量提速实战【索引配置】
数据库·查询优化·dataverse·dataverse自定义表·索引配置·d365集成·大数据量提速
xiaowu08037 分钟前
C# 拆解 “显式接口实现 + 子类强类型扩展” 的设计思想
数据库·oracle
讯方洋哥1 小时前
HarmonyOS App开发——关系型数据库应用App开发
数据库·harmonyos
惊讶的猫1 小时前
Redis持久化介绍
数据库·redis·缓存
Apple_羊先森2 小时前
ORACLE数据库巡检SQL脚本--19、磁盘读次数最高的前5条SQL语句
数据库·sql·oracle
全栈前端老曹2 小时前
【MongoDB】Node.js 集成 —— Mongoose ORM、Schema 设计、Model 操作
前端·javascript·数据库·mongodb·node.js·nosql·全栈
神梦流3 小时前
ops-math 算子库的扩展能力:高精度与复数运算的硬件映射策略
服务器·数据库
让学习成为一种生活方式3 小时前
trf v4.09.1 安装与使用--生信工具42-version2
数据库