SQL 详解:DDL(数据定义语言)
DDL 用于创建、删除、修改数据库对象(库、表、索引等),核心关键字:CREATE、DROP、ALTER。
数据库操作
-- 创建数据库
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 ...)