登录
首页 >  数据库 >  MySQL

数据库语言

来源:tutorialspoint

时间:2023-08-30 15:57:44 497浏览 收藏

本篇文章给大家分享《数据库语言》,覆盖了数据库的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

客户端可以利用称为数据集管理框架(DBMS)的编程来存储、指导和恢复数据集中的信息。 DBMS 语言和接口是 DBMS 的重要组成部分,支持用户与数据库系统的交互。我们将在本文中利用模型分析一些 DBMS 方言和连接点。

数据库管理系统语言

数据定义语言(DDL)

数据定义语言(DDL)是一种用于定义数据库结构的数据库语言。客户端可以添加、删除和调整数据集对象,包括表格、透视图和文件。

DDL命令

有几个DDL命令,例如 -

创建

create命令用于创建新的数据库对象,例如表、视图或索引。CREATE命令的语法将根据正在创建的对象类型而改变。

Example

的中文翻译为:

示例

例如,下面的SQL查询创建了一个名为"employees"的数据库,其中包含"id"、"name"和"salary"三个列。

CREATE TABLE employees (
   id INT PRIMARY KEY,
   name VARCHAR(50) NOT NULL,
   salary DECIMAL(10,2)
);

输出表

+----+--------+---------+
| id |  name  |  salary |
+----+--------+---------+

ALTER

的中文翻译为:

修改

ALTER用于更改数据库对象的现有结构。您可以使用ALTER命令创建、修改或删除列、约束或索引。

Example

的中文翻译为:

示例

例如,"employees" 数据库通过以下的 SQL 查询语句增加了一个名为 "department" 的新字段 −

ALTER TABLE employees ADD department VARCHAR(50);

输出表

+----+--------+--------+-------------+
| id |  name  | salary |  department |
+----+--------+--------+-------------+

DROP

的中文翻译为:

DROP

DROP 用于删除表、视图或其他现有数据库对象。使用 DROP 命令永久删除对象和任何相关数据。

Example

的中文翻译为:

示例

例如,使用以下SQL查询语句删除了"employees"表 -

DROP TABLE employees;

输出

在执行"DROP TABLE employees"命令后,"employees"表及其所有数据将被永久删除,不会有输入或输出表显示。

TRUNCATE

的翻译为:

TRUNCATE

使用TRUNCATE可以删除已存在的表中的每个数据。与DROP命令相反,Shorten命令基本上是从数据集中删除信息,而不是实际的表。

Example

的中文翻译为:

示例

假设这是员工的桌子 -

+----+--------+--------+-------------+
| id |  name  | salary |  department |
+----+--------+--------+-------------+
| 1  | Alice  | 50000  | Engineering |
| 2  | Bob    | 60000  | Marketing   |
| 3  | Charlie| 75000  | Sales       |
| 4  | Dave   | 65000  | Engineering |
| 5  | Eve    | 55000  | Marketing   |
+----+--------+--------+-------------+

例如,"employees"表通过以下SQL表达式进行截断−

TRUNCATE TABLE employees;
Output Table:
+----+------+-------+------------+
| id | name | salary| department |
+----+------+-------+------------+
|    |      |       |            |
+----+------+-------+------------+

使用TRUNCATE命令可以完全删除"employees"表的数据,但是表本身保持不变。命令执行后,表仍然存在,但是不包含任何数据行。输出表显示了命令执行后的"employees"表结构,但不包含任何数据。

重命名

这个命令用于重命名现有数据库中的表或列。

Example

的中文翻译为:

示例

输入表格

+----+--------+--------+-------------+
| id |  name  | salary |  department |
+----+--------+--------+-------------+
| 1  | Alice  | 50000  | Engineering |
| 2  | Bob    | 60000  | Marketing   |
| 3  | Charlie| 75000  | Sales       |
| 4  | Dave   | 65000  | Engineering |
| 5  | Eve    | 55000  | Marketing   |
+----+--------+--------+-------------+

例如,“staff”表在以下 SQL 查询中从“employees”表重命名 -

RENAME TABLE employees TO staff;

输出表

+----+--------+--------+-------------+
| id |  name  | salary |  department |
+----+--------+--------+-------------+
| 1  | Alice  | 50000  | Engineering |
| 2  | Bob    | 60000  | Marketing   |
| 3  | Charlie| 75000  | Sales       |
| 4  | Dave   | 65000  | Engineering |
| 5  | Eve    | 55000  | Marketing   |
+----+--------+--------+-------------+

CQL 命令“RENAME TABLEEmployeesTOstaff”只是将当前键空间中现有的“employees”表重命名为“staff”,因此输入和输出表没有更改。表的列和内容保持不变。

因此,输入和输出表的数据和结构是相同的。唯一的区别是表的名称,已从“employees”更改为“staff”。

数据库结构的管理依赖于DDL指令。 DBA 可以使用 DDL 命令构建、更改和销毁数据库对象,包括表、视图和索引。此外,数据完整性限制(例如主键、唯一约束和外键)是通过 DDL 命令强制执行的。

数据操作语言 (DML)

您可以使用数据操作语言(DML)来修改和编辑关系数据库中的数据,DML是SQL的一个子集。为了插入数据

DML命令

有几个 DML 命令,例如 -

INSERT

的中文翻译为:

插入

INSERT 命令用于向表中添加数据。 INSERT 命令的语法如下 -

INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

Example

的中文翻译为:

示例

考虑一个表,其中包含名为“customers”的“id”、“name”和“email”列。我们可以使用以下命令向表中添加新记录 -

输入表

假设这是我们的初始表格

+----+---------+---------------------+
| id |  name   |        email        |
+----+---------+---------------------+
| 0  | Alice   | alice@example.com   |
| 2  | Bob     | bob@example.com     |
| 3  | Charlie | charlie@example.com |
| 4  | Dave    | dave@example.com    |
| 5  | Eve     | eve@example.com     |
+----+---------+---------------------+
INSERT INTO customers (id, name, email) VALUES (1, 'John Doe', 'john.doe@example.com');

输出表

+----+---------+---------------------+
| id |  name   |        email        |
+----+---------+---------------------+
| 0  | Alice   | alice@example.com   |
| 1  | John Doe| john.doe@example.com|
| 2  | Bob     | bob@example.com     |
| 3  | Charlie | charlie@example.com |
| 4  | Dave    | dave@example.com    |
| 5  | Eve     | eve@example.com     |
+----+---------+---------------------+

UPDATE

的中文翻译为:

更新

使用UPDATE命令可以更改表中的现有数据。UPDATE命令的语法如下:

UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

Example

的中文翻译为:

示例

为了说明这一点,假设我们需要更改 ID 为 1 的客户的电子邮件地址。我们可以使用以下命令来实现 -

输入表

假设这是我们的初始表格

+----+---------+---------------------+
| id |  name   |        email        |
+----+---------+---------------------+
| 0  | Alice   | alice@example.com   |
| 2  | Bob     | bob@example.com     |
| 3  | Charlie | charlie@example.com |
| 4  | Dave    | dave@example.com    |
| 5  | Eve     | eve@example.com     |
+----+---------+---------------------+
UPDATE customers SET email = 'johndoe@example.com' WHERE id = 1;

输出表

+----+---------+---------------------+
| id |  name   |        email        |
+----+---------+---------------------+
| 0  | Alice   | alice@example.com   |
| 1  | John Doe| johndoe@example.com|
| 2  | Bob     | bob@example.com     |
| 3  | Charlie | charlie@example.com |
| 4  | Dave    | dave@example.com    |
| 5  | Eve     | eve@example.com     |
+----+---------+---------------------+

删除

要从表中删除当前数据,请使用DELETE命令。DELETE命令的语法如下:

DELETE FROM table_name WHERE condition;

Example

的中文翻译为:

示例

假设我们希望删除id为1的客户记录,我们可以使用以下命令来实现 -

DELETE FROM customers WHERE id = 1;

使用相同的输入表 -

输出表

+----+---------+---------------------+
| id |  name   |        email        |
+----+---------+---------------------+
| 0  | Alice   | alice@example.com   |
| 2  | Bob     | bob@example.com     |
| 3  | Charlie | charlie@example.com |
| 4  | Dave    | dave@example.com    |
| 5  | Eve     | eve@example.com     |
+----+---------+---------------------+

SELECT

的中文翻译为:

选择

要从表中获取数据,请使用SELECT命令。SELECT命令的语法如下 -

SELECT column1, column2, ... FROM table_name WHERE condition;

Example

的中文翻译为:

示例

考虑这样的场景,我们需要获取每个进行交易的消费者的姓名和电子邮件地址。我们可以使用以下命令来实现 -

输入表

+----+----------+-----------------------+-------------------+
| id |   name   |         email         | has_made_purchase |
+----+----------+-----------------------+-------------------+
| 1  | John Doe | john.doe@example.com |        true       |
| 2  | Jane Doe | jane.doe@example.com |        false      |
| 3  | Bob Smith| bob.smith@example.com|        true       |
| 4  | Alice Lee| alice.lee@example.com|        true       |
+----+----------+-----------------------+-------------------+
SELECT name, email FROM customers WHERE has_made_purchase = true;

输出表

+----------+-----------------------+
|   name   |         email         |
+----------+-----------------------+
| John Doe | john.doe@example.com |
| Bob Smith| bob.smith@example.com|
| Alice Lee| alice.lee@example.com|
+----------+-----------------------+

您可以使用称为数据操作语言 (DML) 的强大 SQL 子集来更改和编辑关系数据库中的数据。 INSERT、UPDATE、DELETE 和 SELECT 命令是四个主要的 DML 命令。这些命令使您能够将新数据添加到表中、编辑现有数据、从表中删除数据以及根据特定条件从表中检索数据。开发人员和数据分析师都使用这些命令,这对于处理数据库至关重要。

数据控制语言(DCL)

称为数据控制语言 (DCL) 的 SQL 子集提供控制对数据库对象的访问的指令。它用于管理数据库权限和用户访问。我们将在这篇文章中讨论不同的 DCL 命令并给出使用示例。

DCL 命令

有几个DCL命令,例如 −

授予

使用GRANT命令可以为用户或角色在数据库对象上授予指定的功能。GRANT命令的语法如下:

GRANT SELECT, INSERT, UPDATE ON employees TO jane;

Example

的中文翻译为:

示例

例如,假设我们有一个名为"employees"的数据库,我们想要给用户"jane" SELECT、INSERT和UPDATE权限。可以使用以下命令:

GRANT SELECT, INSERT, UPDATE ON employees TO jane;

输出

GRANT 命令并不真正构造输出表,因此输出表将与输入表相同。但是,该命令将授予用户 Jane 访问员工表上的 SELECT、INSERT 和 UPDATE 函数的权限。

撤销

使用 REVOKE 命令删除用户或角色先前授予的对数据库对象的权限。 REVOKE 命令具有以下语法 -

REVOKE privilege_name ON object_name FROM user_or_role;

Example

的中文翻译为:

示例

举例来说,我们希望从“employees”表的 SELECT 权限中删除用户“jane”。可以使用以下命令 -

REVOKE SELECT ON employees FROM jane;

输出

执行CQL语句"REVOKE SELECT ON employees FROM jane"只是撤销了先前在当前keyspace的"employees"数据库上授予用户"jane"的SELECT权限,这就解释了为什么输入和输出表没有变化。表的列和内容保持不变。

因此,输入和输出表的数据和结构是相同的。唯一的变化是,在当前的键空间中,用户“jane”将不再被允许对“employees”表执行 SELECT 查询。

DENY

的中文翻译为:

DENY

用户或角色可以对使用 DENY 命令拒绝的数据库对象拥有某些权限。 DENY 命令具有以下语法 -

DENY privilege_name ON object_name TO user_or_role;

Example

的中文翻译为:

示例

例如,假设我们希望阻止用户“jane”将数据插入“employees”数据库。可以使用以下命令 -

DENY INSERT ON employees TO jane;

输出

CQL 语句“DENY INSERT ONEmployees TO jane”仅禁止“jane”用户尝试将数据插入“employees”表,这解释了为什么输入和输出表保持不变。表的列和内容保持不变。

结果是,输入和输出表的数据和结构是相同的。唯一不同的是,“employees”表的访问控制权限已被更改,拒绝了“jane”用户的“INSERT”权限。

ALTER

的中文翻译为:

修改

可以使用 ALTER 命令更改现有用户或角色的权限。 ALTER 命令具有以下语法 -

ALTER USER user_name WITH {GRANT|DENY} privilege_name ON object_name;

示例

例如,假设我们希望给用户 "jane" 在 "employees" 表上赋予 SELECT 权限。可以使用以下命令 -

ALTER USER jane WITH GRANT SELECT ON employees;

输出

该命令没有相关的输出表。如果操作成功执行,Cassandra 数据库的用户帐户的权限只会更新。当用户下次登录或尝试运行需要“employees”表的 SELECT 权限的查询时,更改的权限将生效。

在数据控制语言(DCL)中,有命令可用于控制对数据库对象的权限和访问。DCL中的主要命令包括ALTER、GRANT、REVOKE和DENY。您可以使用这些过程向用户或角色授予或删除对数据库对象的特定功能。数据库管理员和安全专业人员都使用这些命令,因为它们对于管理数据库中的安全和访问控制至关重要。

事务控制语言(TCL)

数据库管理系统(DBMS)使用事务控制语言(TCL)作为一组指令来处理事务。事务的开始和结束点、可见性限制以及结果管理都由TCL命令控制。大多数DBMS提供三个TCL命令COMMIT、ROLLBACK和SAVEPOINT。

TCL 命令

有几个TCL命令,例如−

COMMIT

的中文翻译为:

提交

使用COMMIT命令来正确完成一个事务。当使用COMMIT命令时,所有在事务期间所做的更改都会永久保存到数据库中。COMMIT命令的语法很简单,如下所示 -

COMMIT;

Example

的中文翻译为:

示例

考虑一个名为“客户”的数据库表,其中包含有关客户的详细信息,例如姓名、地址和电话号码。考虑以下事务,该事务修改了 ID 为 101 的客户电话号码::

输入表

+-----+--------+-------------------+
| id  |  name  |       phone       |
+-----+--------+-------------------+
| 100 | Alice  | 555-123-4567      |
| 101 | Bob    | 555-987-6543      |
| 102 | Charlie| 555-555-1212      |
+-----+--------+-------------------+
START TRANSACTION;
UPDATE customers SET phone = '123-456-7890' WHERE id = 101;
COMMIT;

输出表

+-----+--------+-------------------+
| id  |  name  |       phone       |
+-----+--------+-------------------+
| 100 | Alice  | 555-123-4567      |
| 101 | Bob    | 123-456-7890      |
| 102 | Charlie| 555-555-1212      |
+-----+--------+-------------------+

上述代码将启动一个事务,将ID 101添加到客户的电话号码中,然后提交数据库修改。在事务提交后,修改后的电话号码将永久保存在数据库中。

回滚

要撤消事务或将数据库返回到其先前状态,请使用 ROLLBACK 命令。当使用 ROLLBACK 命令时,数据库恢复其先前的状态,从而清除事务期间执行的所有更改。 ROLLBACK 命令具有以下语法 -

ROLLBACK;

Example

的中文翻译为:

示例

考虑一个名为“orders”的数据库表,其中包含有关客户订单的数据,包括订单号、日期和总金额。假设我们有一个事务,将以下新订单添加到数据库中 -

输入表

+----------+-------------+--------------+
| order_id | order_date  | order_amount |
+----------+-------------+--------------+
| 1        | 2023-04-12  | 100.00       |
| 2        | 2023-04-13  | 150.00       |
+----------+-------------+--------------+
START TRANSACTION;
INSERT INTO orders VALUES (1001, '2023-04-14', 50.00);
ROLLBACK;

输出表

+----------+-------------+--------------+
| order_id | order_date  | order_amount |
+----------+-------------+--------------+
| 1        | 2023-04-12  | 100.00       |
| 2        | 2023-04-13  | 150.00       |
+----------+-------------+--------------+

上述代码将启动一个事务,在数据库中添加一个新订单,然后撤销所有数据库修改。当事务回滚时,数据库将恢复到先前的状态,新订单将被删除。

SAVEPOINT

的中文翻译为:

保存点

SAVEPOINT命令用于提供一个可以稍后回滚的事务点。当使用SAVEPOINT命令时,事务中会建立一个保存点。要撤销保存点后所做的所有更改,请稍后执行ROLLBACK TO SAVEPOINT命令。SAVEPOINT命令的语法如下:

SAVEPOINT savepoint_name;

Example

的中文翻译为:

示例

假设我们有一个名为“inventory”的数据库表,它提供了关于库存的详细信息,例如产品名称、数量和价格。假设我们有一个交易,按如下方式修改产品的数量 -

输入表

+--------------+----------+
| product_name | quantity |
+--------------+----------+
| Product A    | 20       |
| Product B    | 30       |
+--------------+----------+
START TRANSACTION;
UPDATE inventory SET quantity = quantity - 5 WHERE product_name = 'Product A';
SAVEPOINT update_quantity;
UPDATE inventory SET quantity = quantity + 5 WHERE product_name = 'Product B';
ROLLBACK TO SAVEPOINT update_quantity;
COMMIT;

输出表

+--------------+----------+
| product_name | quantity |
+--------------+----------+
| Product A    | 15       |
| Product B    | 30       |
+--------------+----------+

总结一下,在数据库管理系统中,TCL命令对于控制事务至关重要。要成功完成一个事务,请使用COMMIT命令。要撤销一个事务并将数据库恢复到先前的状态,请使用ROLLBACK语句。最后,使用SAVEPOINT命令来指定一个事务中的点,以便稍后回滚。通过适当理解和使用TCL指令,可以保持数据库的一致性和完整性。

结论

数据库管理系统的接口和语言是至关重要的部分。数据库系统的特定需求决定了要使用的语言和接口。为了确保数据库系统的成功,必须仔细考虑这些变量。用户可以通过选择合适的语言和接口与DBMS进行交互,以最适合他们的需求的方式。

本篇关于《数据库语言》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!

声明:本文转载于:tutorialspoint 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>