MYSQL学习笔记(九):MYSQL表的“增删改查”

news/2025/2/23 5:30:49

前言

  • 学习和使用数据库可以说是程序员必须具备能力,这里将更新关于MYSQL的使用讲解,大概应该会更新30篇+,涵盖入门、进阶、高级(一些原理分析);
  • 这一篇讲述一些在MYSQL的数据类型,和表的“增删改查”基本操作;
  • 虽然MYSQL命令很多,但是自己去多敲一点,到后面忘记了,查一下就可以回忆起来使用了;
  • 这一系列也是本人学习MYSQL做的笔记,也是为了方便后面忘记查询;
  • 参考资料:尚硅谷、黑马、csdn和知乎博客;
  • 欢迎收藏 + 关注,本人将会持续更新

    文章目录

    • 创建和管理表
      • 1. 基础知识
        • 1.1 表的基本概念
        • 1.2 标识符命名规范
        • 1.3 MySQL中的数据类型
      • 2. 创建和管理数据库
      • 3.创建表
        • 3.1 创建方式1
        • 3.2 创建方式2
        • 3.3 查看表结构
      • 4. 修改表
        • 4.1 修改数据表
          • 4.1.1 修改表名
          • 4.1.2 修改字符集
        • 4.2 增加字段
          • 4.2.1 在最后添加字段
          • 4.2.2 在第一个位置添加字段
          • 4.2.3 在指定位置添加字段
        • 4.3 删除字段
        • 4.4 修改字段
          • 4.4.1 修改字段的数据类型
          • 4.4.2 修改字段名
          • 4.4.3 修改字段的顺序
      • 5. 删除表

创建和管理表

1. 基础知识

1.1 表的基本概念

在MySQL数据库中,表是一种很重要的数据库对象,是组成数据库的基本元素,由若干个字段组成,主要用来实现存储数据记录。

表是包含数据库中所有数据的数据库对象。数据在表中的组织方式与在电子表格中相似,都是按行和列的格式组织的,其特点:

  • 每一行代表一条唯一的记录;
  • 每一列代表记录中的一个字段。

表的基本操作包含创建表、查看表、删除表和修改表,也就是我们常说的:“增删改查”。

1.2 标识符命名规范

  1. 数据库名、表名不得超过30个字符,变量名限制为29个
  2. 只能包含大写、小写、数字字符以及下划线
  3. 同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
  4. 不能和保留字、函数名冲突。

1.3 MySQL中的数据类型

类型具体类型
整数类型TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT
浮点类型FLOAT、DOUBLE
定点数类型DECIMAL
位类型BIT
日期时间类型YEAR、TIME、DATE、DATETIME、TIMESTAMP
文本字符串类型CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT
枚举类型ENUM
集合类型SET
二进制字符串类型BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
json类型JSON对象、JSON数组
空间数据类型单值:GEOMETRY、POINT、LINESTRING、POLYGON
集合:MULTPOINT、MULTILINESTRING、MULTIPOLGON、GEOMTRYCOLLECTION

其中,常用的几类类型介绍如下:

类型描述
INT4个字节
CHAR(size)定长字符数据,若未指定,默认为一个字符,最大长度255
VARCHAR(size)可变字符数据,更具字符串实际长度保存,必须指定长度
FLOAT(M,D)单精度,4个字节。M=整数位+小数位,D=小数位(D<=M<=255,0<=D<=30),默认M+D<=6
DOUBLE(M,D)双精度,8个字节。D<=M<=255,0<=D<=30,默认M+D<=15
DECIMAL(M,D)高精度,M+2个字节。D<=M<=65,0<=D<=30,默认最大取值范围和DOUBLE一样
DATE日期类型,格式‘YYY-MM-DD’
BLOD二进制心事的长文本数据,最大可达4G
TEXT长文本数据,最大可达4G

2. 创建和管理数据库

2.1 创建数据库

  • 方式1:创建数据库

    sql>mysql">CREATE DATABASE 数据库名;
    
  • 方式2:创建数据库并指定字符集

    sql>mysql">CREATE DATABASE 数据库名 CHARACTER SET "uft8";
    
  • 方式3:判断数据库是否已经存在,不存在则创建(推荐)

    sql>mysql">CREATE DATABASE IF NOT EXISTS 数据库名;
    

    注意数据库不能改名。一些可视化工具可以改名,它是创建新库,然后把所有表复制到新库,再把旧库删掉完成的。

数据库创建完成之后,可以通过SHOW CREATE DATABASE 数据库名;,查看创建的数据库

2.2 使用数据库

sql>mysql">SHOW DATABASES;

在多个数据库之间切换

sql>mysql">USE 数据库名;
sql>mysql">SHOW DATABASE();
sql>mysql">SHOW TABLES FROM 数据库名;

2.3 修改数据库

修改数据库字符集

sql>mysql">ALTER DATABASE 数据库名 CHARACTER SET 字符集;	#比如 gbk、utf8
#查看默认字符集
SHOW VARIABLES LIKE '%character%';
#查看所有字符集
SHOW CHARSET;

2.4 删除数据库

  • 直接删除

    sql>mysql">DROP DATABASE 数据库名;
    
  • 如果数据库存在则删除,否则报一个警告(不会报错)

    sql>mysql">DROP DATABASE IF EXISTS 数据库名;
    

3.创建表

在 MySQL数据库管理系统中创建表通过SQL语句CREATE TABLE 来实现

3.1 创建方式1

自己指定字段和数据类型

语法:

sql>mysql">CREATE TABLE [IF NOT EXISTS] 表名(
	字段名 数据类型,
    字段名 数据类型,
    ...
    字段名 数据类型,
);

范例:

sql>mysql">CREATE TABLE myemp
(
    id INT COMMENT '员工编号',
    ename VARCHAR(20) COMMENT '员工名称',
    deptno INT COMMENT '所在部门编号',
    sal INT COMMENT '工资'
);

3.2 创建方式2

基于现有表创建新表

  • 基于现有表创建新表,同时导入数据

    sql>mysql">#单个表
    CREATE TABLE myemp1
    AS
    SELECT empno,ename,sal FROM emp;
    
    #多个表
    CREATE TABLE myemp2
    AS
    SELECT e.empno,e.ename,e.sal,d.dname 
    FROM emp e JOIN dept d
    ON e.deptno=d.deptno;
    
  • 基于现有表创建新表,只复制表结构,不导入数据

    sql>mysql">CREATE TABLE myemp3
    AS
    SELECT empno,ename,sal FROM emp WHERE 1 = 2;  # 1 != 2, 这样的意思结果就是:查询到空表
    

3.3 查看表结构

创建完表,如果需要查看一下表的结构,可以通过执行SQL语句 DESCRIBE来实现,其语法形式如下:

sql>mysql">DESC/DESCRIBE table_name;

DESC为DESCRIBE的简写形式,更为方便。


还有一种更详细查看表结构的语句:

sql>mysql">SHOW CREATE TABLE table_name;

4. 修改表

修改数据表前提是数据库中已经存在该表.

修改表指的是修改数据库中已经存在的数据表的结构。

4.1 修改数据表

4.1.1 修改表名

**方法一:**通过 ALTER TABLE 语句来修改表名,语法规则如下:

sql>mysql">ALTER TABLE <旧表名> RENAME [TO] <新表名>;

其中,TO 为可选参数,使用与否均不影响结果。

范例:

sql>mysql">ALTER TABLE myemp RENAME memp;
#结合 修改数据库
ALTER DATABASE my CHARACTER SET "utf8";

注意:只能修改单表名。

**方法二:**通过 RENAME TABLE 语句来修改表名,语法规则如下

sql>mysql">#注意别忘了 table
RENAME TABLE <旧表名> TO <新表名>[,旧表名2 TO 新表名2]

范例:

sql>mysql">RENAME memp TO myemp,myemp1 TO memp1;

注意:可以同时修改多个表的表名。

4.1.2 修改字符集

通过 ALTER TABLE 语句来实现表字符集的修改,语法规则如下:

sql>mysql">ALTER TABLE <表名> [DEFAULT] CHARACTER SET <字符集名> [DEFAULT] COLLATE <校对规则名>;

其中,DEFAULT 为可选参数,使用与否均不影响结果。

sql>mysql">ALTER TABLE myemp CHARACTER SET gb2312;

4.2 增加字段

对于表,可以看成是由列和行来构成的,其中“列”经常被称为字段。

4.2.1 在最后添加字段

在创建表之后如果要增加一列,需要使用下面的语句。

sql>mysql">ALTER TABLE table_name ADD 字段名 数据类型;

范例:

sql>mysql">ALTER TABLE myemp ADD job VARCHAR(10);
4.2.2 在第一个位置添加字段
sql>mysql">ALTER TABLE table_name ADD 字段名 数据类型 FIRST;
4.2.3 在指定位置添加字段

把字段1 添加到字段2之后

sql>mysql">ALTER TABLE table_name ADD 字段名1 数据类型 AFTER 字段名2;

4.3 删除字段

sql>mysql">ALTER TABLE table_name DROP 字段名;

4.4 修改字段

4.4.1 修改字段的数据类型
sql>mysql">ALTER TABLE table_name MODIFY 字段名 数据类型;
4.4.2 修改字段名
sql>mysql">ALTER TABLE table_name CHANGE 旧字段名 新字段名 数据类型;

如果数据类型和原来的数据类型一样,则只会修改字段名,如果数据类型不同,则同时会修改数据类型。

4.4.3 修改字段的顺序
sql>mysql">ALTER TABLE table_name MODIFY	字段名 数据类型 FIRST;
ALTER TABLE table_name MODIFY	字段名1 数据类型 AFTER 字段名2;	
  • 第一个语句:把字段移动到第一个
  • 第二个语句:把字段1 移动到字段2之后

5. 删除表

sql>mysql">DROP TABLE [IF EXISTS] table_name[,表1,表2...];

http://www.niftyadmin.cn/n/5862999.html

相关文章

Cursor提示词模板,开发GD32,C语言开发GD32 ARM单片机编程规范提示词 大厂风格代码规范

如果我让你开发的工程涉及到c语言的时候&#xff0c;请按照下面提示词执行。 C语言开发GD32 ARM单片机编程规范提示词 一、引言 本规范旨在为使用C语言开发GD32 ARM单片机的项目提供统一的编程标准&#xff0c;确保代码的可读性、可维护性、可靠性和高效性。规范涵盖代码风格…

基于EIDE插件,配置arm开发环境

参考文档: 这是什么? | Embedded IDE For VSCode 一、准备安装包 VSCodeUserSetup-x64-1.96.4.exe: (访问密码: 1666) ST-LINK官方驱动.zip: (访问密码: 1666) en.stm32cubemx-win-v6-12-0.zip: (访问密码: 1666) Keil.STM32F7xx_DFP.2.14.0.pack: (访问密码: 1666) STM32Cu…

图像处理:模拟色差的生成

图像处理&#xff1a;模拟色差的实战案例 在做瓷砖瑕疵检测的过程中&#xff0c;需要检测色差。但在实际生产环境中&#xff0c;瓷砖色差检测的数据量较少&#xff0c;无法直接获取足够的数据来训练和优化深度学习模型。于是就考虑通过人为生成色差数据的方式来扩充数据集&…

力扣hot100——LRU缓存(面试高频考题)

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -…

新书上线 |《零门槛AIGC应用实战——Serverless+AI 轻松玩转高频AIGC场景》免费下载

《零门槛AIGC应用实战——ServerlessAI 轻松玩转高频AIGC场景》电子书正式上线&#xff01;多种精选 AI 部署方案带你深入了解 ServerlessAI 最新趋势、AI 应用的架构设计与详细的部署教程等。函数计算 AI 技术解决方案助您一键上云&#xff0c;高效部署。 点击链接&#xff0c…

tauri2实现监听记住窗口大小变化,重启回复之前的窗口大小

要想实现记住窗口大小的功能&#xff0c;整体逻辑就是要监听窗口大小变化&#xff0c;将窗口大小保存下来&#xff0c;重启之后&#xff0c;读取保存的大小&#xff0c;然后恢复。这里可以使用rust层实现&#xff0c;也可以在前端实现。我这里就纯rust层实现了。 监听窗口变化…

UE5 编辑器辅助/加强 插件搜集

1. Actor Locker 地址&#xff1a;https://www.fab.com/listings/ec26ac5e-4720-467c-a3a6-b5103b6b74d0 使用说明&#xff1a;https://github.com/Gradess2019/ActorLocker 支持&#xff1a;5.0 – 5.5 简单的编辑器扩展。它允许你通过世界轮廓窗口/热键/上下文菜单在编辑器视…

centos9安装k8s集群

以下是基于CentOS Stream 9的Kubernetes 1.28.2完整安装流程&#xff08;containerd版&#xff09;&#xff1a; 一、系统初始化&#xff08;所有节点执行&#xff09; # 关闭防火墙 systemctl disable --now firewalld# 关闭SELinux sed -i "s/SELINUXenforcing/SELINU…