mysql数据库-表的基本操作

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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>
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Oracle 关系型数据库 MySQL
【mysql】—— 表的内连和外连
【mysql】—— 表的内连和外连
|
1月前
|
存储 关系型数据库 MySQL
【mysql】—— 表的增删改查
【mysql】—— 表的增删改查
|
22天前
|
存储 SQL 关系型数据库
【MySQL】4. 表的操作
【MySQL】4. 表的操作
21 0
|
21天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
21天前
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
|
22天前
|
关系型数据库 MySQL
【MySQL】12. 表的内连和外连(重点)
【MySQL】12. 表的内连和外连(重点)
13 0
|
1月前
|
存储 关系型数据库 MySQL
【mysql】—— 表的约束
【mysql】—— 表的约束
|
1月前
|
存储 SQL 关系型数据库
【mysql】—— 表的操作
【mysql】—— 表的操作
|
1月前
|
Oracle 关系型数据库 MySQL
Flink CDC产品常见问题之从EARLIEST_OFFSET启动就报错如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】——用SQL语句实现数据库和基本表的创建
【MySQL】——用SQL语句实现数据库和基本表的创建
63 3
【MySQL】——用SQL语句实现数据库和基本表的创建