SQL 入门教程

发布于:2024-06-18 ⋅ 阅读:(104) ⋅ 点赞:(0)

SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系数据库的标准语言。无论是查询数据、插入新记录、更新现有记录,还是删除记录,SQL 都提供了一整套完整的指令。本教程将带您从基础开始,逐步掌握 SQL 的核心概念和常用操作。

一、SQL 基础概念

1. 什么是 SQL?

SQL 是一种标准的数据库查询和操作语言,用于在关系数据库管理系统(RDBMS)中进行数据操作。它可以用于创建、读取、更新和删除数据库中的数据。

2. 关系数据库管理系统(RDBMS)

RDBMS 是基于关系模型的数据库管理系统。常见的 RDBMS 有 MySQL、PostgreSQL、Oracle、SQL Server 等。它们都支持 SQL 语言,但在某些特性和功能上可能略有不同。

二、SQL 的基本操作

1. 创建数据库和表

创建数据库

sql复制代码CREATE DATABASE mydatabase;

创建表

sql复制代码CREATE TABLE employees ( id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), birth_date DATE, hire_date DATE );

2. 插入数据

sql复制代码INSERT INTO employees (id, first_name, last_name, birth_date, hire_date) VALUES (1, 'John', 'Doe', '1980-01-01', '2020-01-15');

3. 查询数据

查询所有列

sql复制代码SELECT * FROM employees;

查询特定列

sql复制代码SELECT first_name, last_name FROM employees;

使用条件查询

sql复制代码SELECT * FROM employees WHERE first_name = 'John';

4. 更新数据

sql复制代码UPDATE employees SET last_name = 'Smith' WHERE id = 1;

5. 删除数据

sql复制代码DELETE FROM employees WHERE id = 1;

三、SQL 的高级操作

1. 聚合函数

COUNT

sql复制代码SELECT COUNT(*) FROM employees;

SUM

sql复制代码SELECT SUM(salary) FROM employees;

AVG

sql复制代码SELECT AVG(salary) FROM employees;

MAX 和 MIN

sql复制代码SELECT MAX(salary) FROM employees; SELECT MIN(salary) FROM employees;

2. 分组和排序

分组(GROUP BY)

sql复制代码SELECT department, COUNT(*) FROM employees GROUP BY department;

排序(ORDER BY)

sql复制代码SELECT * FROM employees ORDER BY last_name ASC; SELECT * FROM employees ORDER BY hire_date DESC;

3. 联合查询(JOIN)

内连接(INNER JOIN)

sql复制代码SELECT employees.first_name, employees.last_name, departments.name FROM employees INNER JOIN departments ON employees.department_id = departments.id;

左连接(LEFT JOIN)

sql复制代码SELECT employees.first_name, employees.last_name, departments.name FROM employees LEFT JOIN departments ON employees.department_id = departments.id;

右连接(RIGHT JOIN)

sql复制代码SELECT employees.first_name, employees.last_name, departments.name FROM employees RIGHT JOIN departments ON employees.department_id = departments.id;

4. 子查询

作为条件的子查询

sql复制代码SELECT first_name, last_name FROM employees WHERE department_id = (SELECT id FROM departments WHERE name = 'Sales');

作为列的子查询

sql复制代码SELECT first_name, last_name, (SELECT name FROM departments WHERE departments.id = employees.department_id) AS department_name FROM employees;

四、数据库设计的基本原则

1. 规范化

数据库设计的规范化包括将数据分解为多个相关表,以减少数据冗余和提高数据完整性。常见的规范化范式有第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。

2. 主键和外键

  • 主键(Primary Key):唯一标识表中的每一行记录,通常是单个列或一组列。
  • 外键(Foreign Key):用于建立和强制连接两个表之间的关系。

3. 数据完整性

通过定义适当的数据类型、设置约束(如 NOT NULL、UNIQUE、CHECK 等)来确保数据的准确性和一致性。

五、实战练习

通过以下几个简单的练习,可以巩固您对 SQL 的理解和掌握。

1. 创建并填充数据库和表

sql复制代码CREATE DATABASE company; USE company; CREATE TABLE departments ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL ); CREATE TABLE employees ( id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), department_id INT, hire_date DATE, FOREIGN KEY (department_id) REFERENCES departments(id) ); INSERT INTO departments (id, name) VALUES (1, 'Sales'), (2, 'Engineering'); INSERT INTO employees (id, first_name, last_name, department_id, hire_date) VALUES (1, 'John', 'Doe', 1, '2020-01-15'), (2, 'Jane', 'Smith', 2, '2019-03-10');

2. 查询和操作数据

  • 查询所有员工的信息:

    sql复制代码SELECT * FROM employees;
  • 查询特定部门的员工:

    sql复制代码SELECT first_name, last_name FROM employees WHERE department_id = 1;
  • 更新员工的部门信息:

    sql复制代码UPDATE employees SET department_id = 2 WHERE id = 1;
  • 删除某个员工:

    sql复制代码DELETE FROM employees WHERE id = 2;