1. 写出Select各种条件语句 2. 举例说明my SQL常用的函数(日期函数,字符函数) 3. 举例说明my SQL的多表连接查询 4. 举例说明sum,avg,max,min,count等集函数的应用。 5. 举例说明嵌套查询 要求:要有表头:注明:数据库系统原理,学号:21551119087,姓名:刘嘉豪,
时间: 2025-07-24 15:31:43 浏览: 17
<think>我们正在处理一个关于SQL查询的作业示例请求,用户需要包括SELECT条件语句、MySQL常用函数、多表连接查询、聚合函数应用以及嵌套查询的实例。我们将结合引用内容,提供清晰的结构化示例。
根据引用内容,我们可以参考以下知识点:
1. 子查询(嵌套查询):引用[1]提到子查询作为条件值,使用IN等关键字。
2. 分页/限制结果集:引用[2]展示了FETCH FIRST(类似MySQL的LIMIT)。
3. 窗口函数:引用[3]介绍了DENSE_RANK(), RANK(), ROW_NUMBER()以及聚合函数(MIN, MAX, SUM, AVG, COUNT)。
4. 分组与聚合:引用[4]展示了GROUP BY和COUNT(*)的使用,以及GROUP_CONCAT()(虽然未在引用中展示完整,但它是MySQL中常用的聚合函数)。
我们将按照以下结构组织回答:
一、SELECT条件语句
二、MySQL常用函数(日期和字符函数)
三、多表连接查询
四、聚合函数应用
五、嵌套查询(子查询)
注意:在示例中,我们将使用一些假设的表(如employees, departments, orders等)来展示SQL语句。
同时,我们将使用LaTeX格式来展示数学表达式(虽然本问题中数学表达式较少,但如果有我们会按规则书写)。
开始生成回答。</think>### 数据库系统原理作业示例
#### 一、SELECT条件语句基础用法
```sql
-- 单条件筛选
SELECT * FROM employees WHERE salary > 10000;
-- 多条件组合 (AND/OR)
SELECT name, department FROM employees
WHERE department = 'Sales' AND hire_date > '2020-01-01';
-- IN运算符 (引用[1])
SELECT * FROM products WHERE category_id IN (
SELECT category_id FROM categories WHERE is_active = 1
);
```
#### 二、MySQL常用函数
**日期函数**:
```sql
-- 日期格式化
SELECT DATE_FORMAT(hire_date, '%Y-%m') AS hire_month FROM employees;
-- 日期差值计算
SELECT DATEDIFF(end_date, start_date) AS project_days FROM projects;
```
**字符函数**:
```sql
-- 字符串拼接与截取
SELECT CONCAT(first_name, ' ', last_name) AS full_name,
SUBSTRING(email, 1, 5) AS email_prefix
FROM users;
-- 大小写转换
SELECT UPPER(city), LOWER(country) FROM locations;
```
#### 三、多表连接查询
```sql
-- INNER JOIN (显式连接)
SELECT e.name, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.id;
-- LEFT JOIN (保留左表全部记录)
SELECT c.customer_name, o.order_date
FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id;
```
#### 四、聚合函数应用 (引用[3][4])
```sql
-- 基础聚合
SELECT
AVG(salary) AS avg_salary,
MAX(hire_date) AS latest_hire,
COUNT(*) AS total_employees
FROM employees;
-- 分组聚合 (引用[4])
SELECT department_id,
COUNT(*) AS emp_count,
AVG(salary) AS dept_avg_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 5000; -- HAVING筛选分组结果
```
#### 五、嵌套查询实例
```sql
-- 单列子查询 (引用[1])
SELECT name FROM employees
WHERE department_id IN (
SELECT id FROM departments WHERE location = 'Beijing'
);
-- 关联子查询 (计算部门平均工资)
SELECT name, salary, department_id
FROM employees e1
WHERE salary > (
SELECT AVG(salary)
FROM employees e2
WHERE e2.department_id = e1.department_id
);
-- EXISTS子查询
SELECT * FROM orders o
WHERE EXISTS (
SELECT 1 FROM customers c
WHERE c.id = o.customer_id AND c.country = 'USA'
);
```
#### 六、窗口函数示例 (引用[3])
```sql
-- 部门内薪资排名
SELECT name, salary, department_id,
DENSE_RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS dept_rank
FROM employees;
-- 获取最新5条记录 (引用[2])
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY create_time DESC) AS rn
FROM audit_log
) t WHERE rn <= 5;
```
> **关键原理说明**
> 1. 聚合函数与`GROUP BY`在数据分组后计算统计值
> 2. 子查询执行顺序:先执行内层查询,结果供外层使用
> 3. 窗口函数`OVER()`在不减少行数的情况下进行分组计算
> 4. `JOIN`操作本质是表的笛卡尔积+条件过滤
阅读全文
相关推荐



















