SQL基础

本文介绍了SQL(StructuredQueryLanguage)的基础概念,包括DDL(数据定义语言)、DML(数据操作语言)、DCL(数据控制语言)和TCL(事务控制语言),以及其关键命令如创建、修改、查询、过滤和管理数据库。此外,还涵盖了高级特性如子查询、聚合函数、连接类型和数据库对象管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL(Structured Query Language)是用于管理关系型数据库的标准编程语言。它允许你执行各种操作,包括数据查询、更新记录、管理数据库结构以及控制对数据库的访问。SQL是由ANSI(American National Standards Institute)标准化的,但大多数数据库系统都有自己的SQL方言或扩展。

以下是SQL的一些基本概念和命令:

数据定义语言(DDL)

DDL允许你定义和修改数据库结构。

  • CREATE:创建新的数据库、表、视图或其他数据库对象。
    CREATE TABLE table_name (
        column1 datatype,
        column2 datatype,
        column3 datatype,
        ....
    );
    
  • ALTER:修改现有数据库对象的结构,如添加、删除或修改列。
    ALTER TABLE table_name
    ADD column_name datatype;
    
  • DROP:删除整个数据库、表或视图。
    DROP TABLE table_name;
    
  • TRUNCATE:删除表中的数据,但不删除表本身。
    TRUNCATE TABLE table_name;
    

数据操作语言(DML)

DML用于数据库记录的操作。

  • SELECT:从一个或多个表中检索数据。
    SELECT column1, column2, ...
    FROM table_name
    WHERE condition;
    
  • INSERT INTO:向表中插入新数据。
    INSERT INTO table_name (column1, column2, column3, ...)
    VALUES (value1, value2, value3, ...);
    
  • UPDATE:更新表中的数据。
    UPDATE table_name
    SET column1 = value1, column2 = value2, ...
    WHERE condition;
    
  • DELETE:从表中删除数据。
    DELETE FROM table_name WHERE condition;
    

数据控制语言(DCL)

DCL包括用于数据库访问控制的命令。

  • GRANT:授予用户访问和操作数据库对象的权限。
    GRANT privilege_name
    ON object_name
    TO user_name;
    
  • REVOKE:撤销用户的访问和操作权限。
    REVOKE privilege_name
    ON object_name
    FROM user_name;
    

事务控制语言(TCL)

TCL命令用于管理SQL事务,确保数据的完整性。

  • BEGIN TRANSACTION:开始一个新的事务。
  • COMMIT:保存所有自上次COMMIT或ROLLBACK以来的更改。
    COMMIT;
    
  • ROLLBACK:撤销自上次COMMIT或ROLLBACK以来的所有更改。
    ROLLBACK;
    
  • SAVEPOINT:设置事务中的保存点,可以回滚到特定的保存点。
    SAVEPOINT savepoint_name;
    

关键字和子句

  • WHERE:指定过滤条件。
  • ORDER BY:指定排序顺序。
  • GROUP BY:将结果集合分组。
  • HAVING:在GROUP BY之后进一步筛选组。
  • JOIN:基于共同属性连接两个或多个表。
  • UNIONINTERSECTEXCEPT:合并多个查询结果。

示例查询

以下是一个使用多种SQL命令的示例查询:

SELECT first_name, last_name, email
FROM customers
WHERE city = 'New York'
AND birth_date > '1990-01-01'
ORDER BY last_name ASC;

这个查询选择了“customers”表中城市为“New York”并且出生日期在1990年1月1日之后的顾客的名字和电子邮件,并按姓氏升序排列。

SQL是一种非常强大的工具,理解它的基本原理是与关系型数据库交互的关键。通过学习和应用上述基本概念和命令,你将能够有效地管理和查询数据。

SQL的高级特性和概念,以便更深入地理解这个语言的能力。

高级查询

  • 子查询(Subqueries):查询中的查询,可以在SELECT、FROM或WHERE子句中使用子查询。

    SELECT column_name 
    FROM table_name 
    WHERE column_name IN (SELECT column_name FROM table_name WHERE condition);
    
  • 聚合函数(Aggregate Functions):用于计算如总和、平均值、最大值和最小值等。

    SELECT COUNT(column_name), MAX(column_name)
    FROM table_name
    WHERE condition;
    
  • 分组(GROUP BY):与聚合函数一起使用,对结果集按一个或多个列进行分组。

    SELECT column_name, COUNT(*)
    FROM table_name
    GROUP BY column_name;
    
  • HAVING子句:用于过滤分组后的各组数据,在GROUP BY子句之后使用。

    SELECT column_name, COUNT(*)
    FROM table_name
    GROUP BY column_name
    HAVING COUNT(*) > 5;
    

连接(Joins)

  • 内连接(INNER JOIN):返回两个或多个表中列值相匹配的行。

    SELECT columns
    FROM table1
    INNER JOIN table2
    ON table1.column_name = table2.column_name;
    
  • 左连接(LEFT JOIN):返回左表中的所有行,即使右表中没有匹配的行也会返回空值。

    SELECT columns
    FROM table1
    LEFT JOIN table2
    ON table1.column_name = table2.column_name;
    
  • 右连接(RIGHT JOIN):返回右表中的所有行,即使左表中没有匹配的行也会返回空值。

    SELECT columns
    FROM table1
    RIGHT JOIN table2
    ON table1.column_name = table2.column_name;
    
  • 全外连接(FULL OUTER JOIN):返回左右表中的所有行,如果其中一边没有匹配,那边的结果将为NULL。

    SELECT columns
    FROM table1
    FULL OUTER JOIN table2
    ON table1.column_name = table2.column_name;
    

视图(Views)

  • 视图是数据库中的虚拟表。它是基于SQL语句的结果集的可视化表现。它像一个窗口,通过它可以看到数据库中的数据。
    CREATE VIEW view_name AS
    SELECT column_name(s)
    FROM table_name
    WHERE condition;
    

索引(Indexes)

  • 索引用于快速访问数据库表中的数据。索引是在表的列上创建的,可以显著提高查询的速度。
    CREATE INDEX index_name
    ON table_name (column_name);
    

存储过程(Stored Procedures)

  • 存储过程是为了完成特定功能的SQL语句集,是通过数据库的存储过程功能存储在数据库中的,可以认为是批处理文件。
    CREATE PROCEDURE procedure_name
    AS
    sql_statement
    GO;
    

触发器(Triggers)

  • 触发器是数据库中的一种特殊类型的存储过程,它自动在INSERT、UPDATE或DELETE操作之前或之后执行。
    CREATE TRIGGER trigger_name
    BEFORE INSERT ON table_name
    FOR EACH ROW
    EXECUTE procedure_name;
    

以上是SQL的高级特性和概念,通过掌握这些知识,可以使你更加灵活和有效地使用SQL进行复杂的数据操作和管理。需要注意的是,SQL语句的具体语法可能因不同的数据库系统(例如MySQL、PostgreSQL、Oracle、SQL Server等)而略有不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值