1. MySQL操作语言分类
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
DDL
什么是DDL:
DDL是数据定义语言(Data Definition Language)的缩写。
数据定义语言是用于定义数据库结构和模式的语言。它包括创建、修改和删除数据库对象(如表、视图、索引等)的命令。常见的DDL命令包括CREATE、ALTER和DROP等。
例如,使用DDL命令CREATE TABLE可以创建一个新的数据库表,使用ALTER TABLE可以修改现有的数据库表结构,使用DROP TABLE可以删除数据库表。
需要注意的是,DDL命令对数据库结构进行操作,而不是对数据库中的数据进行操作。如果要对数据库中的数据进行操作,需要使用数据操作语言(DML)命令,如SELECT、INSERT、UPDATE和DELETE等。
下面给出一些DDL功能实现的具体例子:
- 创建表(CREATE TABLE):
CREATE TABLE Students (
ID INT PRIMARY KEY,
Name VARCHAR(50),
Age INT
);
- 修改表结构(ALTER TABLE):
ALTER TABLE Students
ADD COLUMN Grade VARCHAR(10);
- 删除表(DROP TABLE):
DROP TABLE Students;
- 创建视图(CREATE VIEW):
CREATE VIEW StudentDetails AS
SELECT ID, Name, Age, Grade
FROM Students
WHERE Age >= 18;
这些是一些常见的DDL功能的具体例子。通过使用DDL命令,您可以创建、修改和删除数据库对象,以及定义数据库的结构和模式。
DML
DML是数据库操作语言(Data Manipulation Language)的缩写。
DML是一种用于操作数据库中数据的语言。它提供了各种命令和操作,用于插入、更新、删除和查询数据库中的数据。常见的DML命令包括INSERT、UPDATE、DELETE和SELECT。
- INSERT用于向数据库中插入新的数据记录。
- UPDATE用于更新数据库中现有的数据记录。
- DELETE用于从数据库中删除数据记录。
- SELECT用于查询数据库中的数据记录。
通过使用DML语言,可以对数据库中的数据进行增加、修改和删除操作,以满足应用程序的需求。
下面是一些DML功能实现的具体例子:
- 插入数据:
使用INSERT语句将新的数据行插入到数据库表中,例如:
INSERT INTO 表名 (列1, 列2, 列3) VALUES (值1, 值2, 值3);
- 更新数据:
使用UPDATE语句更新数据库表中的现有数据行,例如:
UPDATE 表名 SET 列1 = 值1, 列2 = 值2 WHERE 条件;
- 删除数据:
使用DELETE语句从数据库表中删除数据行,例如:
DELETE FROM 表名 WHERE 条件;
- 查询数据:
使用SELECT语句从数据库表中检索数据行,例如:
SELECT 列1, 列2, 列3 FROM 表名 WHERE 条件;
DCL
什么是DCL:
DCL代表数据控制语言(Data Control Language)。它是一种用于管理数据库访问权限和安全性的语言。DCL包含了用于授予或撤销用户访问数据库对象的权限的命令。
常见的DCL命令包括:
-
GRANT:用于授予用户或用户组对数据库对象的特定权限,例如SELECT、INSERT、UPDATE、DELETE等。
-
REVOKE:用于撤销用户或用户组对数据库对象的特定权限。
通过使用DCL命令,数据库管理员可以管理用户对数据库的访问权限,确保数据的安全性和完整性。
下面是DCL运用的实例:
- 授予用户对表的查询权限:
GRANT SELECT ON table_name TO user_name;
- 授予用户对表的插入、更新和删除权限:
GRANT INSERT, UPDATE, DELETE ON table_name TO user_name;
- 撤销用户对表的所有权限:
REVOKE ALL PRIVILEGES ON table_name FROM user_name;
- 创建用户并为其分配登录权限:
CREATE USER user_name IDENTIFIED BY 'password';
GRANT CONNECT TO user_name;
- 创建用户组并将用户添加到组中:
CREATE ROLE role_name;
GRANT role_name TO user_name;
- 授予用户对数据库的所有权限:
GRANT ALL PRIVILEGES ON database_name.* TO user_name;
- 撤销用户对数据库的特定权限:
REVOKE SELECT, INSERT ON table_name FROM user_name;
DQL
DQL是数据库查询语言(Database Query Language)的缩写。它是一种用于从数据库中检索数据的语言。DQL主要用于执行查询操作,例如从数据库表中选择特定的数据行或列,以及使用条件和排序来过滤和排序数据。
常见的DQL语言包括结构化查询语言(SQL),它是最常用的数据库查询语言。通过使用SQL,可以执行各种查询操作,如SELECT语句来检索数据,以及JOIN语句来合并多个表中的数据。
DQL的目的是提供一种简单、灵活和强大的方式来检索数据库中的数据,以便满足特定的需求。它是数据库管理系统中的重要组成部分,用于支持数据的查询和分析。
下面是DQL运用的实例:
- 查询所有数据:使用SELECT语句可以检索表中的所有数据。
SELECT * FROM 表名;
- 条件查询:使用WHERE子句可以根据特定条件过滤数据。
SELECT * FROM 表名 WHERE 条件;
- 排序查询:使用ORDER BY子句可以按照特定的列对数据进行排序。
SELECT * FROM 表名 ORDER BY 列名 ASC/DESC;
注意:其中DESC表示降序排列, ASC表示升序,所有的排列默认是ASC
4.连接查询:
连接查询是一种使用SQL语句合并多个表中的数据的查询操作。它通过在查询中指定表之间的关联条件,将具有相同关联值的行连接起来。连接查询通常使用JOIN子句来实现。
连接查询又能分为:
- 内连接(INNER JOIN):返回两个表中匹配的行。
SELECT 列名 FROM 表1 INNER JOIN 表2 ON 表1.列 = 表2.列;
注意:
对于内连接来说 它连接的两张表 只要有一张表的所有数据为空,那么查询结构 就不会显示出
- 左连接(LEFT JOIN):返回左表中的所有行,以及与右表匹配的行(将左边的表设为主表,右边的表为副表)。
SELECT 列名 FROM 表1 LEFT JOIN 表2 ON 表1.列 = 表2.列;
- 右连接(RIGHT JOIN):返回右表中的所有行,以及与左表匹配的行(将右边的表设为主表,左边的表设为副表)。
SELECT 列名 FROM 表1 RIGHT JOIN 表2 ON 表1.列 = 表2.列;
这些连接查询的实例可以根据具体的表和关联条件进行调整。连接查询可以帮助我们从多个表中获取相关数据,以满足复杂的查询需求。
注意·:对于内连接来说 它连接的两张表 只要有一张表的所有数据为空,那么查询结构 就不会显示出
对于外连接来说 它连接的两张表 有一张为空,那么查询的结果就会为空
- 聚合函数查询:使用聚合函数可以对数据进行统计计算,如求和、平均值、最大值等。
当需要对数据库中的数据进行汇总、计算或统计时,可以使用聚合函数查询。以下是一些聚合函数查询的实例:
- 求和(SUM):计算某列的总和。
SELECT SUM(列名) FROM 表名;
- 平均值(AVG):计算某列的平均值。
SELECT AVG(列名) FROM 表名;
- 计数(COUNT):统计某列的行数。
SELECT COUNT(列名) FROM 表名;
- 最大值(MAX):找出某列的最大值。
SELECT MAX(列名) FROM 表名;
- 最小值(MIN):找出某列的最小值。
6. SELECT MIN(列名) FROM 表名;
- 分组查询:使用GROUP BY子句可以按照特定的列对数据进行分组。
分组查询是在数据库中根据指定的列或表达式对数据进行分组,并对每个分组进行聚合计算。以下是一些分组查询的实例运用:
- 按照某一列进行分组并计算每组的数量:
SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名;
- 按照某一列进行分组并计算每组的总和:
SELECT 列名, SUM(另一列名) FROM 表名 GROUP BY 列名;
- 按照多个列进行分组并计算每组的平均值:
SELECT 列1, 列2, AVG(另一列) FROM 表名 GROUP BY 列1, 列2;
- 按照日期或时间进行分组并计算每天或每小时的数量:
SELECT DATE(日期列), COUNT(*) FROM 表名 GROUP BY DATE(日期列);
- 按照条件进行分组并计算满足条件的数量:、
SELECT 列名, COUNT(*) FROM 表名 WHERE 条件 GROUP BY 列名;