SQL关键字三分钟入门: 表结构管理与分区设计。(ALTER、MODIFY、CHANGE、DEFAULT、VALUES、LESS THAN、RANGE)

前面我们已经学习了如何查询数据 (SELECT)、筛选数据 (WHERE)等操作。现在我们要进入数据库的另一个重要领域 ------ 表结构管理与分区设计。

本文带你快速认识以下关键字:

  • ✅ ALTER
  • ✅ MODIFY
  • ✅ CHANGE
  • ✅ DEFAULT
  • ✅ VALUES
  • ✅ LESS THAN
  • ✅ RANGE

一、ALTER:修改表结构的核心命令

基本作用

用于修改已有表的结构,比如添加字段、删除字段、重命名表等。

示例:

sql 复制代码
-- 添加新列
ALTER TABLE users ADD COLUMN birth_date DATE;

-- 删除列
ALTER TABLE users DROP COLUMN phone;

-- 重命名表
ALTER TABLE users RENAME TO user_accounts;

二、MODIFY:修改列的定义

基本作用

用于更改某个字段的数据类型或属性,但不能重命名字段名。

示例:

sql 复制代码
-- 修改 email 字段为 VARCHAR(150),并设置非空
ALTER TABLE users MODIFY email VARCHAR(150) NOT NULL;

三、CHANGE:修改列名和定义

基本作用

与 MODIFY 类似,但它还可以重命名字段名。

示例:

sql 复制代码
-- 将字段 old_name 改名为 new_name,并改变类型
ALTER TABLE users CHANGE old_name new_name VARCHAR(100);

四、DEFAULT:设定默认值

基本作用

为字段设置一个默认值,当插入数据时未指定该字段值时,自动使用默认值。

示例:

sql 复制代码
-- 创建表时设置默认值
CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    status VARCHAR(20) DEFAULT 'pending'
);

-- 修改现有字段的默认值
ALTER TABLE orders MODIFY status VARCHAR(20) DEFAULT 'completed';

五、VALUES:插入数据的核心语法

基本作用

用于 INSERT INTO 语句中,指定要插入的具体值。

示例:

sql 复制代码
-- 插入一行数据
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');

-- 插入多行数据
INSERT INTO users (name, email) VALUES
('李四', 'lisi@example.com'),
('王五', 'wangwu@example.com');

六、LESS THAN:常用于范围分区

基本作用

用于定义分区规则中的"小于某值"的边界条件,常见于 RANGE 分区。

示例:

sql 复制代码
CREATE TABLE sales (
    id INT,
    amount DECIMAL(10,2)
) PARTITION BY RANGE (amount) (
    PARTITION p0 VALUES LESS THAN (1000),
    PARTITION p1 VALUES LESS THAN (5000),
    PARTITION p2 VALUES LESS THAN MAXVALUE
);

在这个例子中,销售金额小于1000的数据会存储在 p0 分区中,以此类推。


七、RANGE:按范围进行分区

基本作用

用于创建按某一字段值的范围进行分区的逻辑,提升大数据量下的查询效率。

示例:

sql 复制代码
CREATE TABLE employees (
    id INT,
    salary INT
) PARTITION BY RANGE (salary) (
    PARTITION low_salary VALUES LESS THAN (3000),
    PARTITION mid_salary VALUES LESS THAN (8000),
    PARTITION high_salary VALUES LESS THAN MAXVALUE
);

这样,工资不同范围的员工会被分配到不同的分区中,便于管理与查询优化。


八、总结对比表

关键字 用途 是否影响数据 示例
ALTER 修改表结构 否 ALTER TABLE users ADD COLUMN...
MODIFY 修改字段定义(不改名) 否 MODIFY email VARCHAR(150)
CHANGE 修改字段定义 + 可以重命名字段名 否 CHANGE old_name new_name ...
DEFAULT 设置字段默认值 否 VARCHAR(100) DEFAULT 'abc'
VALUES 插入具体数据 是 VALUES ('A', 'B')
LESS THAN 定义分区的范围边界 否 VALUES LESS THAN (1000)
RANGE 按字段值范围划分分区 否 PARTITION BY RANGE (salary)
相关推荐
2401_891409261 小时前
量化数据13:港股分钟K线、Level2逐笔Tick、十档盘口和港股通历史数据的批量提取
数据库
w-w0w-w8 小时前
SQL注入
网络·数据库·sql
tianyuanwo8 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
一条泥憨鱼8 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
IvorySQL8 小时前
深入 PostgreSQL WAL:从崩溃恢复到逻辑复制
数据库·postgresql
幽灵诶9 小时前
Mysql(基于测试的学习)
数据库·mysql
砚底藏山河10 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
宇宙无敌暴龙战士66610 小时前
MySQL 8 库表操作学习笔记:SQL 基础、库表管理、约束与用户授权全流程
数据库·sql·mysql·学习笔记·后端开发
猿究院_夏燊10 小时前
MySQL 的四种隔离级别
java·数据库·mysql
say_fall11 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++