3.SQL基础
3.1 什么是SQL
SQL(Structured Query Language)是用于管理和操作关系型数据库的标准编程语言。通过 SQL,用户可以创建、修改、查询和删除数据库中的数据,同时也能控制数据库的访问权限和事务管理。SQL 起源于 1970 年代的关系数据库理论,由 IBM 公司开发,并逐渐成为关系型数据库领域的标准语言,现已被广泛应用于如 MySQL、PostgreSQL、SQL Server 和 Oracle 等主流数据库系统。
SQL 既具备简单易用的查询语言特性,又有复杂的操作能力,能够高效处理数据存储、数据管理和业务逻辑。SQL 语言的核心功能主要围绕数据定义、数据操作、数据查询、事务控制和访问权限管理等方面展开。
3.2 SQL的分类
SQL 可以根据不同的功能划分为多个子集。SQL 不仅是简单的数据查询工具,它提供了全面的数据操作和管理能力,确保数据库的完整性和一致性。以下是 SQL 的主要分类:
3.2.1 DDL(数据定义语言)
数据定义语言(Data Definition Language) 用于定义、修改和删除数据库结构对象,如数据库、表、视图和索引。它是数据库管理中的基础部分,负责确定数据库的组织和结构。常见的 DDL 命令包括:
1. CREATE:用于创建数据库对象,例如创建新的数据库、表、视 图或索引。
-- 创建数据库
CREATE DATABASE company_db;
-- 创建表
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
position VARCHAR(50),
salary DECIMAL(10,2)
);
2. ALTER:用于修改已有数据库对象的结构,例如为表增加、修改或删除列。
-- 向表中添加新列
ALTER TABLE employees ADD COLUMN email VARCHAR(100);
-- 修改已有列的数据类型
ALTER TABLE employees MODIFY salary DECIMAL(12,2);
3. DROP:用于删除数据库对象,如表或索引。该操作会永久性地移除对象及其数据。
-- 删除表
DROP TABLE employees;
4. TRUNCATE:用于清空表中的所有数据,但保留表的结构。与 DELETE 不同,TRUNCATE 不能回滚操作。
-- 清空表
TRUNCATE TABLE employees;
DDL 的关键特性是其操作不可回滚,一旦执行了诸如 DROP 或 TRUNCATE 这样的命令,删除的数据和结构将永久丢失。
3.2.2 DML(数据操作语言)
数据操作语言(Data Manipulation Language) 主要用于对数据库中的数据进行插入、更新、删除等操作。DML 命令处理的数据均存储在数据库表中,它是用户和数据库交互的主要方式。DML 包括以下操作:
1. INSERT:用于向数据库表中插入新记录。
-- 插入新数据
INSERT INTO employees (id, name, position, salary)
VALUES (1, 'John Doe', 'Software Engineer', 60000.00);
2. UPDATE:用于更新表中已有数据。通过 WHERE 子句,可以有选择地更新部分记录。
-- 更新数据
UPDATE employees
SET salary = 65000.00
WHERE id = 1;
3. DELETE:用于删除表中的数据。与 TRUNCATE 不同,DELETE 可以通过 WHERE 子句选择性地删除记录,并且可以回滚操作。
-- 删除指定数据
DELETE FROM employees
WHERE id = 1;
DML 操作通常与事务控制语言(TCL)结合使用,确保数据的完整性和一致性。
3.2.3 DQL(数据查询语言)
数据查询语言(Data Query Language) 专注于数据的检索,主要通过 SELECT 语句完成。DQL 是 SQL 中使用最广泛的部分,它允许用户按照特定条件从数据库中提取数据,进行排序、过滤、分组等操作。常用的 DQL 操作包括:
SELECT:用于查询数据。可以通过 WHERE 子句过滤数据,ORDER BY 子句排序,GROUP BY 子句分组,JOIN 子句关联多个表。
-- 查询所有员工信息
SELECT * FROM employees;
-- 查询特定字段
SELECT name, position FROM employees;
-- 查询符合条件的记录
SELECT * FROM employees
WHERE salary > 50000;
DQL 是 SQL 语言中最灵活和强大的部分之一。通过结合 WHERE、GROUP BY、HAVING、ORDER BY 等子句,用户可以灵活高效地提取所需数据。