mysql数据库-表的基本操作

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: mysql数据库-表的基本操作

1.创建
create [temporary] table [if not exists] 表名
(字段名 字符类型 [字段属性]...)[表选项]
  • temporary-表示临时表,仅在此会话中出现,关闭就会自动删除
  • 字段名-就是数据表的列名
  • 字符类型就是字段中保存的数据类型
  • 字段属性-就是约束条件

创建MySQL数据表需要以下信息:

  • 表名
  • 表字段名
  • 定义每个表字段

以下为创建MySQL数据表的SQL通用语法:

CREATE TABLE table_name (column_name column_type);

实例:

以下例子中我们将在 RUNOOB 数据库中创建数据表runoob_tbl:

CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

实例解析:

  • 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
  • AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
  • PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
  • ENGINE 设置存储引擎,CHARSET 设置编码。

2.查看
语法: SHOW TABLES [ LIKE 匹配模式];

匹配模式符:

1. “%”  -----匹配一个或多个,任意长度字符串
2. “_”   -----只能匹配一个字符
注意:匹配模式必须用单引号和双引号包裹
# 为一个叫mydb数据库再添加一张数据表new_goods
CREATE TABLE new_goods (
 id INT COMMENT '编号',
 name VARCHAR(32) COMMENT '商品名',
 price INT COMMENT '价格',
 description VARCHAR(255) COMMENT '商品描述'
);
# ①查看所有数据表
SHOW TABLES;
# ② 查看名称中含有new的数据表
SHOW TABLES LIKE '%new%';
查看信息
# 查看叫mydb数据库下含有new的数据表的详细信息
SHOW TABLE STATUS FROM mydb LIKE '%new%'\G

注意:\G 在MySQL中才有用哦

查看结构

1.查看字段

语法1查看所有字段: DESC 数据表名;
语法2查看所选字段: DESC 数据表名 字段名;
# ① 所有字段
DESC my_goods;
# ② name字段
DESC my_goods name;

2.查看表的创建语句

语法: SHOW CREATE TABLE 表名;
# 查看my_goods数据表的创建语句
SHOW CREATE TABLE my_goods \G

3.查看表的结构

语法1: SHOW [ FULL] COLUMNS FROM 数据表名 [FROM 数据库名];
语法2: SHOW [ FULL] COLUMNS FROM 数据库名.数据表名;
# 查看my_goods数据表结构的详细信息
SHOW FULL COLUMNS FROM my_goods;

可选项FULL表示显示详细内容,添加后可以看到DESC语句所查看的也可以查看到字段权限、COMMENT字段的注释信息等。

通过命令提示符创建表

通过 mysql> 命令窗口可以很简单的创建MySQL数据表。你可以使用 SQL 语句 CREATE TABLE 来创建数据表。

实例

以下为创建数据表 runoob_tb1实例:

root@host# mysql -u root -p
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> CREATE TABLE runoob_tbl(
    runoob_id INT NOT NULL AUTO_INCREMENT,
    runoob_title VARCHAR(100) NOT NULL,
    runoob_author VARCHAR(40) NOT NULL,
    submission_date DATE,
    PRIMARY KEY ( runoob_id )
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.16 sec)
mysql>

注意: MySQL命令终止符为分号 ;

注意:-> 是换行符标识,不要复制。


实例:

#1.创建mydb库
create database mydb;
#2.选择数据库
use mydb;
#3.创建goods数据表
create table goods(
 id int comment'编号',
 name varchar(32) comment '商品名',
 price int comment '价格',
 description varchar(255) comment '商品属性'
);

注意

  • 使用数据表时可以用 use库名 指定操作的数据库,否则抛出No database selected的错误(不是必须使用use 库名)当然也可以使用库名.表名的形式。
# 省略②,修改③创建goods数据表
CREATE TABLE mydb.goods (
 id INT COMMENT '编号',
 name VARCHAR(32) COMMENT '商品名',
 price INT COMMENT '价格',
 description VARCHAR(255) COMMENT '商品描述'
);
  • 为避免一库多用造成的数据表重复,给数据表添加一个前缀吧,例如goods------mydb_goods等
  • 3.修改
语法1: ALTER TABLE  旧表名 RENAME [ TO|AS ] 新表名;
语法2: RENAME TABLE 旧表名 1 TO 新表名 1[,旧表名 2 TO 新表名 2 ]...
# 将new_goods表的名称修改为my_goods
RENAME TABLE new_goods TO my_goods;
# 查看所有数据表
SHOW TABLES;
修改表选项
语法: ALTER TABLE 表名 表选项  [=] 值;
# ① 将my_goods数据表的字符集改为utf8
ALTER TABLE my_goods CHARSET = utf8;
# ② 查看修改结果
SHOW CREATE TABLE my_goods \G
修改结构
1.修改字段名
语法:ALTER TABLE 数据表名 CHANGE[COLUMN] 旧字段名 新字段名 字段类型 [字段属性];
# ① 将my_goods数据表中名为description的字段修改为des
ALTER TABLE my_goods CHANGE description des VARCHAR(255);
# ② 查看字段名的修改情况
DESC my_goods;
2.修改字段类型
语法:ALTER TABLE 数据表名 MODIFY [COLUMN] 字段名 新类型 [字段属性];
ALTER TABLE my_goods MODIFY des CHAR(255);
# ② 查看字段类型的修改情况
DESC my_goods des;
3.修改字段位置
语法:ALTER TABLE 数据表名 MODIFY [COLUMN] 字段名1 数据类型 [字段属性] [FIRST | AFTER 字段名2];
# ① 将my_goods表中最后一个字段des移动到name字段后
ALTER TABLE my_goods MODIFY des VARCHAR(255) AFTER name;
# ② 查看字段位置的修改结果
DESC my_goods;
4.新增字段
语法: ALTER TABLE 数据表名 ADD [COLUMN] (新字段名1  字段类型1,新字段名2   字段类型2,...)
# ① 在my_goods数据表中字段name后新增一个num字段,表示商品的数量
ALTER TABLE my_goods ADD num INT AFTER name;
# ② 查看新增的字段
DESC my_goods;
5.删除字段
ALTER TABLE 数据表名 DROP [COLUMN] 字段名;
# ① 删除my_goods数据表中num字段
ALTER TABLE my_goods DROP num;
# ② 看删除num字段后数据表中的字段
DESC my_goods;

4.删除
语法:DROP [TEMPORARY] TABLE [IF EXISTS] 数据表1 [, 数据表2] ...;
# 删除数据表my_goods
DROP TABLE IF EXISTS my_goods;

删除数据表是非常容易操作的, 但是你在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。


命令提示窗口中删除数据表

在mysql>命令提示窗口中删除数据表SQL语句为 DROP TABLE

以下实例删除了数据表runoob_tbl:

mysql> use RUNOOB;
Database changed
mysql> DROP TABLE runoob_tbl
Query OK, 0 rows affected (0.8 sec)
mysql>
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
关系型数据库 MySQL 数据库
数据迁移脚本优化过程:从 MySQL 到 Django 模型表
在大规模的数据迁移过程中,性能问题往往是开发者面临的主要挑战之一。本文将分析一个数据迁移脚本的优化过程,展示如何从 MySQL 数据库迁移数据到 Django 模型表,并探讨优化前后的性能差异。
|
4月前
|
存储 SQL 关系型数据库
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
|
4月前
|
SQL 存储 数据库
MySQL设计规约问题之如何处理日志类型的表
MySQL设计规约问题之如何处理日志类型的表
|
5月前
|
存储 关系型数据库 MySQL
MySQL的一些基本操作
MySQL的一些基本操作
32 1
|
5月前
|
关系型数据库 MySQL
蓝易云 - 如何修复MySQL中损坏的表
最后,为了防止数据丢失,定期备份数据是非常重要的。
153 3
|
4月前
|
运维 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在处理MySQL表新增数据记录时,没有正确触发变更事件,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
SQL 关系型数据库 MySQL
ClickHouse(23)ClickHouse集成Mysql表引擎详细解析
ClickHouse的MySQL引擎允许执行`SELECT`查询从远程MySQL服务器。使用`MySQL('host:port', 'database', 'table', 'user', 'password'[,...])`格式连接,支持简单`WHERE`子句在MySQL端处理,复杂条件和`LIMIT`在ClickHouse端执行。不支持`NULL`值,用默认值替换。系列文章涵盖ClickHouse安装、集群搭建、表引擎解析等主题。[链接](https://zhangfeidezhu.com/?p=468)有更多
257 0
|
5月前
|
关系型数据库 MySQL 数据库
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作
|
5月前
|
SQL 缓存 关系型数据库
MySQL操作全攻略:库、表、数据、事务全面指南
MySQL操作全攻略:库、表、数据、事务全面指南
|
5月前
|
SQL 关系型数据库 MySQL
经验大分享:MySQL(三)数据库表的查询操作【重要】
经验大分享:MySQL(三)数据库表的查询操作【重要】
61 0