MySQL 数据库操作指南:从数据库创建到数据操作

news2025/4/8 6:11:10

关键词:MySQL;数据库操作;DDL;DML

一、引言

MySQL 作为广泛应用的关系型数据库管理系统,对于开发人员和数据库管理员而言,熟练掌握其操作至关重要。本文章通过一系列 SQL 示例,详细阐述 MySQL 数据库的常用操作。

参考资料:黑马程序员

二、数据库的查询与创建

2.1 查询所有数据库

使用 SHOW DATABASES; 语句可查询当前 MySQL 实例中的所有数据库。此语句返回一个列表,包含已存在的数据库名称。例如:

SHOW DATABASES;

2.2 创建数据库

通过 CREATE DATABASE 语句创建新的数据库。例如,创建名为 db02 的数据库:

CREATE DATABASE if not extists db02;

if not exists :数据库不存在,则创建该数据库;如果存在则不创建 

2.3 使用数据库

use db01;

三、表结构定义(DDL - Data Definition Language)

3.1 创建表 - 基本语法

使用 CREATE TABLE 语句创建表,并定义表中的列及其属性。以下示例创建一个名为 tb_user 的表,包含 idusernamenameage 和 gender 列:

CREATE TABLE tb_user (
    id INT COMMENT 'ID, 唯一标识',
    username VARCHAR(20) COMMENT '用户名',
    name VARCHAR(10) COMMENT '姓名',
    age INT COMMENT '年龄',
    gender CHAR(1) COMMENT '性别'
) COMMENT '用户表';

数值类型

类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述
TINYINT1byte(-128,127)(0,255)小整数值
SMALLINT2bytes(-32768,32767)(0,65535)大整数值
MEDIUMINT3bytes(-8388608,8388607)(0,16777215)大整数值
INT/INTEGER4bytes(-2147483648,2147483647)(0,4294967295)大整数值
BIGINT8bytes(-2^63,2^63-1)(0,2^64-1)极大整数值
FLOAT4bytes(-3.402823466 E+38,3.402823466351 E+38)0 和 (1.175494351 E-38,3.402823466 E+38)单精度浮点数值
DOUBLE8bytes(-1.7976931348623157 E+308,1.7976931348623157 E+308)0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308)双精度浮点数值
DECIMAL依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度)的值小数值(精确定点数)

 

字符串类型

类型大小描述
CHAR0-255 bytes定长字符串(需要指定长度)
VARCHAR0-65535 bytes变长字符串(需要指定长度)
TINYBLOB0-255 bytes不超过255个字符的二进制数据
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

日期时间类型

类型大小范围格式描述
DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155YYYY年份值
DATETIME81000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳

 

3.2 创建表 - 基本语法(含约束)

在创建表时,可以为列添加约束条件,以确保数据的完整性。例如,为 tb_user 表添加主键、非空、唯一和默认值约束:

在MySQL数据库当中,提供了以下5种约束:

约束描述关键字
非空约束限制该字段值不能为nullnot null
唯一约束保证字段的所有数据都是唯一、不重复的unique
主键约束主键是一行数据的唯一标识,要求非空且唯一primary key
默认约束保存数据时,如果未指定该字段值,则采用默认值default
外键约束让两张表的数据建立连接,保证数据的一致性和完整性foreign key
CREATE TABLE tb_user (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID, 唯一标识',
    username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
    name VARCHAR(10) NOT NULL COMMENT '姓名',
    age INT COMMENT '年龄',
    gender CHAR(1) DEFAULT '男' COMMENT '性别'
) COMMENT '用户表';

3.3 创建表 tb_emp

除了纯 SQL 语句创建表,也可借助图形化工具创建表。以下为通过 SQL 语句创建 tb_emp 表,包含主键、唯一约束、默认值等多种约束:

CREATE TABLE tb_emp (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    username VARCHAR(20) NOT NULL COMMENT '用户名',
    password VARCHAR(32) DEFAULT '123456' NULL COMMENT '密码',
    name VARCHAR(10) NOT NULL COMMENT '姓名',
    gender TINYINT UNSIGNED NOT NULL COMMENT '性别, 1 男, 2 女',
    image VARCHAR(300) NULL COMMENT '图像url',
    job TINYINT UNSIGNED NULL COMMENT '职位, 1 班主任, 2 讲师, 3 学工主管, 4 教研主管',
    entrydate DATE NULL COMMENT '入职日期',
    create_time DATETIME NOT NULL COMMENT '创建时间',
    update_time DATETIME NOT NULL COMMENT '修改时间',
    CONSTRAINT tb_emp_username_uindex UNIQUE (username)
) COMMENT '员工表';

3.4 查看表结构

  • 查看当前数据库下的表:使用 SHOW TABLES; 语句查看当前数据库中所有表的名称:
SHOW TABLES;

  • 查看指定表结构:通过 DESC 语句查看指定表的详细结构,包括列名、数据类型、是否允许为空等信息。例如,查看 tb_emp 表结构:
DESC tb_emp;

  • 查看数据库的建表语句:使用 SHOW CREATE TABLE 语句查看创建指定表的完整 SQL 语句,包括表的所有定义和约束。例如,查看 tb_emp 表的建表语句:
SHOW CREATE TABLE tb_emp;

3.5 修改表结构

  • 添加字段:使用 ALTER TABLE...ADD 语句为表添加新字段。例如,为 tb_emp 表添加 qq 字段,类型为 VARCHAR(11)
ALTER TABLE tb_emp ADD qq VARCHAR(11) COMMENT 'QQ';

  • 修改字段类型:使用 ALTER TABLE...MODIFY 语句修改表中已有字段的类型。例如,将 tb_emp 表中 qq 字段的类型修改为 VARCHAR(13) 并命名为 qq_num
ALTER TABLE tb_emp MODIFY qq_num VARCHAR(13) COMMENT 'QQ';

  • 修改字段名及类型:使用 ALTER TABLE...CHANGE 语句修改字段名及类型。例如,将 tb_emp 表中 qq 字段修改为 qq_num,类型为 VARCHAR(13)
ALTER TABLE tb_emp CHANGE qq qq_num VARCHAR(13) COMMENT 'QQ';

  • 删除字段:使用 ALTER TABLE...DROP COLUMN 语句删除表中的字段。例如,删除 tb_emp 表中的 qq_num 字段:
ALTER TABLE tb_emp DROP COLUMN qq_num;

  • 修改表名:使用 RENAME TABLE 语句修改表的名称。例如,将 tb_emp 表名修改为 emp
RENAME TABLE tb_emp TO emp;

3.6 删除表结构

使用 DROP TABLE 语句删除表。为避免删除不存在的表导致错误,可使用 IF EXISTS 子句。例如,删除 tb_emp 表:

DROP TABLE IF EXISTS tb_emp;

四、数据操作语言(DML - Data Manipulation Language)

4.1 插入数据 - INSERT

  • 为指定字段插入值:使用 INSERT INTO...VALUES 语句为表中的指定字段插入数据。例如,为 tb_emp 表的 usernamenamegendercreate_time 和 update_time 字段插入值:
INSERT INTO tb_emp (username, name, gender, create_time, update_time) VALUES ('wuji', '张无忌', 1, NOW(), NOW());

  • 为所有字段插入值:为表中的所有字段插入数据时,需按表定义的字段顺序提供值。例如:
INSERT INTO tb_emp (id, username, password, name, gender, image, job, entrydate, create_time, update_time)
VALUES (NULL, 'zhiruo', '123', '周芷若', 2, '1.jpg', 1, '2010 - 01 - 01', NOW(), NOW());
-- 或者:
INSERT INTO tb_emp VALUES (NULL, 'zhiruo2', '123', '周芷若', 2, '1.jpg', 1, '2010 - 01 - 01', NOW(), NOW());

  • 批量插入数据:可一次性为表插入多条记录。例如,批量为 tb_emp 表的 usernamenamegendercreate_time 和 update_time 字段插入数据:
INSERT INTO tb_emp (username, name, gender, create_time, update_time) VALUES
('weifuwang', '韦一笑', 1, NOW(), NOW()), ('xieshiwang', '谢逊', 1, NOW(), NOW());

4.2 更新数据 - UPDATE

  • 更新单条记录:使用 UPDATE...SET 语句更新表中的数据,并通过 WHERE 子句指定更新条件。例如,将 tb_emp 表中 ID 为 1 的员工姓名更新为 张三 并更新 update_time
UPDATE tb_emp SET name = '张三', update_time = NOW() WHERE id = 1;

  • 更新多条记录:若不指定 WHERE 子句,则会更新表中的所有记录。例如,将 tb_emp 表中所有员工的入职日期更新为 2010 - 01 - 01 并更新 update_time
UPDATE tb_emp SET entrydate = '2010 - 01 - 01', update_time = NOW();

4.3 删除数据 - DELETE

  • 删除单条记录:使用 DELETE FROM...WHERE 语句删除表中的数据,并通过 WHERE 子句指定删除条件。例如,删除 tb_emp 表中 ID 为 1 的员工:
DELETE FROM tb_emp WHERE id = 1;
  • 删除所有记录:若不指定 WHERE 子句,则会删除表中的所有记录。例如,删除 tb_emp 表中的所有员工:
DELETE FROM tb_emp;

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

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

相关文章

【Linux】命令和权限

目录: 一、shell命令及运行原理 (一)什么是外壳 (二)为什么要有外壳 (三)外壳怎么工作的 二、Linux权限的概念 (一)Linux的文件类型 (二)L…

22.OpenCV轮廓匹配原理介绍与使用

OpenCV轮廓匹配原理介绍与使用 1. 轮廓匹配的基本概念 轮廓匹配(Contour Matching)是计算机视觉中的一种重要方法,主要用于比较两个轮廓的相似性。它广泛应用于目标识别、形状分析、手势识别等领域。 在 OpenCV 中,轮廓匹配主要…

深入解析AI绘画技术背后的人工智能

在当今数字艺术领域,AI绘画作为一种新兴艺术形式,正迅速吸引着越来越多的创作者与爱好者。它不仅推动了艺术创作的边界,同时也改变了我们对创作与美的理解。本文将深入探讨AI绘画所依赖的人工智能技术,并分析其背后的原理与应用。…

browser-use开源程序使 AI 代理可以访问网站,自动完成特定的指定任务,告诉您的计算机该做什么,它就会完成它。

一、软件介绍 文末提供程序和源码下载 browser-use开源程序使 AI 代理可以访问网站,自动完成特定的指定任务,浏览器使用是将AI代理与浏览器连接的最简单方法。告诉您的计算机该做什么,它就会完成它。 二、快速开始 使用 pip (Py…

java虚拟机---JVM

JVM JVM,也就是 Java 虚拟机,它最主要的作用就是对编译后的 Java 字节码文件逐行解释,翻译成机器码指令,并交给对应的操作系统去执行。 JVM 的其他特性有: JVM 可以自动管理内存,通过垃圾回收器回收不再…

2025数字中国初赛wp

一,取证与溯源 镜像文件解压密码:44216bed0e6960fa 1.运维人员误删除了一个重要的word文件,请通过数据恢复手段恢复该文件,文件内容即为答案。 先用R-stuido软件进行数据恢复 得到 打开重要文件.docx全选发现有一条空白的被选中…

c#和c++脚本解释器科学运算

说明: 我希望用c#和c写一个脚本解释器,用于科学运算 效果图: step1: c# C:\Users\wangrusheng\RiderProjects\WinFormsApp3\WinFormsApp3\Form1.cs using System; using System.Collections.Generic; using System.Data; using System.Tex…

青蛙吃虫--dp

1.dp数组有关元素--路长和次数 2.递推公式 3.遍历顺序--最终影响的是路长&#xff0c;在外面 其次次数遍历&#xff0c;即这次路长所有情况都更新 最后&#xff0c;遍历次数自然就要遍历跳长 4.max时时更新 dp版本 #include<bits/stdc.h> using namespace std; #def…

LINUX 5 cat du head tail wc 计算机拓扑结构 计算机网络 服务器 计算机硬件

计算机网络 计算机拓扑结构 计算机按性能指标分&#xff1a;巨型机、大型机、小型机、微型机。大型机、小型机安全稳定&#xff0c;小型机用于邮件服务器 Unix系统。按用途分&#xff1a;专用机、通用机 计算机网络&#xff1a;局域网‘、广域网 通信协议’ 计算机终端、客户端…

ModuleNotFoundError: No module named ‘pandas‘

在使用Python绘制散点图表的时候&#xff0c;运行程序报错&#xff0c;如图&#xff1a; 报错显示Python 环境中可能没有安装 pandas 库&#xff0c;执行pip list命令查看&#xff0c;果然没有安装pandas 库&#xff0c;如图&#xff1a; 执行命令&#xff1a;python -m pip in…

【教程】MacBook 安装 VSCode 并连接远程服务器

目录 需求步骤问题处理 需求 在 Mac 上安装 VSCode&#xff0c;并连接跳板机和服务器。 步骤 Step1&#xff1a;从VSCode官网&#xff08;https://code.visualstudio.com/download&#xff09;下载安装包&#xff1a; Step2&#xff1a;下载完成之后&#xff0c;直接双击就能…

Unet网络的Pytorch实现和matlab实现

文章目录 一、Unet网络简介1.1 输入图像1.2 编码器部分&#xff08;Contracting Path&#xff09;1.3 解码器部分&#xff08;Expanding Path&#xff09;1.4 最后一层&#xff08;输出&#xff09;1.5 跳跃连接&#xff08;Skip Connections&#xff09; 二、Unet网络的Pytorc…

【合新通信】相控阵雷达RFoF方案的应用

一、相控阵雷达为何需要RFoF&#xff1f; 核心需求驱动 分布式部署&#xff1a;相控阵雷达&#xff08;AESA/PESA&#xff09;的T/R模块需分散布局&#xff08;如舰载雷达阵面、卫星载荷&#xff09;&#xff0c;传统同轴电缆导致重量和损耗剧增。高频段挑战&#xff1a;X/Ku/…

原理图输出网表及调入

一、输出网表操作步骤 &#xff08;1&#xff09;选中.dsn文件&#xff0c;选者N或进入tools下拉列表选择Creat Netlists &#xff08;2&#xff09;导出网表后的文件 二、网表的导入 &#xff08;1&#xff09;执行菜单命令“File-Import-Logic/netlist”&#xff0c;将原理…

TDengine JAVA 语言连接器

简介 本节简介 TDengine 最重要且使用最多的连接器, 本节内容是以教科书式方式列出对外提供的接口及功能及使用过程中要注意的技术细节&#xff0c;大家可以收藏起来做为今后开发 TDengine 的参考资料。 taos-jdbcdriver 是 TDengine 的官方 Java 语言连接器&#xff0c;Java…

【NLP 55、实践 ⑬ LoRA完成NER任务】

目录 一、数据文件 二、模型配置文件 config.py 三、数据加载文件 loader.py 1.导入文件和类的定义 2.初始化 3.数据加载方法 代码运行流程 4.文本编码 / 解码方法    ① encode_sentence()&#xff1a; ② decode()&#xff1a; 代码运行流程 ③ padding()&#xff1a; 代码…

【蓝桥杯】Python大学A组第十五届省赛

1.填空题 1.1.拼正方形 问题描述 小蓝正在玩拼图游戏,他有个的方块和个的方块,他需要从中挑出一些来拼出一个正方形。 比如用个和个的方块可以拼出一个的正方形;用个的方块可以拼出一个的正方形。 请问小蓝能拼成的最大的正方形的边长为多少。 import math # 2*2的个数 a =…

小球反弹(蓝桥杯C语言)

有一长方形&#xff0c;长为 343720343720 单位长度&#xff0c;宽为 233333233333 单位长度。在其内部左上角顶点有一小球 (无视其体积)&#xff0c;其初速度如图所示且保持运动速率不变&#xff0c;分解到长宽两个方向上的速率之比为 dx:dy15:17dx:dy15:17。小球碰到长方形的…

HarmonyOS-ArkUI Ability进阶系列-UIAbility与各类Context

UIAbility及相关类关系 一个模块编译的时候会出一个HAP包&#xff0c; 每一个HAP包在运行时都对应一个AbilityStage。 AbilityStage持有一个AbilityStageContext一个APP&#xff0c; 有时候会有很多个HAP包&#xff0c; 至少一个。 一个APP运行时&#xff0c;对应的是我们的App…

剑指Offer(数据结构与算法面试题精讲)C++版——day4

剑指Offer&#xff08;数据结构与算法面试题精讲&#xff09;C版——day4 题目一&#xff1a;和为k的子数组题目二&#xff1a;0和1个数相同的子数组题目三&#xff1a;左右两边子数组的和相等 题目一&#xff1a;和为k的子数组 结合前面着重阐述的双指针法这一经典的算法技巧&…