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

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.dtcms.com/a/348601.html

相关文章:

  • 前端 vs 后端请求:核心差异与实战对比
  • Qt——网络通信(UDP/TCP/HTTP)
  • 【Unity开发】Unity核心学习(二)
  • PAT 1081 Rational Sum
  • 【机器学习】8 Logistic regression
  • Power BI切片器自定义顺序
  • 智能油脂润滑系统:给设备一份 “私人定制” 的保养方案
  • Linux 学习笔记 - 集群管理篇
  • 【大模型LLM学习】Data Agent学习笔记
  • C++算法学习专题:二分查找
  • Kubernetes部署Prometheus+Grafana 监控系统NFS存储方案
  • Socket some functions
  • 让机器人“想象”未来?VLN导航迎来“理解力”新升级
  • 每日算法刷题Day64:8.24:leetcode 堆6道题,用时2h30min
  • 解密 Spring Boot 自动配置:原理、流程与核心组件协同
  • 人形机器人——电子皮肤技术路线:压电式电子皮肤及一种超越现有电子皮肤NeuroDerm的设计
  • 深度学习:CUDA、PyTorch下载安装
  • Leetcode 3659. Partition Array Into K-Distinct Groups
  • sqlite创建数据库,创建表,插入数据,查询数据的C++ demo
  • 商密保护迷思:经营秘密到底需不需要鉴定?
  • 对称二叉树
  • 机械学习综合练习项目
  • jar包项目自启动设置ubuntu
  • [论文阅读] 软件工程 | GPS算法:用“路径摘要”当向导,软件模型检测从此告别“瞎找bug”
  • 服务器硬件电路设计之 SPI 问答(四):3 线 SPI、Dual SPI 与 Qual SPI 的奥秘
  • 春秋云镜 Hospital
  • Vue 3多语言应用开发实战:vue-i18n深度解析与最佳实践
  • 线程包括哪些状态?线程状态之间是如何变化的?
  • yggjs_rlayout框架v0.1.2使用教程 02 TechLayout 布局组件
  • 拿AI下围棋 -- 开源项目leela-zero