MySQL-表相关(DDL DML)

news2024/11/22 9:10:12

文章目录

    • 表的基本操作
      • 表的创建
      • 表的删除
    • MySQL中的数据类型
      • 整数类型
      • 浮点数类型
      • 定点数类型
      • 日期和时间类型
      • 字符串类型
        • char
        • varchar
        • text
      • 二进制类型
    • DDL语句
      • 查看建表语句
      • 修改表名
      • 新增字段
      • 修改字段(名+类型)
      • 修改字段(仅类型)
      • 删除字段

表的基本操作

在介绍DDL和DQL的操作语句之前, 我们先来熟悉一下表的基础相关操作

表的创建

下面的sql语句是创建一个学生表

create table if not exists t_student(
    id int,
    name varchar(25),
    gender char(1) default '男'
);

插入几条数据进行测试

# default是默认约束
insert into t_student(id, name, gender) values (1, 'll', '男');
insert into t_student(id, name) values (2, 'rr');
insert into t_student(id, name, gender) values (3, 'hh', '女');
select * from t_student;

# 测试结果
+------+------+--------+
| id   | name | gender |
+------+------+--------+
|    1 | ll   ||
|    2 | rr   ||
|    3 | hh   ||
+------+------+--------+

表的删除

只需要下面的sql语句即可

# 如果数据库中没有这张表就会报错
drop table t_student;
# 即使数据库中没有这张表也不会报错
drop table if exists t_student;

MySQL中的数据类型

之前我们并没有介绍MySQL中的数据类型都有什么, 我们下面介绍一下MySQL中的数据类型
数据类型(data_type)是指系统中所允许的数据的类型。数据库中的每个列都应该有适当的数据类型,用于限制或允许该列中存储的数据。例如,列中存储的为数字,则相应的数据类型应该为数值类型。如果使用错误的数据类型可能会严重影响应用程序的功能和性能,所以在设计表时,应该特别重视数据列所用的数据类型。更改包含数据的列不是一件小事,这样做可能会导致数据丢失。因此,在创建表时必须为每个列设置正确的数据类型和长度。MySQL 的数据类型可以分为整数类型、浮点数类型、定点数类型、日期和时间类型、字符串类型、二进制类型等。

整数类型

tinyint:1个字节(微小整数)smallint:2个字节(小整数)mediumint:3个字节(中等大小的整数)**int(integer):4个字节(普通大小整数)**bigint:8个字节(大整数)

浮点数类型

float:4个字节,单精度(最多5位小数)double:8个字节,双精度(最多16位小数)

定点数类型

decimal:定点数类型。底层实际上采用字符串的形式存储数字。语法:decimal(m, d)例如:decimal(3, 2) 表示3个有效数字,2个小数。(有效数字最多65个,小数位最多30个)

日期和时间类型

year:1个字节,只存储年,格式YYYYtime:3个字节,只存储时间,格式HH:MM:SS / HHMMSSdate:3个字节,只存储年月日,格式:YYYY-MM-DDdatetime:8个字节,存储年月日+时分秒,格式:YYYY-MM-DD HH:MM:SS(从公元1000年公元9999年)timestamp:4个字节,存储年月日+时分秒,格式:YYYY-MM-DD HH:MM:SS(从公元1980年公元2040年)或者格式为 YYYYMMDDHHMMSS(采用这种格式不需要使用单引号,当然你使用单引号也可以)

字符串类型

char

char(m): m长度是0~255个字符。固定长度字符串,在定义时指定字符串列长。当保存时,在右侧填充空格以达到指定的长度。m表示列的长度,范围是 0~255 个字符。例如,CHAR(4) 定义了一个固定长度的字符串列,包含的字符个数最大为 4。当插入的字符长度大于4,则报错(除非超过4个长度之后都是空格字符,则空格字符会自动被删除用来保证插入的成功)。

varchar

varchar(m): m长度是0~16383个字符长度可变的字符串。varchar 的最大实际长度由最长的行的大小和使用的字符集确定,而实际占用的空间为字符串的实际长度加 1。例如,varchar(50) 定义了一个最大长度为 50 的字符串,如果插入的字符串只有 10 个字符,则实际存储的字符串为 10 个字符和一个字符串结束字符。varchar在值保存和检索时尾部的空格仍保留。17086473007292181603be6204be8bab61b9c029989d8png

text

text类型:

  • tinytext 表示长度为 255字符的 TEXT 列。

  • text 表示长度为 65535字符的 TEXT 列。

  • mediumtext 表示长度为 16777215字符的 TEXT 列。

  • longtext 表示长度为 4294967295 或 4GB 字符的 TEXT 列。

    enum类型:

  • 语法:<字段名> enum(‘值1’,‘值2’,…)

  • 该字段插入值时,只能是指定的枚举值。

    set类型:

  • 语法:<字段名> set(‘值1’,‘值2’,‘值3’,…) 注意:值不可重复。

  • 该字段插入值时,只能是指定的值。

二进制类型

BLOB类型:二进制大对象,可以存储图片、声音、视频等文件。

  • blob:小的,最大长度65535个字节

  • mediumblob:中等的,最大长度16777215个字节

  • longblob:大的,最大长度4GB的字节

这里注意一下, 使用命令行是无法进行BLOB类型的添加的, 需要调用Java程序中的IO流相关辅助实现
还有就是日常开发中一般是不会在数据库中保留一个视频这种非常大的文件的, 一般都是保存一个字符串
视频文件远程托管到服务器上, 这个字符串就是这个托管的地址, 所以一般保留的都是varchar/char

DDL语句

DDL语句是我们SQL语句中的一种, 下面是DDL的相关简介, 其实也就是修改表本身的结构, 其实这个内容相对不是特别重要, 因为开发的过程中, 当以及拥有庞大用户量之后, 修改表的结构其实时一件很危险的行为

数据定义语言 (Data Definition Language, DDL) 是SQL语言集中,负责数据结构定义与数据库对象定义的语言,由CREATE、ALTER与DROP三个语法所组成,最早是由 Codasyl (Conference on Data Systems Languages) 数据模型开始,现在被纳入 SQL 指令中作为其中一个子集。

还是创建一个数据表并且插入几条数据用来测试

create table test_ddl(
    a bigint primary key auto_increment,
    b varchar(255) not null,
    c char(10) unique
);

insert into test_ddl(b, c) values ('hh', 'hhx');
insert into test_ddl(b, c) values ('bb', 'bbx');
insert into test_ddl(b, c) values ('ff', 'ffx');

select * from test_ddl;

# 测试结果如下
+---+----+------+
| a | b  | c    |
+---+----+------+
| 1 | hh | hhx  |
| 2 | bb | bbx  |
| 3 | ff | ffx  |
+---+----+------+

查看建表语句

我们之前学习的那个是查看表的结构

# desc + 表名
desc test_ddl;

在这里插入图片描述
查看建表语句

# 语法
show create table [表名]

执行下面的sql语句

show create table test_ddl;

在这里插入图片描述
上面可以查看我们建表时的语句, 以及存储引擎(这里是InnoDB), 字符集以及排序规则
其实上面也解释了一个问题, 就是MySQL中的所有的标识符其实都隐式加上了反引号`
当我们想用关键字当成标识符的时候, 就要加上反引号

修改表名

从下面开始我们所有的DDL语句都是以alter table开头
基础语法

alter table [表名] rename [新名字]

假如我们想要修改表的名字, 比如把我们上面的test_ddl变为test_ddlt
执行下面的SQL

alter table test_ddl rename test_ddlt;
show tables;

# 执行结果如下(表名已经发生了改变)
+------------------------+
| Tables_in_java113mysql |
+------------------------+
| dept                   |
| emp                    |
| salgrade               |
| t_student              |
| test_ddlt              |
+------------------------+

这时我们用上面的查看建表语句就会发现表名已经发生改变
在这里插入图片描述

新增字段

基础语法

alter table [表名] add [新字段名] [数据类型]

我们尝试执行下面的SQL语句

alter table test_ddlt add d varchar(10) not null;

思考一下, 我们新添加的d字段, 带有非空约束, 但是我们之前是没有加入过d这一列数据的, 那么会执行成功么, 答案是会执行成功的, 但是之前的所有位置的这个d列都是空, 不是null, 就是空(什么都没有)

insert into test_ddlt (b,c, d) values ('cc', 'ccx', 'ccxy');
select * from test_ddlt;

# 执行结果如下(就是空, 而不是null)
+---+----+------+------+
| a | b  | c    | d    |
+---+----+------+------+
| 1 | hh | hhx  |      |
| 2 | bb | bbx  |      |
| 3 | ff | ffx  |      |
| 4 | cc | ccx  | ccxy |
+---+----+------+------+

修改字段(名+类型)

这个SQL语句适用于修改一个字段的名称以及数据类型
基础语法

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

尝试执行下面的SQL

alter table test_ddlt change d dx varchar(5);

执行结果以及表的前后结构对比如下
在这里插入图片描述

修改字段(仅类型)

基础语法

alter table [表名] modify column [字段名] [数据类型]

执行下面的SQL

alter table test_ddlt modify column dx varchar(7);
desc test_ddlt;

执行结果如下
在这里插入图片描述

删除字段

基础语法

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

尝试执行下面的SQL

select * from test_ddlt;
alter table test_ddlt drop dx;
select * from test_ddlt;

执行结果如下
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2204145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HCIP-HarmonyOS Application Developer 习题(六)

&#xff08;多选&#xff09;1、Harmonyos多窗口交互能力提供了以下哪几种交互方式? A. 平行视界 B.全局消息通知 C.分屏 D.悬浮窗 答案&#xff1a;ACD 分析&#xff1a;系统提供了悬浮窗、分屏、平行视界三种多窗口交互&#xff0c;为用户在大屏幕设备上的多任务并行、便捷…

V2M2引擎传奇全套源码2024BLUE最新版 可自定义UI

特点优势是最新XE10.4或者XE12编辑器&#xff0c;微端&#xff0c;各种自定义UI 无限仿GOM引擎功能下载地址:BlueCodePXL_415.rar官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 提取码: AuX7BlueCodePXL_415.rar官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘…

无需复杂计算!如何用“加法”打造高效而低功耗的语言模型

当我们聊到人工智能特别是语言模型时,大家脑海中可能浮现的都是庞大的计算能力、高能耗的服务器群。然而,最近有一篇有趣的论文《Addition Is All You Need for Energy-Efficient Language Models》(加法才是低能耗语言模型的关键)却颠覆了我们对语言模型的传统认知。那么,…

Redis高级篇 —— 分布式缓存

Redis高级篇 —— 分布式缓存 文章目录 Redis高级篇 —— 分布式缓存1 Redis持久化1.1 RDB1.2 RDB的fork原理1.3 RDB总结1.4 AOF持久化1.5 RDB和AOF的对比 2 Redis主从2.1 搭建主从架构2.2 数据同步原理2.2.1 全量同步2.2.2 增量同步 3 Redis哨兵3.1 哨兵的作用和原理3.1.1 哨兵…

基于IOU匹配的DeepSort目标跟踪与匈牙利算法解析

在多目标跟踪任务中&#xff0c;如何将检测框与已有轨迹进行关联&#xff0c;进而维持目标的连续跟踪&#xff0c;是一个关键问题。DeepSort&#xff08;Deep Simple Online and Realtime Tracking&#xff09;是一种常用的多目标跟踪算法&#xff0c;它结合了IOU&#xff08;交…

Linux搭建Hadoop集群(详细步骤)

前言 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下&#xff0c;开发分布式程序。充分利用集群的威力进行高速运算和存储。 说白了就是实现一个任务可以在多个电脑上计算的过程。 一&#xff1a;准备工具 1.1 VMware 1.2L…

利用内部知识库优化SOP与HR培训效果评估

在当今快速变化的商业环境中&#xff0c;企业运营的高效性和员工的综合能力成为决定竞争力的关键因素。SOP作为确保业务一致性和质量的基础&#xff0c;其有效执行至关重要。同时&#xff0c;HR培训作为提升员工技能和知识的重要手段&#xff0c;其效果直接影响到企业的整体绩效…

【顶刊核心变量】中国地级市绿色金融试点改革试验区名单数据(2010-2023年)

一、测算方式&#xff1a; 参考《中国工业经济》崔惠玉&#xff08;2023&#xff09;老师的研究&#xff0c;2017 年&#xff0c;国务院决定将浙江、广东、江西、贵州和新疆的部分地区作为绿色金融改革创新试验 区的首批试点地区。试点地区在顶层设计、组织体系、产品创新、配…

Docker容器简介及部署方法

1.1 Docker简介 Docker之父Solomon Hykes&#xff1a;Docker就好比传统的货运集装箱 2008 年LXC(LinuX Contiainer)发布&#xff0c;但是没有行业标准&#xff0c;兼容性非常差 docker2013年首次发布&#xff0c;由Docker, Inc开发 1.1.1什么是Docker Docker是管理容器的引…

java脚手架系列4--测试用例、拦截器

异常处理、拦截器、数据库连接 1 测试用例 单元测试是一个老生常谈的问题&#xff0c;无论是后端对自己的代码质量把的第一道关也好&#xff0c;也是对测试减缓压力。这里就不过多讲述测试用例的重要性&#xff0c;但是有2个框架我们必须了解一下。 1.1 JUnit和mockito 我们…

【gRPC】4—gRPC与Netty

gRPC与Netty ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&#x1f60a; &#x1f4d6;RPC专栏&#xff1a;https://…

TadTR(TIP 2022)视频动作检测方法详解

前言 论文&#xff1a;End-to-end Temporal Action Detection with Transformer 代码&#xff1a;TadTR 从论文题目可以看出 TadTR 是基于 Transformer 的端到端的方法&#xff0c;TAD 在视频动作分类任务上更进一步&#xff0c;不仅对动作分类&#xff0c;还要检测动作发生的…

力扣21~30题

21题&#xff08;简单&#xff09;&#xff1a; 分析&#xff1a; 按要求照做就好了&#xff0c;这种链表基本操作适合用c写&#xff0c;python用起来真的很奇怪 python代码&#xff1a; # Definition for singly-linked list. # class ListNode: # def __init__(self, v…

每日一题:单例模式

每日一题&#xff1a;单例模式 ❝ 单例模式是确保一个类只有一个实例&#xff0c;并提供一个全局访问点 1.饿汉式&#xff08;静态常量&#xff09; 特点&#xff1a;在类加载时就创建了实例。优点&#xff1a;简单易懂&#xff0c;线程安全。缺点&#xff1a;无论是否使用&…

uni-app如何搭建项目(一步一步教程)

来来来&#xff0c;看这里 uni-app新建项目教程uni-app项目结构 首先我们要有一个HBuilder这个软件&#xff0c;然后我们来搭建uni-app项目 uni-app新建项目教程 首先我们打开这个HBuilder软件&#xff0c;好我们就出现这个界面&#xff0c;我们点击新建项目   然后我们选择…

Github优质项目推荐 - 第六期

文章目录 Github优质项目推荐 - 第六期一、【WiFiAnalyzer】&#xff0c;3.4k stars - WiFi 网络分析工具二、【penpot】&#xff0c;33k stars - UI 设计与原型制作平台三、【Inpaint-Anything】&#xff0c;6.4k stars - 修复图像、视频和3D 场景中的任何内容四、【Malware-P…

小猿口算APP脚本(协议版)

小猿口算是一款专注于数学学习的教育应用,主要面向小学阶段的学生。它提供多种数学练习和测试,包括口算、速算、应用题等。通过智能化的题目生成和实时批改功能,帮助学生提高数学计算能力。此外,它还提供详细的学习报告和分析,帮助家长和教师了解学生的学习进度和薄弱环节…

批量处理vue2中文硬编码转i18n国际化(保姆级)

文章目录 背景技术选型使用软件与插件插件使用补充 背景 公司的项目需要适应国际化的需求&#xff0c;但是因为代码是一个成品的项目&#xff0c;也就导致&#xff0c;代码量巨大&#xff0c;连带着需要转国际化的硬编码中文也很多&#xff0c;如果一点点纯手工改动&#xff0…

RelationGraph实现工单进度图——js技能提升

直接上图&#xff1a; 从上图中可以看到整个工单的进度是从【开始】指向【PCB判责】【完善客诉】【PCBA列表】&#xff0c;同时【完善客诉】又可以同时指向【PCB判责】【PCBA列表】&#xff0c;后续各自指向自己的进度。 直接上代码&#xff1a; 1.安装 1.1 Npm 方式 npm …

“探索端智能,加速大模型应用” 火山引擎边缘智能x扣子技术沙龙圆满落幕!

9月21日&#xff0c;火山引擎边缘智能扣子技术沙龙在上海圆满落地&#xff0c;沙龙以“探索端智能&#xff0c;加速大模型应用”为主题&#xff0c;边缘智能、扣子、地瓜机器人以及上海交通大学等多位重磅嘉宾出席&#xff0c;从多维视角探讨 AI、 AIoT、端侧大模型等技术与发展…