Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > SQL语句常用大全

常用经典SQL语句大全完整版(附详细讲解+实例)

作者:weixin_pk138132

这篇文章主要介绍了常用经典SQL语句大全的相关资料,文中通过代码详细讲解了SQL中最核心、使用最频繁的语句,用于从数据表中查询所需数据,支持简单查询、条件查询、排序、分页等多种场景,需要的朋友可以参考下

SQL 语言分类

SQL(Structured Query Language)是用于管理关系型数据库的标准语言。它主要分为以下几类:

1. 数据库管理

1.1 创建和删除数据库

1.2 数据库备份与恢复 (以 SQL Server 为例)

数据库备份是保证数据安全的重要环节。

2. 表操作 (DDL)

2.1 创建新表

定义表的结构,包括列名、数据类型、约束等。

CREATE TABLE tabname (
    col1 type1 [CONSTRAINT constraint_name] PRIMARY KEY [AUTO_INCREMENT/IDENTITY(seed, increment)], -- 主键,可自增长
    col2 type2 [NOT NULL] [UNIQUE], -- 非空,唯一
    col3 type3 [DEFAULT default_value], -- 默认值
    col4 type4,
    ...
);

示例:创建一个名为 Employees 的表。

CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY AUTO_INCREMENT, -- 员工ID,主键,自增长
    FirstName VARCHAR(50) NOT NULL,          -- 名,非空
    LastName VARCHAR(50) NOT NULL,           -- 姓,非空
    Email VARCHAR(100) UNIQUE,               -- 邮箱,唯一
    HireDate DATE DEFAULT GETDATE(),         -- 入职日期,默认为当前日期
    Salary DECIMAL(10, 2)                    -- 工资
);

2.2 根据现有表创建表

有两种方式:复制表结构(不含数据)或复制表结构及数据。

2.3 删除表

永久删除一个表及其所有数据。

DROP TABLE tabname;

示例:删除 EmployeeBackup 表。

DROP TABLE EmployeeBackup;

2.4 修改表结构 (ALTER TABLE)

2.5 创建和删除索引

索引可以显著提高 SELECT 查询的速度,但会增加 INSERT, UPDATE, DELETE 操作的开销。

3. 视图操作 (DDL/DML)

视图(View)是一个虚拟表,它基于一个 SQL 查询语句的结果集。视图不存储实际数据,但可以像表一样被查询。

3.1 创建视图

CREATE VIEW viewname AS
SELECT column1, column2, ...
FROM tablename
WHERE condition;

示例:创建一个视图,显示所有部门为 ‘Sales’ 的员工姓名和入职日期。

CREATE VIEW SalesEmployees AS
SELECT FirstName, LastName, HireDate
FROM Employees
WHERE Department = 'Sales';

3.2 删除视图

DROP VIEW viewname;

示例:删除 SalesEmployees 视图。

DROP VIEW SalesEmployees;

4. 基本数据操作 (DML)

4.1 选择数据 (SELECT)

查询数据库中的数据。

4.2 插入数据 (INSERT)

向表中添加新记录。

示例:插入一条新员工记录。

INSERT INTO Employees (FirstName, LastName, Email, HireDate, Salary, Department)
VALUES ('Alice', 'Wonderland', 'alice@example.com', '2023-10-01', 60000.00, 'Marketing');

示例:将现有员工的部门信息复制到新员工表中。

INSERT INTO EmployeeBackup (EmployeeID, FirstName, LastName, Salary)
SELECT EmployeeID, FirstName, LastName, Salary
FROM Employees
WHERE Department = 'Sales' AND Salary > 70000;

4.3 删除数据 (DELETE)

移除表中的记录。

DELETE FROM table1 WHERE condition;

示例:删除 Employees 表中工资低于 40000 的所有员工。

DELETE FROM Employees
WHERE Salary < 40000;

示例:删除所有部门为 ‘Temporary’ 的员工。

DELETE FROM Employees
WHERE Department = 'Temporary';

4.4 更新数据 (UPDATE)

修改表中现有记录的字段值。

UPDATE table1 SET field1 = value1, field2 = value2, ... WHERE condition;

示例:将员工ID为 101 的员工的工资提高 10%。

UPDATE Employees
SET Salary = Salary * 1.10
WHERE EmployeeID = 101;

示例:将所有部门为 ‘IT’ 的员工的部门改为 ‘Technology’。

UPDATE Employees
SET Department = 'Technology'
WHERE Department = 'IT';

5. 高级查询与连接

5.1 集合运算符

用于合并多个 SELECT 语句的结果集。

要求:参与集合运算的 SELECT 语句必须具有相同数量的列,且对应列的数据类型兼容。

示例:获取所有男性员工的姓名和所有女性员工的姓名(合并且去重)。

SELECT FirstName, LastName FROM Employees WHERE Gender = 'Male'
UNION
SELECT FirstName, LastName FROM Employees WHERE Gender = 'Female';

5.2 连接 (JOIN)

将来自两个或多个表的记录组合起来,基于它们之间的关联列。

示例:查询所有员工及其所在的部门名称。假设 Employees 表有 DepartmentID 列,Departments 表有 DepartmentIDDepartmentName 列。

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

示例:查询没有分配部门的员工。

SELECT e.FirstName, e.LastName
FROM Employees e
LEFT JOIN Departments d ON e.DepartmentID = d.DepartmentID
WHERE d.DepartmentID IS NULL; -- 或者 WHERE d.DepartmentName IS NULL

5.3 统计与聚合查询

如前文 GROUP BY 部分所述,聚合函数用于对一组行进行计算。

6. 子查询与表复制

6.1 子查询 (Subquery)

子查询是在 WHERE, FROM, SELECT 子句中嵌套的查询语句,用于返回数据供外部查询使用。

6.2 复制表结构与数据

7. 随机数据处理与重复数据处理

7.1 随机选择记录

从表中随机抽取一定数量的记录。不同数据库系统语法略有差异。

7.2 删除重复记录

识别并保留每组重复记录中的一条(通常是ID最大或最小的),删除其余的。

8. 数据库和表信息查询

用于查看数据库的元数据(关于数据的数据)。

9. 事务管理 (DCL)

事务是一组数据库操作的逻辑单元。事务要么全部成功执行,要么全部不执行,以保证数据的一致性和完整性。

9.1 事务控制语句

9.2 事务管理示例

一个典型的转账场景:从账户A扣款,给账户B加款。

BEGIN TRANSACTION;
-- 1. 从账户 A 扣除 100 元
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
-- 2. 检查扣款操作是否成功 (SQL Server 的 @@ERROR, 其他数据库可能有类似机制或异常处理)
IF @@ERROR <> 0
BEGIN
    -- 如果发生错误,回滚事务
    ROLLBACK TRANSACTION;
    PRINT 'Error: Failed to debit account 1. Transaction rolled back.';
END
ELSE
BEGIN
    -- 3. 给账户 B 增加 100 元
    UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
    -- 4. 检查加款操作是否成功
    IF @@ERROR <> 0
    BEGIN
        -- 如果发生错误,回滚事务
        ROLLBACK TRANSACTION;
        PRINT 'Error: Failed to credit account 2. Transaction rolled back.';
    END
    ELSE
    BEGIN
        -- 5. 如果所有操作都成功,提交事务
        COMMIT TRANSACTION;
        PRINT 'Transaction completed successfully. Balances updated.';
    END
END

说明

通过掌握这些SQL语句,您将能够高效、准确地进行数据库管理和数据操作,确保数据操作的完整性和安全性。

总结

到此这篇关于常用经典SQL语句大全完整版的文章就介绍到这了,更多相关SQL语句常用大全内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文