1. SQL基础查询
1.1 SELECT语句
SELECT语句是SQL中最常用的命令之一,用于从数据表中选择数据。其基本的语法格式如下:
SELECT column1, column2, column3, ...
FROM table_name;
其中,column1, column2, column3可以是选取的列名,也可以是 "*" 表示选取所有列。table_name则指定了要查询的数据表名。
例如:查询一个叫做"employee"的表中的所有员工信息:
SELECT *
FROM employee;
1.2 WHERE语句
WHERE语句可以在SELECT语句中添加条件,以便对数据进行更精确的查询。其语法格式如下:
SELECT column1, column2, column3, ...
FROM table_name
WHERE condition;
其中,condition是所需的筛选条件,可以是基于数值、文本、日期或其他数据类型。
例如:从员工表中查询所有的姓名为"Tom"的员工:
SELECT *
FROM employee
WHERE name = 'Tom';
2. SQL进阶查询
2.1 ORDER BY语句
ORDER BY语句可按升序或降序的方式对数据结果排序。其语法格式如下:
SELECT column1, column2, column3, ...
FROM table_name
ORDER BY column_name ASC|DESC;
其中,column_name指定了要排序的列名,ASC指示升序排序,DESC指示降序排序。
例如:从员工表中查询所有的员工按照工资从高到低排序:
SELECT *
FROM employee
ORDER BY salary DESC;
2.2 GROUP BY语句
GROUP BY语句用于将具有相同属性值的行分组,并对每组应用聚合函数(如SUM、COUNT、AVG等)。以下是其基本的语法格式:
SELECT column1, column2, ...
FROM table_name
GROUP BY column_name1, column_name2, ...;
其中,column_name1, column_name2,...是用于分组的列名。聚合函数可以用于连接到结果集中的每组数据。
例如:查询员工表中每个部门员工的平均工资:
SELECT department, AVG(salary)
FROM employee
GROUP BY department;
2.3 JOIN语句
JOIN语句是SQL中最重要的命令之一,用于将两个或更多数据表中的行连接起来。以下是其基本语法:
SELECT column1, column2, ...
FROM table1
JOIN table2
ON table1.column_name = table2.column_name;
其中,ON子句指定表之间匹配的条件。
例如:查询同时包含部门和员工信息的表:
SELECT *
FROM department
JOIN employee
ON department.dep_id = employee.dep_id;
3. SQL高级查询
3.1 UNION语句
UNION语句用于连接两个或多个查询的结果,并返回一个单一的结果集。以下是其基本语法:
SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;
例如:查询包含客户和供应商信息的单一结果集:
SELECT cust_name, cust_contact, cust_email
FROM customers
UNION
SELECT supp_name, supp_contact, supp_email
FROM suppliers;
3.2 IN语句
IN语句用于指定查询的条件,使用固定列表或查询的结果作为条件。以下是其基本语法:
SELECT column1, column2, ...
FROM table_name
WHERE column_name IN (value1, value2, ...);
或者:
SELECT column1, column2, ...
FROM table_name1
WHERE column_name IN (SELECT column_name
FROM table_name2
WHERE condition);
例如:查询所有在销售订单表中的售出商品:
SELECT product_name
FROM products
WHERE product_id IN (SELECT product_id
FROM order_items
WHERE order_id IN (SELECT order_id
FROM orders
WHERE order_date BETWEEN '2021-01-01' AND '2021-12-31'));
3.3 EXISTS语句
EXISTS语句用于检查子查询中是否存在行,如果存在则返回TRUE而不返回任何行。以下是其基本语法:
SELECT column1, column2, ...
FROM table_name1
WHERE EXISTS (SELECT column_name
FROM table_name2
WHERE condition);
例如:查询包含客户和订单信息的所有客户列表:
SELECT cust_name
FROM customers c
WHERE EXISTS (SELECT *
FROM orders o
WHERE o.cust_id = c.cust_id);
3.4 HAVING语句
HAVING语句用于仅检索分组条件满足特定条件的组的信息,其语法与WHERE语句类似。以下是其基本语法:
SELECT column1, column2, ...
FROM table_name
GROUP BY column_name1, column_name2, ...
HAVING condition;
其中,condition是作为筛选器的表达式。
例如:查询平均工资超过6000的每个部门的员工:
SELECT department, AVG(salary)
FROM employee
GROUP BY department
HAVING AVG(salary) > 6000;
4. 总结
本文介绍了SQL的基础、进阶和高级查询技术。通过使用SELECT、WHERE、ORDER BY、GROUP BY、JOIN、UNION、IN、EXISTS和HAVING语句,可以轻松检索和分析SQL数据。对于初学SQL的读者,希望本文对你有所帮助。