MySQL 数据库约束、聚合查询和联合查询使用案例 |
数据库约束约束类型数据库的约束类型主要包括以下几种:
这些约束保证了数据库中的数据完整性和一致性,是设计数据库时的重要组成部分 。 使用案例主键约束(Primary Key Constraint) CREATE TABLE Students ( StudentID INT PRIMARY KEY, StudentName VARCHAR(20) ); 对于整数类型的主键,常配搭自增长auto_increment来使用 。插入数据对应字段不给值时,使用最大值+1 。
外键约束(Foreign Key Constraint) CREATE TABLE Courses ( CourseID INT PRIMARY KEY, CourseName VARCHAR(100) ); CREATE TABLE Enrollments ( EnrollmentID INT PRIMARY KEY, StudentID INT, CourseID INT, FOREIGN KEY (StudentID) REFERENCES Students(StudentID), FOREIGN KEY (CourseID) REFERENCES Courses(CourseID) ); 唯一约束(Unique Constraint) CREATE TABLE Users ( UserID INT PRIMARY KEY, Email VARCHAR(100) UNIQUE ); 检查约束(Check Constraint) CREATE TABLE Products ( ProductID INT PRIMARY KEY, Price DECIMAL(10, 2) CHECK (Price >= 0) ); 非空约束(NOT NULL Constraint) CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, EmployeeName VARCHAR(100) NOT NULL ); 默认约束(Default Constraint) CREATE TABLE Orders ( OrderID INT PRIMARY KEY, OrderDate DATETIME DEFAULT CURRENT_TIMESTAMP ); 这些约束在创建和管理数据库表时非常重要,有助于维护数据的完整性和准确性 。 聚合查询聚合函数常见的统计总数、计算平局值等操作,可以使用聚合函数来实现,常见的聚合函数有:
这些聚合函数用于对一组数据进行汇总和分析,是数据库查询的重要工具 。 使用案例COUNT() 用法:
示例: SELECT COUNT(*) FROM Employees; -- 计算员工总数 SELECT COUNT(EmployeeID) FROM Employees; -- 计算非NULL的员工ID数量 SUM() 用法: 示例: SELECT SUM(Salary) FROM Employees; -- 计算所有员工的工资总和 AVG() 用法: 示例: SELECT AVG(Salary) FROM Employees; -- 计算所有员工的平均工资 MAX() 用法: 示例: SELECT MAX(Salary) FROM Employees; -- 找到最高的工资 MIN() 用法: 示例: SELECT MIN(Salary) FROM Employees; -- 找到最低的工资 这些聚合函数可以单独使用,也可以与 GROUP BY子句SELECT 中使用 GROUP BY 子句可以对指定列进行分组查询 。需要满足:使用 GROUP BY 进行分组查询时,SELECT 指定的字段必须是“分组依据字段”,其他字段若想出现在SELECT 中则必须包含在聚合函数中 。
HAVINGGROUP BY 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 WHERE 语句,而需要用HAVING 。 使用案例 下面是一个结合聚合函数、 假设我们有一个名为
我们想要查询每个销售人员的总销售金额和平均销售金额,并且只返回那些总销售金额超过 10,000 的销售人员 。 以下是相应的 SQL 查询示例: SELECT SalesPerson, SUM(SalesAmount) AS TotalSales, AVG(SalesAmount) AS AverageSales FROM Sales GROUP BY SalesPerson HAVING SUM(SalesAmount) > 10000; 在这个查询中:
这个案例展示了如何结合聚合函数和 联合查询实际开发中往往数据来自不同的表,所以需要多表联合查询 。多表查询是对多张表的数据取笛卡尔积: 注意:关联查询可以对关联表使用别名 。 内连接
外连接外连接分为左外连接和右外连接 。如果联合查询,左侧的表完全显示我们就说是左外连接;右侧的表完全显示我们就说是右外连接 。
自连接自连接是指在同一张表连接自身进行查询 。
联合查询使用案例下面是一个关于数据库中联合查询(也称为联接查询)的案例,结合多个表进行数据检索 。 假设我们有两个表: Customers 表
Orders 表
我们希望查询每个客户的订单信息,包括客户姓名和订单总金额 。 以下是结合 SELECT Customers.CustomerName, Orders.TotalAmount FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID; 在这个查询中:
这个案例展示了如何在数据库中使用联合查询来获取来自多个表的相关数据 。 子查询子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询 1、单行子查询:返回一行记录的子查询 2、多行子查询:返回多行记录的子查询
子查询案例下面是一个关于数据库中子查询的案例,展示如何使用子查询来获取相关数据 。 假设我们有两个表: Employees 表
Departments 表
现在,我们想要查询那些工资高于该部门平均工资的员工姓名和工资 。我们可以通过子查询来实现这个目标 。 以下是相应的 SQL 查询示例: SELECT EmployeeName, Salary FROM Employees WHERE Salary > ( SELECT AVG(Salary) FROM Employees WHERE DepartmentID = Employees.DepartmentID ); 在这个查询中:
这个案例展示了如何在数据库中使用子查询来进一步筛选和获取数据 。 合并查询在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union,union all 。使用UNION和UNION ALL时,前后查询的结果集中,字段需要一致 。 union 该操作符用于取得两个结果集的并集 。当使用该操作符时,会自动去掉结果集中的重复行 。 union all 该操作符用于取得两个结果集的并集 。当使用该操作符时,不会去掉结果集中的重复行 。 合并查询案例合并查询通常是指使用 假设我们有两个表: Customers 表
Suppliers 表
我们希望从这两个表中获取所有联系人姓名,无论是客户还是供应商 。可以使用 以下是相应的 SQL 查询示例: SELECT CustomerName AS ContactName FROM Customers UNION SELECT SupplierName AS ContactName FROM Suppliers; 在这个查询中:
请注意,使用 这个案例展示了如何在数据库中使用合并查询来获取来自多个表的相关数据 。 到此这篇关于MySQL 数据库约束、聚合查询和联合查询的文章就介绍到这了,更多相关mysql聚合查询和联合查询内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持! |