侧边栏壁纸
博主头像
phphi

phphi's blog

  • 累计撰写 51 篇文章
  • 累计收到 0 条评论

Day37 - SQL详解之DDL

2026-4-24 / 0 评论 / 1 阅读

SQL 详解:DDL(数据定义语言)

DDL 用于创建、删除、修改数据库对象(库、表、索引等),核心关键字:CREATEDROPALTER

数据库操作

-- 创建数据库
CREATE DATABASE school DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 删除数据库
DROP DATABASE IF EXISTS school;

-- 使用数据库
USE school;

表操作

创建表

CREATE TABLE tb_college (
    col_id   INT PRIMARY KEY AUTO_INCREMENT,
    col_name VARCHAR(50) NOT NULL,
    col_intro VARCHAR(200)
);

主键与自增

-- 主键:唯一标识每行,可单一列或组合
col_id INT PRIMARY KEY,                  -- 单列主键

-- 复合主键
PRIMARY KEY (stu_no, course_id)         -- 多列组合

-- 自增:从1开始,每行+1
col_id INT AUTO_INCREMENT,

-- 唯一约束
col_code VARCHAR(20) UNIQUE NOT NULL,

外键约束

FOREIGN KEY (col_teacher_id) REFERENCES tb_teacher(teacher_id)
    ON DELETE SET NULL    -- 删除时置空
    ON UPDATE CASCADE     -- 更新时级联

完整性约束

col_name VARCHAR(20) NOT NULL,  -- 非空
col_code VARCHAR(20) UNIQUE,    -- 唯一
col_score TINYINT CHECK (col_score BETWEEN 0 AND 100),  -- 检查约束
col_reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,       -- 默认值

修改表结构

ALTER TABLE tb_student ADD col_phone VARCHAR(11);
ALTER TABLE tb_student DROP col_phone;
ALTER TABLE tb_student MODIFY col_phone CHAR(11);
ALTER TABLE tb_student ADD PRIMARY KEY(stu_no);
ALTER TABLE tb_student DROP PRIMARY KEY;

删除表

DROP TABLE IF EXISTS tb_student;

索引

-- 创建索引
CREATE INDEX idx_name ON tb_student(stu_name);

-- 唯一索引
CREATE UNIQUE INDEX idx_code ON tb_student(stu_code);

-- 删除索引
DROP INDEX idx_name ON tb_student;

提示EXPLAIN 可查看查询是否使用索引(EXPLAIN SELECT ...