【MySQL】对表的相关操作(DDL)

2024-03-22 14:52

本文主要是介绍【MySQL】对表的相关操作(DDL),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

👦个人主页:@Weraphael
✍🏻作者简介:目前学习计网、mysql和算法
✈️专栏:MySQL学习
🐋 希望大家多多支持,咱一起进步!😁
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注✨


前言

以下对表的操作需要在你先使用某个数据表

use [数据表];

目录

  • 前言
  • 一、 创建表(增)
  • 二、查看表(查)
      • 2.1 查看当前数据库有几张表
      • 2.3 查询表的详细信息(查看表结构)
      • 2.3 查询表创建或修改的信息
  • 三、修改表(改)
      • 3.1 修改表名
      • 3.2 向表中添加字段
      • 3.3 向表中插入数据
      • 3.4 修改字段类型
      • 3.5 修改字段名
      • 3.6 删除某一字段及其对应的列数据
  • 四、删除表(删)

一、 创建表(增)

【语法】

create [if not exists] table [表名](field1 datatype,field2 datatype,field3 datatype
)character charset=字符集 collate=校验规则 engine=存储引擎;

说明:

  • field:表示列名。
  • datatype:表示列的类型。
  • character set:指定表的字符集。如果没有指定字符集,则以所在数据库的字符集为准。
  • collate:指定表的校验规则。如果没有指定校验规则,则以所在数据库的校验规则为准。
  • engin:指定表的存储引擎。

当然你也可以不指定字符集、校验规则以及存储引擎,因此建表的语法可以简写成以下这样:

create table [表名](field1 datatype,field2 datatype,field3 datatype...
);

【创建表案例】

默认我已经创建了数据库Userdatabase,如果需要在某个数据库建表,所以需要使用先该数据库Userdatabase

use Userdatabase;

在这里插入图片描述

接下来开始建一个用户表users

create table users(id int comment '用户id',name varchar(32) comment '用户名字',password char(32) comment '用户密码',birthday date comment '用户生日'
)charset=utf8 collate=utf8_general_ci engine=MyIsam;# comment - 在创建表的同时为特定列添加注释
# 字段类诸如varchar、char和date后面会讲

【说明】

不同的存储引擎,创建表的文件不一样。users表我这里设置的是存储引擎是MyISAM,在数据库目录有三个不同的文件,分别是:

  • users.frm表结构
  • users.MYD表数据
  • users.MYI表索引

在这里插入图片描述

当然了,不同的存储引擎的文件个数其实是不一样的,这和 【索引/事务】 是有关的(不做详解,后期再说)。这里我再创建一个engineinnodb的表,其内容和以上一模一样,观察存储目录

在这里插入图片描述

在这里插入图片描述

二、查看表(查)

2.1 查看当前数据库有几张表

show tables;

在这里插入图片描述

2.3 查询表的详细信息(查看表结构)

# 查看表结构
desc [表名];

在这里插入图片描述

【说明】

在这里插入图片描述

2.3 查询表创建或修改的信息

# 查询表创建或修改的信息
show create table [表名] \G;
# \G - 人性化展示(可加可不加)

在这里插入图片描述

我们发现,以上是我们建表时的SQL语句。可是,我们建表时的SQL语句全是小写命令啊,为什么这里变大写了呢?

原因很简单,我们在【MySQL】数据库的基础概念 说过,MySQL架构中有解析器和查询优化器,它们会对 SQL语句进行词法、语法分析,然后对查询执行计划进行优化,选择最佳的查询执行策略,以提高查询性能和效率。

三、修改表(改)

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表

3.1 修改表名

alter table [表名] rename to [新表名]
# to 可加可不加

在这里插入图片描述

3.2 向表中添加字段

alter table [表名] add [新添加字段] [字段类型] comment '字段的描述信息' after [某个字段];
# after是在某一个已知字段后添加
# 没有在某个字段前添加,本人亲测~

如果新增多个字段时,需要使用()将新增的一批字段括起来

alter table [表名] add (字段1 字段类型1 comment ' ', 字段1 字段类型1 comment ' ', ...);

需要注意: 新增一个字段时,可以指定位置;如果新增多个字段,就不能指定位置。

【使用案例】

假设我要在表users中,在name字段后添加age字段

在这里插入图片描述

3.3 向表中插入数据

insert into [表名] (字段1, 字段2, ..)  values (数据1, 数据2, ...);
# 数据需要和字段一一对应

注意:如果插入的数据包含所有字段,那么(字段1, 字段2, ..)就可以省略,如:

insert into [表名] values (数据1, 数据2, ...);

检索指定表中的所有数据

select * from [表名];

【使用案例】

在这里插入图片描述

3.4 修改字段类型

alter table [表名] modify [字段名] [新字段类型];

【使用案例】

id的字段类型改为定长字符串类型char

在这里插入图片描述

当然也可以查询表创建时信息

show create table [表名] \G;

在这里插入图片描述

可以看到,之前的注释没了,并且字段的类型也修改了(覆盖原来的内容)

3.5 修改字段名

alter table [表名] change [旧字段名] [新字段名] [新字段类型];

【使用案例】

将原id字段修改为hobby,并且字段类型为varchar(32)

在这里插入图片描述

3.6 删除某一字段及其对应的列数据

alter table [表名] drop [字段];

【使用案例】

hobby字段删除

在这里插入图片描述

四、删除表(删)

注意:删除表请谨慎操作,建议删除前先备份。

drop table [表名];

这篇关于【MySQL】对表的相关操作(DDL)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/835517

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

[MySQL表的增删改查-进阶]

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 💻💻💻数据库约束 🔭🔭🔭约束类型 not null: 指示某列不能存储 NULL 值unique: 保证某列的每行必须有唯一的值default: 规定没有给列赋值时的默认值.primary key:

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

Java 连接Sql sever 2008

Java 连接Sql sever 2008 /Sql sever 2008 R2 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class TestJDBC