数据库系统 第6节 数据操作语言

2. 数据操作语言 (DML)

数据操作语言 (DML) 是一组用于操作数据库中数据的SQL命令。DML主要包括以下四种操作:

SELECT

定义: SELECT 语句用于从一个或多个表中检索数据。它是SQL中最常用的操作之一,可以用来提取满足特定条件的数据。

语法:

SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column_name [ASC|DESC]];
  • column1, column2, ...: 要从表中选择的列名。
  • table_name: 包含所需数据的表的名称。
  • [WHERE condition]: 可选子句,用于指定要选择哪些行。
  • [ORDER BY column_name [ASC|DESC]]: 可选子句,用于按特定列对结果进行排序。

案例: 从 Books 表中选择所有价格超过10美元的书籍。

SELECT * FROM Books WHERE Price > 10;
INSERT

定义: INSERT 语句用于向表中插入新的记录。它可以插入一行或多行数据。

语法:

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
  • table_name: 要插入数据的表的名称。
  • (column1, column2, ...): 要插入数据的列名。
  • (value1, value2, ...): 对应列的值。

案例: 向 Books 表中插入一本新书。

INSERT INTO Books (BookID, Title, Author, Publisher, PublicationDate, Price)
VALUES (3, 'The Great Gatsby', 'F. Scott Fitzgerald', 'Charles Scribner''s Sons', '1925-04-10', 12.99);
UPDATE

定义: UPDATE 语句用于修改表中的现有记录。它允许更改一个或多个列的值。

语法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
  • table_name: 包含要更新的记录的表的名称。
  • SET column1 = value1, column2 = value2, ...: 要更新的列名及其新值。
  • WHERE condition: 指定要更新哪些行的条件。

案例: 更新 Books 表中书籍的价格,将价格低于10美元的书籍价格调整为10美元。

UPDATE Books
SET Price = 10
WHERE Price < 10;
DELETE

定义: DELETE 语句用于删除表中的记录。它可以删除一行或多行数据。

语法:

DELETE FROM table_name
WHERE condition;
  • table_name: 包含要删除的记录的表的名称。
  • WHERE condition: 指定要删除哪些行的条件。

案例: 从 Books 表中删除价格低于5美元的所有书籍。

DELETE FROM Books
WHERE Price < 5;

示例结果

SELECT 示例
  • 选择所有价格超过10美元的书籍
SELECT * FROM Books WHERE Price > 10;
BookIDTitleAuthorPublisherPublicationDatePrice
1The Catcher in the RyeJ.D. SalingerLittle, Brown and Co.1951-07-1610.99
2To Kill a MockingbirdHarper LeeJ.B. Lippincott & Co.1960-07-119.99
INSERT 示例
  • Books 表中插入一本新书
INSERT INTO Books (BookID, Title, Author, Publisher, PublicationDate, Price)
VALUES (3, 'The Great Gatsby', 'F. Scott Fitzgerald', 'Charles Scribner''s Sons', '1925-04-10', 12.99);
UPDATE 示例
  • 更新 Books 表中书籍的价格
UPDATE Books
SET Price = 10
WHERE Price < 10;
DELETE 示例
  • Books 表中删除价格低于5美元的所有书籍
DELETE FROM Books
WHERE Price < 5;

总结

通过这些基本的DML操作,你可以有效地管理和操作数据库中的数据。SELECT 语句用于检索数据,INSERT 语句用于插入新数据,UPDATE 语句用于更新现有数据,而 DELETE 语句用于删除不需要的数据。这些操作构成了数据库管理的基础,也是开发人员在日常工作中最常用的SQL语句之一。

如果你需要更深入的解释或者有其他具体的需求,请随时告诉我!

这次我们将创建一个简单的在线健身俱乐部会员管理系统。

案例:在线健身俱乐部会员管理系统

实体和属性
  • 会员 (Members)

    • 会员ID (MemberID)
    • 姓名 (Name)
    • 年龄 (Age)
    • 会籍类型 (MembershipType)
    • 加入日期 (JoinDate)
  • 会籍类型 (MembershipTypes)

    • 类型ID (TypeID)
    • 类型名称 (TypeName)
    • 月费 (MonthlyFee)
  • 支付记录 (Payments)

    • 支付ID (PaymentID)
    • 会员ID (MemberID)
    • 支付日期 (PaymentDate)
    • 金额 (Amount)

关系表 (Tables)

会员表 (Members)
MemberIDNameAgeMembershipTypeJoinDate
1Alice25Basic2024-01-01
2Bob32Premium2024-02-15
会籍类型表 (MembershipTypes)
TypeIDTypeNameMonthlyFee
1Basic50
2Premium100
支付记录表 (Payments)
PaymentIDMemberIDPaymentDateAmount
10112024-01-0150
10222024-02-15100

数据操作语言 (DML)

SELECT
  • 选择所有年龄大于30岁的会员
SELECT * FROM Members WHERE Age > 30;
INSERT
  • Members 表中插入一位新会员
INSERT INTO Members (MemberID, Name, Age, MembershipType, JoinDate)
VALUES (3, 'Charlie', 28, 'Basic', '2024-03-01');
UPDATE
  • 更新 Members 表中会员的会籍类型
UPDATE Members
SET MembershipType = 'Premium'
WHERE MemberID = 1;
DELETE
  • Members 表中删除年龄小于20岁的会员
DELETE FROM Members
WHERE Age < 20;

示例结果

SELECT 示例
  • 选择所有年龄大于30岁的会员
SELECT * FROM Members WHERE Age > 30;
MemberIDNameAgeMembershipTypeJoinDate
2Bob32Premium2024-02-15
INSERT 示例
  • Members 表中插入一位新会员
INSERT INTO Members (MemberID, Name, Age, MembershipType, JoinDate)
VALUES (3, 'Charlie', 28, 'Basic', '2024-03-01');
UPDATE 示例
  • 更新 Members 表中会员的会籍类型
UPDATE Members
SET MembershipType = 'Premium'
WHERE MemberID = 1;
DELETE 示例
  • Members 表中删除年龄小于20岁的会员
DELETE FROM Members
WHERE Age < 20;

SQL 查询示例

1. 选择所有年龄大于30岁的会员
SELECT * FROM Members WHERE Age > 30;
2. Members 表中插入一位新会员
INSERT INTO Members (MemberID, Name, Age, MembershipType, JoinDate)
VALUES (3, 'Charlie', 28, 'Basic', '2024-03-01');
3. 更新 Members 表中会员的会籍类型
UPDATE Members
SET MembershipType = 'Premium'
WHERE MemberID = 1;
4. Members 表中删除年龄小于20岁的会员
DELETE FROM Members
WHERE Age < 20;
5. 计算每个会籍类型的会员人数
SELECT MembershipType, COUNT(*) AS NumberOfMembers
FROM Members
GROUP BY MembershipType;

示例结果

1. 选择所有年龄大于30岁的会员
MemberIDNameAgeMembershipTypeJoinDate
2Bob32Premium2024-02-15
2. Members 表中插入一位新会员
  • 插入后的新会员信息如下:
MemberIDNameAgeMembershipTypeJoinDate
3Charlie28Basic2024-03-01
3. 更新 Members 表中会员的会籍类型
  • 更新后的会员信息如下:
MemberIDNameAgeMembershipTypeJoinDate
1Alice25Premium2024-01-01
4. Members 表中删除年龄小于20岁的会员
  • 删除后的会员表如下:
MemberIDNameAgeMembershipTypeJoinDate
1Alice25Premium2024-01-01
2Bob32Premium2024-02-15
3Charlie28Basic2024-03-01
5. 计算每个会籍类型的会员人数
MembershipTypeNumberOfMembers
Premium2
Basic1

通过这些概念和查询,我们可以看到如何利用数据操作语言 (DML) 来组织和操作数据。如果你需要更深入的解释或者有其他具体的需求,请随时告诉我!

当然,我们可以构建一个新的案例来进一步说明数据操作语言 (DML) 的使用。这次我们将创建一个简单的在线餐厅预订系统。

案例:在线餐厅预订系统

实体和属性
  • 餐厅 (Restaurants)

    • 餐厅ID (RestaurantID)
    • 名称 (Name)
    • 地址 (Address)
    • 电话 (Phone)
  • 餐桌 (Tables)

    • 餐桌ID (TableID)
    • 餐厅ID (RestaurantID)
    • 容纳人数 (Capacity)
    • 是否吸烟区 (IsSmokingArea)
  • 预订 (Reservations)

    • 预订ID (ReservationID)
    • 餐桌ID (TableID)
    • 预订人姓名 (CustomerName)
    • 预订日期时间 (ReservationDateTime)
    • 人数 (NumberOfPeople)

关系表 (Tables)

餐厅表 (Restaurants)
RestaurantIDNameAddressPhone
1Italiano123 Pasta Blvd, Cityville(123) 456-7890
2Sushi Palace456 Sushi Ave, Townsville(987) 654-3210
餐桌表 (Tables)
TableIDRestaurantIDCapacityIsSmokingArea
10112No
10214Yes
20122No
20224Yes
预订表 (Reservations)
ReservationIDTableIDCustomerNameReservationDateTimeNumberOfPeople
3001101John Doe2024-08-10 19:002
3002201Jane Doe2024-08-10 20:002

数据操作语言 (DML)

SELECT
  • 选择所有容纳人数为2的餐桌
SELECT * FROM Tables WHERE Capacity = 2;
INSERT
  • Tables 表中插入一张新餐桌
INSERT INTO Tables (TableID, RestaurantID, Capacity, IsSmokingArea)
VALUES (103, 1, 4, 'No');
UPDATE
  • 更新 Tables 表中餐桌的容纳人数
UPDATE Tables
SET Capacity = 3
WHERE TableID = 101;
DELETE
  • Tables 表中删除容纳人数为4且位于吸烟区的餐桌
DELETE FROM Tables
WHERE Capacity = 4 AND IsSmokingArea = 'Yes';

示例结果

SELECT 示例
  • 选择所有容纳人数为2的餐桌
SELECT * FROM Tables WHERE Capacity = 2;
TableIDRestaurantIDCapacityIsSmokingArea
10112No
20122No
INSERT 示例
  • Tables 表中插入一张新餐桌
INSERT INTO Tables (TableID, RestaurantID, Capacity, IsSmokingArea)
VALUES (103, 1, 4, 'No');
UPDATE 示例
  • 更新 Tables 表中餐桌的容纳人数
UPDATE Tables
SET Capacity = 3
WHERE TableID = 101;
DELETE 示例
  • Tables 表中删除容纳人数为4且位于吸烟区的餐桌
DELETE FROM Tables
WHERE Capacity = 4 AND IsSmokingArea = 'Yes';

SQL 查询示例

1. 选择所有容纳人数为2的餐桌
SELECT * FROM Tables WHERE Capacity = 2;
2. Tables 表中插入一张新餐桌
INSERT INTO Tables (TableID, RestaurantID, Capacity, IsSmokingArea)
VALUES (103, 1, 4, 'No');
3. 更新 Tables 表中餐桌的容纳人数
UPDATE Tables
SET Capacity = 3
WHERE TableID = 101;
4. Tables 表中删除容纳人数为4且位于吸烟区的餐桌
DELETE FROM Tables
WHERE Capacity = 4 AND IsSmokingArea = 'Yes';
5. 列出所有预订日期为2024-08-10的预订
SELECT R.Name, T.Capacity, Res.CustomerName, Res.ReservationDateTime
FROM Reservations Res
JOIN Tables T ON Res.TableID = T.TableID
JOIN Restaurants R ON T.RestaurantID = R.RestaurantID
WHERE Res.ReservationDateTime >= '2024-08-10' AND Res.ReservationDateTime < '2024-08-11';

示例结果

1. 选择所有容纳人数为2的餐桌
TableIDRestaurantIDCapacityIsSmokingArea
10112No
20122No
2. Tables 表中插入一张新餐桌
  • 插入后的新餐桌信息如下:
TableIDRestaurantIDCapacityIsSmokingArea
10314No
3. 更新 Tables 表中餐桌的容纳人数
  • 更新后的餐桌信息如下:
TableIDRestaurantIDCapacityIsSmokingArea
10113No
4. Tables 表中删除容纳人数为4且位于吸烟区的餐桌
  • 删除后的餐桌表如下:
TableIDRestaurantIDCapacityIsSmokingArea
10113No
10314No
20122No
5. 列出所有预订日期为2024-08-10的预订
NameCapacityCustomerNameReservationDateTime
Italiano3John Doe2024-08-10 19:00
Sushi Palace2Jane Doe2024-08-10 20:00

通过这些概念和查询,我们可以看到如何利用数据操作语言 (DML) 来组织和操作数据。如果你需要更深入的解释或者有其他具体的需求,请随时告诉我!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值