当前位置: 首页 > ops >正文

MYSQL(DDL)

目录

  • 一、DDL:数据定义语言
    • 1. 数据库 (Database) 操作
      • 创建数据库 (CREATE DATABASE)
      • 修改数据库 (ALTER DATABASE)
      • 删除数据库 (DROP DATABASE) 谨慎使用
      • 选择/使用数据库 (USE)
    • 2. 表 (Table) 操作
      • 创建表 (CREATE TABLE)
      • 修改表 (ALTER TABLE)
    • 3. 索引 (Index) 操作
      • 创建索引 (CREATE INDEX)
      • 删除索引 (DROP INDEX)
    • 4. 视图 (View) 操作
      • 创建视图 (CREATE VIEW)
      • 查看视图 (CREATE VIEW)
      • 修改视图 (ALTER VIEW)
      • 删除视图 (DROP VIEW)

一、DDL:数据定义语言

核心概念:DDL 语句用于定义或修改数据库的结构(Schema),而不是其中的数据。执行 DDL 语句通常会自动提交当前事务(即立即生效)。

1. 数据库 (Database) 操作

创建数据库 (CREATE DATABASE)

-- 最基本语法
CREATE DATABASE mydb;-- 指定字符集和排序规则(推荐,避免乱码)
CREATE DATABASE mydb 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_bin;

**CHARACTER SET:**指定数据库默认的字符编码。utf8mb4 是现在的主流选择,因为它支持完整的 Unicode(包括表情符号)。

**COLLATE:**指定字符串比较和排序的规则。utf8mb4_bin 是基于 Unicode 标准的排序规则,比较准确。

修改数据库 (ALTER DATABASE)

-- 修改数据库的默认字符集和排序规则
ALTER DATABASE mydb 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

主要用于修改数据库的全局属性,如字符集。注意: 修改不会影响已存在的表,只会影响后续新创建的表。
在这里插入图片描述

删除数据库 (DROP DATABASE) 谨慎使用

-- 删除数据库(谨慎使用!该操作会删除库中所有数据和表)
DROP DATABASE mydb;-- 先判断数据库是否存在,再删除(更安全)
DROP DATABASE IF EXISTS mydb;

**警告:**此操作不可逆,会直接删除整个数据库及其所有对象。

选择/使用数据库 (USE)

-- 选择要操作的数据库
USE mydb;

2. 表 (Table) 操作

创建表 (CREATE TABLE)

-- 基本语法
CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,       -- 主键,自增长username VARCHAR(50) NOT NULL UNIQUE,    -- 可变长字符串,非空且唯一password CHAR(60) NOT NULL,              -- 固定长度字符串(常用于加密后的密码)email VARCHAR(100),age TINYINT UNSIGNED,                    -- 无符号小整数created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- 默认值为当前时间is_active BOOLEAN DEFAULT TRUE           -- 布尔类型,实际上是TINYINT(1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;     -- 指定存储引擎和字符集

在这里插入图片描述

修改表 (ALTER TABLE)

添加列 (ADD COLUMN)alter table users add column sex char(1) after is_active; -- 指定新列的位置

在这里插入图片描述

修改列定义 (MODIFY COLUMN)alter table users modify column sex char(20); -- 增大邮箱字段的长度

在这里插入图片描述

重命名列 (CHANGE COLUMN)ALTER TABLE users 
CHANGE COLUMN is_active status BOOLEAN DEFAULT TRUE; -- 修改列名和定义

在这里插入图片描述

删除列 (DROP COLUMN)ALTER TABLE users 
DROP COLUMN age;
添加约束 (ADD CONSTRAINT)-- 添加外键约束
ALTER TABLE orders 
ADD CONSTRAINT fk_orders_user_id 
FOREIGN KEY (user_id) REFERENCES users(id);-- 添加唯一约束
ALTER TABLE users 
ADD CONSTRAINT uk_users_email UNIQUE (email);
添加/删除索引ALTER TABLE users ADD INDEX idx_username (username); -- 添加普通索引
ALTER TABLE users DROP INDEX idx_username;       

3. 索引 (Index) 操作

创建索引 (CREATE INDEX)

-- 在现有表上创建索引
CREATE INDEX idx_email ON users(email);         -- 普通索引
CREATE UNIQUE INDEX uk_username ON users(username); -- 唯一索引

删除索引 (DROP INDEX)

-- 删除索引
DROP INDEX idx_email ON users;

4. 视图 (View) 操作

视图是将数据库中查询得到的数据作为一张新的表,用来操作,虚拟表。
视图是一个虚拟表,其内容由查询定义。

创建视图 (CREATE VIEW)

-- 创建一个视图,隐藏了密码等敏感信息
CREATE VIEW user_profile AS
SELECT id, username, email, created_at, status
FROM users;

查看视图 (CREATE VIEW)

SHOW FULL TABLES WHERE Table_type = 'VIEW';

修改视图 (ALTER VIEW)

-- 修改视图定义
ALTER VIEW user_profile AS
SELECT id, username, email, created_at, status, phone_number
FROM users;

删除视图 (DROP VIEW)

DROP VIEW IF EXISTS user_profile;
http://www.xdnf.cn/news/18642.html

相关文章:

  • 算法:驱动智能社会的核心引擎
  • OpenIM应用机器人自动应答
  • Zabbix 7.0中文乱码矫正
  • AI产品经理面试宝典第75天:Agentic RAG系统优化策略面试题实战解析
  • 08-系统能力调用与权限管理
  • BERT(Bidirectional Encoder Representations from Transformers)模型详解
  • 【RAGFlow代码详解-1】概述
  • 【Android】从一个AndroidRuntime看类的加载
  • 结构化智能编程:用树形向量存储重构AI代码理解范式
  • 第16届蓝桥杯C++中高级选拔赛(STEMA)2025年4月真题
  • More Effective C++ 条款05: 谨慎定义类型转换函数
  • 【Flex SerialPort】一个基于Qt6的支持自定义按键指令的串口工具
  • Kubernetes保姆级教学
  • centos搭建gitlab服务器
  • 【贪心算法】day2
  • 邮箱创建时间打标与自动删除功能设计思路
  • 13种常见机器学习算法面试总结(含问题与优质回答)
  • MySQL视图有什么用?一文读懂虚拟表的六大核心价值
  • String的最大长度剖析
  • 港口集装箱编号识别误识率↓79%!陌讯多模态融合算法落地优化
  • docker 镜像问题(解决了)
  • 第二重境:视角切换——用心灵的望远镜,看见问题的全局
  • 基于 Redis + JWT 的跨系统身份共享方案
  • Vue2+Vue3前端开发笔记合集
  • 【运维进阶】case、for、while、until语句大合集
  • VSCode+Qt+CMake详细地讲解
  • 嵌入式系统bringup通用流程
  • halcon(一)一维码解码
  • 目标检测数据集 第007期-基于yolo标注格式的茶叶病害检测数据集(含免费分享)
  • MATLAB 入门:从变量定义到基础绘图的完整上手指南