当前位置:首页 > 技术 > 正文内容

MySQL数据库SQL语句分类与操作详解

访客 技术 2026年5月26日 3

SQL语言分类概述

SQL(Structured Query Language)是用于管理关系型数据库的标准语言,根据功能可分为以下四类:

类别 全称 用途说明
DDL Data Definition Language 用于定义数据库对象,如创建、修改或删除数据库、表和字段。
DML Data Manipulation Language 用于对表中数据进行增删改操作。
DQL Data Query Language 用于从表中查询记录,是最常用的SQL子集。
DCL Data Control Language 用于管理用户权限和访问控制,如创建用户、授予权限等。

DDL:数据定义语言

数据库操作

  • SHOW DATABASES; —— 查看当前服务器中所有数据库。
  • SELECT DATABASE(); —— 查询当前正在使用的数据库。
  • CREATE DATABASE IF NOT EXISTS db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; —— 创建新数据库,支持指定字符集与排序规则。
  • DROP DATABASE IF EXISTS db_name; —— 删除指定数据库。
  • USE db_name; —— 切换到目标数据库进行后续操作。

表操作

查看表信息

  • SHOW TABLES; —— 显示当前数据库中的所有表。
  • DESC table_name; —— 查看表结构,包括字段名、类型、是否可空等。
  • SHOW CREATE TABLE table_name; —— 查看建表时的完整语句,包含约束与注释。

创建表

CREATE TABLE table_name (
    column1 datatype [COMMENT 'comment'],
    column2 datatype [COMMENT 'comment'],
    ...
) COMMENT 'table description';

示例:

CREATE TABLE users (
    user_id INT COMMENT '用户唯一标识',
    username VARCHAR(50) COMMENT '用户名',
    age TINYINT UNSIGNED COMMENT '年龄(非负)',
    gender CHAR(1) COMMENT '性别(男/女)'
) COMMENT '用户信息表';

修改表结构

  • 添加字段ALTER TABLE table_name ADD COLUMN col_name type [COMMENT 'description'];
  • 修改字段类型ALTER TABLE table_name MODIFY COLUMN col_name new_type;
  • 重命名字段ALTER TABLE table_name CHANGE COLUMN old_name new_name type [COMMENT '...'];
  • 重命名表ALTER TABLE old_name RENAME TO new_name;

删除表

  • DROP TABLE IF EXISTS table_name; —— 删除表结构及数据。
  • TRUNCATE TABLE table_name; —— 清空表内容,保留表结构,执行效率高于DELETE。

常用数据类型概览

整数类型

类型 大小(字节) 有符号范围 无符号范围 适用场景
TINYINT 1 -128 到 127 0 到 255 小数值,如状态码、等级
SMALLINT 2 -32,768 到 32,767 0 到 65,535 中小型数值,如数量统计
MEDIUMINT 3 -8.3M 到 8.3M 0 到 16.7M 中等规模数据
INT / INTEGER 4 -2B 到 2B 0 到 4.2B 标准整数,广泛使用
BIGINT 8 -9.2E18 到 9.2E18 0 到 1.8E19 大数值,如日志ID、时间戳

浮点与定点类型

类型 大小 精度特点 典型用途
FLOAT 4 字节 单精度,约7位有效数字 一般数值计算
DOUBLE 8 字节 双精度,约15位有效数字 高精度数学运算
DECIMAL(M,D) 可变 精确值,不丢失精度 金额、财务数据

说明: DECIMAL(10,2) 表示总共10位数字,其中2位为小数,适用于需要精确计算的场景。

字符串与文本类型

类型 最大长度 特点
CHAR(n) 255 bytes 定长存储,不足补空格,适合固定长度数据
VARCHAR(n) 65,535 bytes 变长存储,节省空间,推荐用于可变长度文本
TINYTEXT / TINYBLOB 255 bytes 短文本或二进制数据
TEXT / BLOB 65,535 bytes 普通长文本或文件内容
MEDIUMTEXT / MEDIUMBLOB 16MB 中等长度内容
LONGTEXT / LONGBLOB 4GB 超大文本或文件存储

日期与时间类型

类型 大小 范围 格式 用途
DATE 3 bytes 1000-01-01 至 9999-12-31 YYYY-MM-DD 仅存储日期,如生日、入职日
TIME 3 bytes -838:59:59 至 838:59:59 HH:MM:SS 表示时间段或时分秒
YEAR 1 byte 1901 至 2155 YYYY 年份字段,如生产年份
DATETIME 8 bytes 1000-01-01 00:00:00 至 9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 完整时间记录,含日期与时间
TIMESTAMP 4 bytes 1970-01-01 00:00:01 至 2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 记录事件发生时间,受时区影响

DML:数据操作语言

插入数据

  • INSERT INTO table_name (col1, col2) VALUES (val1, val2); —— 指定字段插入。
  • INSERT INTO table_name VALUES (val1, val2, ...); —— 全字段插入,需按顺序提供所有值。
  • INSERT INTO table_name VALUES (...), (...), ...; —— 批量插入多条记录。

更新数据

UPDATE table_name 
SET column1 = value1, column2 = value2 
WHERE condition;

注意: 忘记WHERE子句将导致整张表被更新。

删除数据

DELETE FROM table_name WHERE condition;

注意: 该语句不会删除列本身,若要清空数据但保留结构,应使用TRUNCATE

DQL:数据查询语言

基本语法结构

SELECT 
    columns
FROM 
    tables
[WHERE conditions]
[GROUP BY group_columns]
[HAVING group_conditions]
[ORDER BY sort_columns]
[LIMIT limit_count];

常见查询方式

  • SELECT name, workno, age FROM emp; —— 查询特定字段。
  • SELECT * FROM emp; —— 查询全部字段。
  • SELECT DISTINCT workaddress FROM emp; —— 去除重复的工作地址。
  • SELECT name AS '姓名', workno AS '工号' FROM emp; —— 使用别名提升可读性。

高级查询功能

  • 条件筛选:使用WHERE限制返回行。
  • 聚合函数:如COUNT()MAX()MIN()AVG()SUM()
  • 分组查询:结合GROUP BYHAVING实现按组统计。
  • 排序输出ORDER BY age DESC按年龄降序排列。
  • 分页处理LIMIT 0, 10表示跳过前0条,取10条数据。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。