SQL 基础入门教程

目录

[什么是 SQL?](#什么是 SQL?)

[SQL 的基本操作](#SQL 的基本操作)

数据库的创建和删除

表的创建和删除

数据的插入

数据的查询

数据的更新

数据的删除

[SQL 的高级操作](#SQL 的高级操作)

表的连接

聚合函数

分组和排序

子查询

视图

索引

[SQL 的数据完整性和约束](#SQL 的数据完整性和约束)

总结


SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系数据库的标准编程语言。无论是查询数据、更新记录,还是创建数据库和表结构,SQL 都提供了强大的功能。本文旨在为初学者提供一份全面的 SQL 基础入门教程,帮助你快速上手并掌握 SQL 的基本操作。

什么是 SQL?

SQL 是一种用于访问和操作数据库的标准语言。它最早由 IBM 在 1970 年代开发,并在 1986 年被美国国家标准学会(ANSI)和国际标准化组织(ISO)采纳为标准。SQL 的主要功能包括:

  • 数据查询
  • 数据插入
  • 数据更新
  • 数据删除
  • 数据库和表的创建和修改
  • 数据库权限管理

SQL 的基本操作

数据库的创建和删除

在开始操作数据库之前,我们需要先创建一个数据库。以下是创建和删除数据库的基本语法:

复制代码
-- 创建数据库
CREATE DATABASE 数据库名称;

-- 删除数据库
DROP DATABASE 数据库名称;

例如,创建一个名为 TestDB 的数据库:

复制代码
CREATE DATABASE TestDB;

删除 TestDB 数据库:

复制代码
DROP DATABASE TestDB;

表的创建和删除

数据库创建好之后,我们需要在数据库中创建表。表是数据库的基本存储结构,由行和列组成。以下是创建和删除表的基本语法:

复制代码
-- 创建表
CREATE TABLE 表名称 (
    列名称1 数据类型 约束条件,
    列名称2 数据类型 约束条件,
    ...
);

-- 删除表
DROP TABLE 表名称;

例如,创建一个名为 Employees 的表:

复制代码
CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    BirthDate DATE,
    Salary DECIMAL(10, 2)
);

删除 Employees 表:

复制代码
DROP TABLE Employees;

数据的插入

创建表后,我们可以向表中插入数据。以下是插入数据的基本语法:

复制代码
INSERT INTO 表名称 (列名称1, 列名称2, ...) VALUES (值1, 值2, ...);

例如,向 Employees 表中插入一条记录:

复制代码
INSERT INTO Employees (EmployeeID, FirstName, LastName, BirthDate, Salary) 
VALUES (1, 'John', 'Doe', '1980-01-01', 50000.00);

数据的查询

查询数据是 SQL 中最常用的操作之一。以下是基本的查询语法:

复制代码
SELECT 列名称1, 列名称2, ... FROM 表名称 WHERE 条件;

例如,查询 Employees 表中的所有记录:

复制代码
SELECT * FROM Employees;

查询 Employees 表中 Salary 大于 30000 的记录:

复制代码
SELECT * FROM Employees WHERE Salary > 30000;

数据的更新

有时我们需要修改表中的数据。以下是更新数据的基本语法:

复制代码
UPDATE 表名称 SET 列名称1 = 新值1, 列名称2 = 新值2, ... WHERE 条件;

例如,更新 Employees 表中 EmployeeID 为 1 的记录,将 Salary 修改为 55000:

复制代码
UPDATE Employees SET Salary = 55000 WHERE EmployeeID = 1;

数据的删除

删除表中的数据也是常见操作之一。以下是删除数据的基本语法:

复制代码
DELETE FROM 表名称 WHERE 条件;

例如,删除 Employees 表中 EmployeeID 为 1 的记录:

复制代码
DELETE FROM Employees WHERE EmployeeID = 1;

SQL 的高级操作

表的连接

在实际应用中,我们经常需要从多个表中查询数据。表的连接(JOIN)操作可以实现这一点。以下是基本的连接语法:

复制代码
SELECT 列名称1, 列名称2, ... FROM 表1 JOIN 表2 ON 表1.列名称 = 表2.列名称;

例如,有两个表 DepartmentsEmployees,我们可以通过部门 ID(DepartmentID)将这两个表连接起来:

复制代码
CREATE TABLE Departments (
    DepartmentID INT PRIMARY KEY,
    DepartmentName VARCHAR(50)
);

INSERT INTO Departments (DepartmentID, DepartmentName) VALUES (1, 'HR'), (2, 'Engineering');

SELECT Employees.FirstName, Employees.LastName, Departments.DepartmentName
FROM Employees
JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

聚合函数

SQL 提供了一些聚合函数,用于对数据进行汇总和统计。常见的聚合函数包括:

  • COUNT:计算行数
  • SUM:求和
  • AVG:平均值
  • MAX:最大值
  • MIN:最小值

例如,计算 Employees 表中的员工总数:

复制代码
SELECT COUNT(*) FROM Employees;

计算 Employees 表中所有员工的平均工资:

复制代码
SELECT AVG(Salary) FROM Employees;

分组和排序

分组(GROUP BY)和排序(ORDER BY)操作是 SQL 中的两个重要功能。分组用于将数据按某一列进行分组,并对每组数据进行聚合计算;排序用于对查询结果按照某一列进行升序或降序排列。

例如,按照部门分组,计算每个部门的平均工资:

复制代码
SELECT DepartmentID, AVG(Salary) AS AvgSalary
FROM Employees
GROUP BY DepartmentID;

按照工资降序排列查询结果:

复制代码
SELECT * FROM Employees
ORDER BY Salary DESC;

子查询

子查询是嵌套在其他 SQL 语句中的查询,可以用来进行复杂的数据筛选和计算。子查询可以出现在 SELECTINSERTUPDATEDELETE 语句中。

例如,查询工资最高的员工:

复制代码
SELECT * FROM Employees
WHERE Salary = (SELECT MAX(Salary) FROM Employees);

视图

视图(View)是基于 SQL 查询结果的虚拟表,可以简化复杂查询并提高数据安全性。以下是创建和删除视图的基本语法:

复制代码
-- 创建视图
CREATE VIEW 视图名称 AS
SELECT 查询内容;

-- 删除视图
DROP VIEW 视图名称;

例如,创建一个仅包含员工姓名和工资的视图:

复制代码
CREATE VIEW EmployeeSalaries AS
SELECT FirstName, LastName, Salary FROM Employees;

查询 EmployeeSalaries 视图:

复制代码
SELECT * FROM EmployeeSalaries;

索引

索引(Index)用于提高数据库查询性能。以下是创建和删除索引的基本语法:

复制代码
-- 创建索引
CREATE INDEX 索引名称 ON 表名称 (列名称);

-- 删除索引
DROP INDEX 索引名称;

例如,创建一个基于 LastName 列的索引:

复制代码
CREATE INDEX idx_lastname ON Employees (LastName);

SQL 的数据完整性和约束

在设计数据库时,确保数据的完整性和一致性非常重要。SQL 提供了多种约束条件来保证数据的正确性和有效性,常见的约束条件包括:

  • PRIMARY KEY:主键,唯一标识表中的每一行记录
  • FOREIGN KEY:外键,用于建立表之间的关系
  • UNIQUE:唯一约束,确保列中的值唯一
  • NOT NULL:非空约束,确保列中的值不能为空
  • CHECK:检查约束,确保列中的值符合指定条件

例如,创建一个 Orders 表,包含上述约束:

复制代码
CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    EmployeeID INT,
    OrderDate DATE NOT NULL,
    Amount DECIMAL(10, 2) CHECK (Amount > 0),
    FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
);

总结

通过本文的学习,相信你已经掌握了 SQL 的基本操作和一些高级功能。SQL 是一个功能强大且灵活的工具,可以帮助你高效地管理和操作数据库。在实际应用中,理解和熟练使用 SQL 将大大提高你的工作效率。

为了进一步提升你的 SQL 技能,建议你多动手实践,多尝试不同的查询和操作。同时,可以参考更多的 SQL 教程和文档,不断深入学习和探索 SQL 的高级功能。希望本文能为你的 SQL 学习之旅提供一个良好的起点。

相关推荐
Goona_10 小时前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
rufeii13 小时前
[极客大挑战 2019]FinalSQL--布尔盲注
sql
技术卷18 小时前
详解力扣高频SQL50题之1084. 销售分析 III【简单】
sql·leetcode·oracle
NPE~21 小时前
基于MySQL实现基础图数据库
数据库·sql·mysql·教程·图数据库·图结构
技术卷21 小时前
详解力扣高频SQL50题之550. 游戏玩法分析 IV【中等】
sql·mysql·leetcode·oracle
样子201821 小时前
Sql注入 之sqlmap使用教程
数据库·sql
技术卷1 天前
详解力扣高频 SQL 50 题之584. 寻找用户推荐人【入门】
sql·leetcode·oracle
ALLSectorSorft1 天前
教务管理系统学排课教务系统模块设计
数据库·sql·oracle
笑衬人心。1 天前
后端项目中大量 SQL 执行的性能优化
sql·spring·性能优化
旧时光巷2 天前
SQL基础⑭ | 变量、流程控制与游标篇
数据库·sql·学习·mysql·变量·游标·流程控制