sql 之 DDL 学习

1. 学习背景

在 DBeaver - 数据库表 - 属性 - DDL 中存放数据表的每个字段说明、唯一键、主键、分区等信息
定义了数据在数据库中的结构、关系以及权限

2. 数据定义语言(DDL)定义

DDL全称是Data Definition Language,即数据定义语言,定义语言就是定义关系模式、删除关系、修改关系模式以及创建数据库中的各种对象,比如表、聚簇、索引、视图、函数、存储过程和触发器等等。
数据定义语言是由SQL语言集中负责数据结构定义与数据库对象定义的语言,并且由CREATE、ALTER、DROP和TRUNCATE四个语法组成。

  • create,创建,用于创建数据库中的表。
  • alter,更改,用于在已有的表中添加、修改或删除列。
  • drop,删除,删除索引、表和数据库。可以回滚。
  • truncate,清空表或者说是截断表,不会删除表。不可以回滚。

备注:delete,删除,但是它是DML语句,可回滚。会走事务,执行时会触发trigger。
从执行速度上来说,drop > truncate >> DELETE

3. PARTITION 分区

对数据进行分区

3.1. 具体的sql语句

  • 创建表的时候,添加分区
CREATE TABLE `test`.`test_pa`(
  `id` int(11) NOT NULL,
  `t` date NOT NULL
<think>好的,用户之前让我拓展教学中的DDL案例,现在问的是SQL基础学习里的DDL。我需要确认用户的需求是否转变了领域,从教学管理中的截止日期转到数据库的DDL。 首先,用户可能刚开始学习SQL,对DDL这个术语不太清楚。在SQL中,DDL指的是数据定义语言,用于定义和修改数据库结构。需要解释清楚DDL的全称、作用以及常用命令,比如CREATE、ALTER、DROP等。 然后,用户可能希望了解实际应用的例子,所以需要给出具体的SQL语句示例,比如创建表、修改表结构、删除表等。同时,要区分DDL和DML的不同,避免混淆。 还需要注意用户可能存在的常见问题,比如执行DDL后的不可逆性,或者不同数据库系统的语法差异。这时候要提醒注意事项,帮助用户避免错误。 最后,总结DDL的重要性,强调它在数据库管理中的基础作用,帮助用户巩固知识点。确保回答结构清晰,步骤明确,案例实用,符合用户的学习需求。</think>以下是针对SQL基础学习中**DDL(Data Definition Language,数据定义语言)**的详细介绍与案例解析: --- ### 一、DDL的定义与作用 **DDL** 是SQL中用于**定义和管理数据库结构**的语言,核心功能包括: - 创建、修改、删除数据库对象(如表、索引、视图等) - 定义数据存储结构(如字段类型、约束关系) - 与**DML(数据操作语言,如INSERT/UPDATE)**互补,DML操作数据,DDL操作结构 --- ### 二、DDL核心命令与语法案例 #### 1. **CREATE:创建对象** - **创建数据库** ```sql CREATE DATABASE SchoolDB; ``` - **创建表**(定义字段、主键、约束) ```sql CREATE TABLE Students ( StudentID INT PRIMARY KEY, Name VARCHAR(50) NOT NULL, Age INT CHECK (Age >= 18), EnrollmentDate DATE DEFAULT CURRENT_DATE ); ``` - **关键元素**: - `PRIMARY KEY`:主键约束 - `CHECK`:字段值校验 - `DEFAULT`:默认值 #### 2. **ALTER:修改结构** - **新增字段** ```sql ALTER TABLE Students ADD Email VARCHAR(100); ``` - **修改字段类型** ```sql ALTER TABLE Students ALTER COLUMN Age SMALLINT; ``` - **添加外键约束** ```sql ALTER TABLE Scores ADD CONSTRAINT FK_StudentID FOREIGN KEY (StudentID) REFERENCES Students(StudentID); ``` #### 3. **DROP:删除对象** - **删除表** ```sql DROP TABLE Students; ``` - **删除数据库** ```sql DROP DATABASE SchoolDB; ``` #### 4. **TRUNCATE:清空表数据(保留结构)** ```sql TRUNCATE TABLE Students; -- 快速清空,比DELETE更高效 ``` --- ### 三、DDL与DML的核心区别 | **特性** | DDL | DML(如SELECT/INSERT) | |----------------|------------------------------|-----------------------------| | **操作对象** | 数据库结构(表、索引等) | 数据(记录) | | **事务控制** | 自动提交,不可回滚 | 可配合事务(COMMIT/ROLLBACK)| | **执行速度** | 较慢(需修改元数据) | 较快(仅操作数据) | --- ### 四、实际应用场景案例 #### 场景1:电商平台搭建 - **需求**:创建商品表和订单表,包含关联关系 - **DDL实现**: ```sql CREATE TABLE Products ( ProductID INT PRIMARY KEY, Name VARCHAR(100) NOT NULL, Price DECIMAL(10,2) CHECK (Price > 0) ); CREATE TABLE Orders ( OrderID INT PRIMARY KEY, ProductID INT, Quantity INT, FOREIGN KEY (ProductID) REFERENCES Products(ProductID) ); ``` #### 场景2:数据库结构优化 - **需求**:为“用户表”添加索引以加速查询 ```sql CREATE INDEX idx_user_email ON Users(Email); -- 在Email字段创建索引 ``` --- ### 五、注意事项 1. **谨慎使用DROP**:删除操作不可逆,需提前备份(如`BACKUP DATABASE`)。 2. **字段类型匹配**:不同数据库(MySQL/Oracle/SQL Server)的字段类型可能不同。 3. **权限控制**:DDL通常需要管理员权限(如`GRANT CREATE TABLE TO user1`)。 --- ### 总结 DDL是数据库设计的基石,通过`CREATE/ALTER/DROP`等命令定义数据的“容器规则”。掌握DDL后,可进一步结合DML(数据操作)和DQL(数据查询)构建完整的数据管理系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值