数据库系统 第5节 数据定义语言

3. 数据定义语言 (DDL)

数据定义语言 (DDL) 是一组用于定义数据库结构的SQL命令。DDL主要用于创建、修改和删除数据库对象,如表、视图、索引等。DDL主要包括以下几种操作:

CREATE

定义 : CREATE 语句用于创建新的数据库对象,如表、视图、存储过程等。

语法:

sql 复制代码
CREATE [TABLE | VIEW | INDEX | DATABASE | ...] object_name (definition [, definition] ...);
  • [TABLE | VIEW | INDEX | DATABASE | ...]: 指定要创建的对象类型。
  • object_name: 要创建的对象的名称。
  • (definition [, definition] ... ): 对象的定义,包括列名、数据类型、约束等。

案例:

  • 创建表
sql 复制代码
CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    Name VARCHAR(100) NOT NULL,
    Address VARCHAR(200),
    Phone VARCHAR(20)
);
  • 创建视图
sql 复制代码
CREATE VIEW CustomerSummary AS
SELECT CustomerID, Name, COUNT(*) AS NumberOfOrders
FROM Orders
GROUP BY CustomerID, Name;
ALTER

定义 : ALTER 语句用于修改已有的数据库对象,如添加或删除列、更改列的数据类型、添加或删除约束等。

语法:

sql 复制代码
ALTER [TABLE | VIEW | INDEX | DATABASE | ...] object_name [alteration [, alteration] ...];
  • [TABLE | VIEW | INDEX | DATABASE | ...]: 指定要修改的对象类型。
  • object_name: 要修改的对象的名称。
  • [alteration [, alteration] ...]: 修改操作,如添加列、删除列等。

案例:

  • 修改表
sql 复制代码
ALTER TABLE Customers
ADD Email VARCHAR(100);
  • 修改视图
sql 复制代码
ALTER VIEW CustomerSummary AS
SELECT CustomerID, Name, COUNT(*) AS NumberOfOrders, MAX(OrderDate) AS LastOrderDate
FROM Orders
GROUP BY CustomerID, Name;
DROP

定义 : DROP 语句用于删除数据库对象,如表、视图、存储过程等。

语法:

sql 复制代码
DROP [TABLE | VIEW | INDEX | DATABASE | ...] object_name [, object_name] ...;
  • [TABLE | VIEW | INDEX | DATABASE | ...]: 指定要删除的对象类型。
  • object_name: 要删除的对象的名称。

案例:

  • 删除表
sql 复制代码
DROP TABLE Customers;
  • 删除视图
sql 复制代码
DROP VIEW CustomerSummary;

示例结果

CREATE 示例
  • 创建表
sql 复制代码
CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    Name VARCHAR(100) NOT NULL,
    Address VARCHAR(200),
    Phone VARCHAR(20)
);
ALTER 示例
  • 修改表
sql 复制代码
ALTER TABLE Customers
ADD Email VARCHAR(100);
DROP 示例
  • 删除表
sql 复制代码
DROP TABLE Customers;

总结

通过这些基本的DDL操作,你可以有效地管理和定义数据库中的结构。CREATE 语句用于创建新的数据库对象,ALTER 语句用于修改现有的数据库对象,而 DROP 语句用于删除不再需要的数据库对象。这些操作对于数据库设计和维护至关重要。

这次我们将创建一个简单的在线图书馆管理系统。

案例:在线图书馆管理系统

实体和属性
  • 书籍 (Books)

    • 书籍ID (BookID)
    • 标题 (Title)
    • 作者 (Author)
    • 出版社 (Publisher)
    • 出版日期 (PublicationDate)
  • 借阅记录 (Loans)

    • 借阅ID (LoanID)
    • 书籍ID (BookID)
    • 读者ID (ReaderID)
    • 借阅日期 (LoanDate)
    • 返还日期 (ReturnDate)
  • 读者 (Readers)

    • 读者ID (ReaderID)
    • 姓名 (Name)
    • 电话 (Phone)
    • 邮箱 (Email)

关系表 (Tables)

书籍表 (Books)
BookID Title Author Publisher PublicationDate
1 The Catcher in the Rye J.D. Salinger Little, Brown and Co. 1951-07-16
2 To Kill a Mockingbird Harper Lee J.B. Lippincott & Co. 1960-07-11
... ... ... ... ...
借阅记录表 (Loans)
LoanID BookID ReaderID LoanDate ReturnDate
1001 1 1001 2024-08-01 2024-08-15
1002 2 1002 2024-08-05 2024-08-20
... ... ... ... ...
读者表 (Readers)
ReaderID Name Phone Email
1001 Alice (123) 456-7890 alice@example.com
1002 Bob (987) 654-3210 bob@example.com
... ... ... ...

数据定义语言 (DDL)

CREATE
  • 创建 Books
sql 复制代码
CREATE TABLE Books (
    BookID INT PRIMARY KEY,
    Title VARCHAR(100) NOT NULL,
    Author VARCHAR(100) NOT NULL,
    Publisher VARCHAR(100) NOT NULL,
    PublicationDate DATE NOT NULL
);
  • 创建 Loans
sql 复制代码
CREATE TABLE Loans (
    LoanID INT PRIMARY KEY,
    BookID INT NOT NULL,
    ReaderID INT NOT NULL,
    LoanDate DATE NOT NULL,
    ReturnDate DATE,
    FOREIGN KEY (BookID) REFERENCES Books(BookID),
    FOREIGN KEY (ReaderID) REFERENCES Readers(ReaderID)
);
  • 创建 Readers
sql 复制代码
CREATE TABLE Readers (
    ReaderID INT PRIMARY KEY,
    Name VARCHAR(100) NOT NULL,
    Phone VARCHAR(20) NOT NULL,
    Email VARCHAR(100) NOT NULL
);
ALTER
  • Readers 表中添加一个新列 Address
sql 复制代码
ALTER TABLE Readers
ADD Address VARCHAR(200);
DROP
  • 删除 Loans
sql 复制代码
DROP TABLE Loans;

示例结果

CREATE 示例
  • 创建 Books
sql 复制代码
CREATE TABLE Books (
    BookID INT PRIMARY KEY,
    Title VARCHAR(100) NOT NULL,
    Author VARCHAR(100) NOT NULL,
    Publisher VARCHAR(100) NOT NULL,
    PublicationDate DATE NOT NULL
);
ALTER 示例
  • Readers 表中添加一个新列 Address
sql 复制代码
ALTER TABLE Readers
ADD Address VARCHAR(200);
DROP 示例
  • 删除 Loans
sql 复制代码
DROP TABLE Loans;

SQL 查询示例

1. 创建 Books
sql 复制代码
CREATE TABLE Books (
    BookID INT PRIMARY KEY,
    Title VARCHAR(100) NOT NULL,
    Author VARCHAR(100) NOT NULL,
    Publisher VARCHAR(100) NOT NULL,
    PublicationDate DATE NOT NULL
);
2. 创建 Loans
sql 复制代码
CREATE TABLE Loans (
    LoanID INT PRIMARY KEY,
    BookID INT NOT NULL,
    ReaderID INT NOT NULL,
    LoanDate DATE NOT NULL,
    ReturnDate DATE,
    FOREIGN KEY (BookID) REFERENCES Books(BookID),
    FOREIGN KEY (ReaderID) REFERENCES Readers(ReaderID)
);
3. 创建 Readers
sql 复制代码
CREATE TABLE Readers (
    ReaderID INT PRIMARY KEY,
    Name VARCHAR(100) NOT NULL,
    Phone VARCHAR(20) NOT NULL,
    Email VARCHAR(100) NOT NULL
);
4. Readers 表中添加一个新列 Address
sql 复制代码
ALTER TABLE Readers
ADD Address VARCHAR(200);
5. 删除 Loans
sql 复制代码
DROP TABLE Loans;

示例结果

1. 创建 Books
  • 创建表 Books
BookID Title Author Publisher PublicationDate
1 The Catcher in the Rye J.D. Salinger Little, Brown and Co. 1951-07-16
2 To Kill a Mockingbird Harper Lee J.B. Lippincott & Co. 1960-07-11
2. 创建 Loans
  • 创建表 Loans
LoanID BookID ReaderID LoanDate ReturnDate
1001 1 1001 2024-08-01 2024-08-15
3. 创建 Readers
  • 创建表 Readers
ReaderID Name Phone Email
1001 Alice (123) 456-7890 alice@example.com
4. Readers 表中添加一个新列 Address
  • 添加新列后的 Readers
ReaderID Name Phone Email Address
1001 Alice (123) 456-7890 alice@example.com
5. 删除 Loans
  • 删除表 Loans 后的结果
LoanID BookID ReaderID LoanDate ReturnDate

让我们通过一个具体的案例来更好地理解如何使用数据定义语言(DDL)中的 CREATE, ALTER, 和 DROP 语句。

假设我们正在为一家名为 "Acme Corp" 的公司开发一个员工管理系统,并且需要管理有关员工的信息。

步骤 1: 创建表

首先,我们需要创建一个表来存储员工的基本信息。我们可以使用 CREATE TABLE 语句来完成这个任务。

SQL 代码示例:
sql 复制代码
CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Department VARCHAR(50),
    HireDate DATE
);

这段 SQL 代码创建了一个名为 Employees 的表,其中包含以下列:

  • EmployeeID: 员工的唯一标识符,作为主键。
  • FirstName: 员工的名字。
  • LastName: 员工的姓氏。
  • Department: 员工所在的部门。
  • HireDate: 员工的入职日期。

步骤 2: 修改表结构

假设在创建表之后,我们意识到还需要记录每个员工的电子邮件地址。我们可以使用 ALTER TABLE 语句来添加这一列。

SQL 代码示例:
sql 复制代码
ALTER TABLE Employees
ADD Email VARCHAR(100);

这条命令会在 Employees 表中增加一个新列 Email,用来存储员工的电子邮件地址。

步骤 3: 删除表或表中的列

现在,假设几个月后公司的政策发生了变化,决定不再收集员工的电子邮件地址以保护隐私。这时我们可以使用 ALTER TABLEDROP TABLE 来移除该列或整个表。

如果只需要删除该列,我们可以这样做:

SQL 代码示例:
sql 复制代码
ALTER TABLE Employees
DROP COLUMN Email;

如果整个表不再需要,我们可以直接删除它:

SQL 代码示例:
sql 复制代码
DROP TABLE Employees;

通过这些概念和查询,我们可以看到如何利用数据定义语言 (DDL) 来创建、修改和删除数据库中的表和其他对象。如果你需要更深入的解释或者有其他具体的需求,请随时告诉我!

相关推荐
ZSYP-S4 分钟前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
yuanbenshidiaos7 分钟前
c++------------------函数
开发语言·c++
yuanbenshidiaos11 分钟前
C++----------函数的调用机制
java·c++·算法
程序员_三木19 分钟前
Three.js入门-Raycaster鼠标拾取详解与应用
开发语言·javascript·计算机外设·webgl·three.js
o(╥﹏╥)27 分钟前
linux(ubuntu )卡死怎么强制重启
linux·数据库·ubuntu·系统安全
是小崔啊29 分钟前
开源轮子 - EasyExcel01(核心api)
java·开发语言·开源·excel·阿里巴巴
tianmu_sama35 分钟前
[Effective C++]条款38-39 复合和private继承
开发语言·c++
黄公子学安全38 分钟前
Java的基础概念(一)
java·开发语言·python
liwulin050639 分钟前
【JAVA】Tesseract-OCR截图屏幕指定区域识别0.4.2
java·开发语言·ocr
阿里嘎多学长41 分钟前
docker怎么部署高斯数据库
运维·数据库·docker·容器