MySQL 约束、聚合查询和联合查询练习
发布人:shili8
发布时间:2024-12-25 12:34
阅读次数:0
**MySQL 约束、聚合查询和联合查询练习**
### 一、约束在 MySQL 中,约束是用来限制表中数据的完整性的。约束可以应用到一个或多个列上。
####1. 主键约束(Primary Key)
主键约束用于唯一标识一条记录。每张表只能有一个主键。
sqlCREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255) );
在这个例子中,`id` 列作为主键。
####2. 唯一约束(Unique)
唯一约束用于保证某个列的值是唯一的。一个表可以有多个唯一约束。
sqlCREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255) UNIQUE);
在这个例子中,`email` 列作为唯一约束。
####3. 检查约束(Check)
检查约束用于保证某个列的值满足特定的条件。
sqlCREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(255), age INT CHECK(age >18) );
在这个例子中,`age` 列作为检查约束,保证年龄大于18。
####4. 外键约束(Foreign Key)
外键约束用于保证某个列的值存在于另一个表中。
sqlCREATE TABLE orders ( id INT PRIMARY KEY, user_id INT, FOREIGN KEY (user_id) REFERENCES users(id) );
在这个例子中,`orders` 表中的 `user_id` 列作为外键约束,保证它的值存在于 `users` 表中。
### 二、聚合查询聚合查询用于从多条记录中取出某些信息并进行统计计算。
####1. COUNT()
COUNT() 函数用于返回表中记录的数量。
sqlSELECT COUNT(*) FROM users;
在这个例子中,会返回 `users` 表中的记录数。
####2. SUM()
SUM() 函数用于返回某个列的值之和。
sqlSELECT SUM(age) FROM users;
在这个例子中,会返回 `users` 表中 `age` 列的值之和。
####3. AVG()
AVG() 函数用于返回某个列的值的平均数。
sqlSELECT AVG(age) FROM users;
在这个例子中,会返回 `users` 表中 `age` 列的值的平均数。
####4. MAX()
MAX() 函数用于返回某个列的最大值。
sqlSELECT MAX(age) FROM users;
在这个例子中,会返回 `users` 表中 `age` 列的最大值。
####5. MIN()
MIN() 函数用于返回某个列的最小值。
sqlSELECT MIN(age) FROM users;
在这个例子中,会返回 `users` 表中 `age` 列的最小值。
### 三、联合查询联合查询用于将两个或多个表中的数据合并起来。
####1. 内连接(INNER JOIN)
内连接用于将两个表中的匹配记录合并起来。
sqlSELECT * FROM users INNER JOIN orders ON users.id = orders.user_id;
在这个例子中,会返回 `users` 和 `orders` 表中匹配的记录。
####2. 左外连接(LEFT OUTER JOIN)
左外连接用于将两个表中的所有记录合并起来,包括左边表中没有匹配记录的右边表中的记录。
sqlSELECT * FROM users LEFT OUTER JOIN orders ON users.id = orders.user_id;
在这个例子中,会返回 `users` 和 `orders` 表中所有记录,包括左边表中没有匹配记录的右边表中的记录。
####3. 右外连接(RIGHT OUTER JOIN)
右外连接用于将两个表中的所有记录合并起来,包括右边表中没有匹配记录的左边表中的记录。
sqlSELECT * FROM users RIGHT OUTER JOIN orders ON users.id = orders.user_id;
在这个例子中,会返回 `users` 和 `orders` 表中所有记录,包括右边表中没有匹配记录的左边表中的记录。
####4. 全外连接(FULL OUTER JOIN)
全外连接用于将两个表中的所有记录合并起来,包括两边表中没有匹配记录的另一边表中的记录。
sqlSELECT * FROM users FULL OUTER JOIN orders ON users.id = orders.user_id;
在这个例子中,会返回 `users` 和 `orders` 表中所有记录,包括两边表中没有匹配记录的另一边表中的记录。