SQL 入门教程

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;


相关推荐

  1. Sql入门教程

    2024-06-18 12:06:02       28 阅读
  2. SQL入门详细教程

    2024-06-18 12:06:02       34 阅读
  3. SQL入门教程

    2024-06-18 12:06:02       33 阅读
  4. SQL入门教程

    2024-06-18 12:06:02       25 阅读
  5. SQL 基础入门教程

    2024-06-18 12:06:02       32 阅读
  6. SQL 入门教程

    2024-06-18 12:06:02       33 阅读
  7. SQL入门教程

    2024-06-18 12:06:02       29 阅读
  8. SQL 入门教程

    2024-06-18 12:06:02       27 阅读
  9. SQL入门教程

    2024-06-18 12:06:02       33 阅读
  10. SQL入门基础教程

    2024-06-18 12:06:02       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-18 12:06:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-18 12:06:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-18 12:06:02       87 阅读
  4. Python语言-面向对象

    2024-06-18 12:06:02       96 阅读

热门阅读

  1. Docker容器技术在Linux平台的应用与实践

    2024-06-18 12:06:02       26 阅读
  2. 【MySQL】——概念、逻辑、物理结构设计

    2024-06-18 12:06:02       34 阅读
  3. vue跨域问题,请注意你的项目是vue2还是vue3

    2024-06-18 12:06:02       30 阅读
  4. Aeron:Common Errors

    2024-06-18 12:06:02       37 阅读
  5. Nginx 网站服务

    2024-06-18 12:06:02       22 阅读
  6. 整理水土保持设计乙级资质申报材料的全面指南

    2024-06-18 12:06:02       36 阅读
  7. 【康复学习--LeetCode每日一题】2288. 价格减免

    2024-06-18 12:06:02       41 阅读
  8. C语言从头学21——函数

    2024-06-18 12:06:02       35 阅读
  9. 自然语言处理nlp概述

    2024-06-18 12:06:02       41 阅读