引言
SQL(Structured Query Language)是一种用于管理和操作关系数据库的标准编程语言。无论是数据科学家、数据分析师还是开发者,掌握SQL都是处理和分析数据的关键技能。本文将带你从SQL的基础知识开始,逐步了解各种常用关键词及其用法,并通过一个综合案例展示如何在实际中使用这些关键词。
SQL 介绍
SQL 主要用于执行以下操作:
- 数据查询:从数据库中检索数据。
- 数据更新:插入、更新或删除数据库中的数据。
- 数据定义:创建或修改数据库结构。
- 数据控制:设置用户权限,管理访问控制。
SQL 语法基础
SQL 语句通常以分号(;
)结尾,并且不区分大小写,但习惯上关键词大写,以提高可读性。
常用关键词详解
-
SELECT
用于从数据库中检索数据。
SELECT column1, column2 FROM table_name;
-
SELECT DISTINCT
返回唯一不同的值。
SELECT DISTINCT column_name FROM table_name;
-
WHERE
用于过滤记录,只返回符合条件的记录。
SELECT column_name FROM table_name WHERE condition;
-
AND, OR, NOT
逻辑运算符,用于组合多个条件。
SELECT column_name FROM table_name WHERE condition1 AND condition2; SELECT column_name FROM table_name WHERE condition1 OR condition2; SELECT column_name FROM table_name WHERE NOT condition;
-
ORDER BY
对结果集进行排序。
SELECT column_name FROM table_name ORDER BY column_name ASC|DESC;
-
INSERT INTO
向表中插入新记录。
INSERT INTO table_name (column1, column2) VALUES (value1, value2);
-
NULL VALUES
NULL 表示缺失的值。
INSERT INTO table_name (column1, column2) VALUES (value1, NULL);
-
UPDATE
修改表中已存在的记录。
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
-
DELETE
删除表中的记录。
DELETE FROM table_name WHERE condition;
-
SELECT TOP/MIN 和 MAX
返回记录集中的前几条记录或最大值/最小值。
SELECT TOP number column_name FROM table_name; SELECT MAX(column_name) FROM table_name; SELECT MIN(column_name) FROM table_name;
-
COUNT, AVG, SUM
聚合函数,用于计算总数、平均值和总和。
SELECT COUNT(column_name) FROM table_name; SELECT AVG(column_name) FROM table_name; SELECT SUM(column_name) FROM table_name;
-
LIKE
用于在 WHERE 子句中搜索列中的特定模式。
SELECT column_name FROM table_name WHERE column_name LIKE pattern;
-
通配符
与 LIKE 一起使用,用于定义搜索模式。
%
:代表任意数量的字符(包括零个字符)。_
:代表单个字符。
SELECT column_name FROM table_name WHERE column_name LIKE 'a%'; SELECT column_name FROM table_name WHERE column_name LIKE 'a_c';
-
IN
允许在 WHERE 子句中指定多个可能的值。
SELECT column_name FROM table_name WHERE column_name IN (value1, value2, ...);
-
BETWEEN
用于在两个值之间检索数据范围。
SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2;
实战案例
假设我们有一个名为 students
的表,包含以下字段:student_id
, name
, age
, grade
, city
。
-- 创建表
CREATE TABLE students (student_id INT PRIMARY KEY,name VARCHAR(100),age INT,grade VARCHAR(10),city VARCHAR(100)
);-- 插入数据
INSERT INTO students (student_id, name, age, grade, city) VALUES
(1, 'Alice', 22, 'A', 'New York'),
(2, 'Bob', 23, 'B', 'Los Angeles'),
(3, 'Charlie', 21, 'A', 'Chicago'),
(4, 'David', 24, 'C', 'New York'),
(5, 'Eva', 22, 'B', 'Los Angeles');
-
查询所有学生
SELECT * FROM students;
-
查询来自 New York 的学生
SELECT * FROM students WHERE city = 'New York';
-
查询年龄大于22岁且成绩为A的学生
SELECT * FROM students WHERE age > 22 AND grade = 'A';
-
按年龄排序查询所有学生
SELECT * FROM students ORDER BY age ASC;
-
查询所有不同的城市
SELECT DISTINCT city FROM students;
-
查询年龄最小的学生
SELECT name, age FROM students ORDER BY age ASC LIMIT 1; -- MySQL 使用 LIMIT,SQL Server 使用 TOP 1
-
计算学生的平均年龄
SELECT AVG(age) AS average_age FROM students;
-
查询名字以 ‘A’ 开头的学生
SELECT * FROM students WHERE name LIKE 'A%';
-
查询来自 New York 或 Los Angeles 的学生
SELECT * FROM students WHERE city IN ('New York', 'Los Angeles');
-
查询年龄在21到23之间的学生
SELECT * FROM students WHERE age BETWEEN 21 AND 23;
通过这篇文章,希望你能对SQL有一个初步的了解,并能开始使用SQL进行数据查询和基本的数据库操作。实践是提高SQL技能的最佳方式,不妨动手尝试更多的SQL语句,加深理解和记忆。