当前位置: 首页 > article >正文

SQL常用语法详解

SQL 常用语法详解:数据库开发者的基础指南

Structured Query Language(SQL)是管理和操作关系型数据库的标准语言,广泛应用于数据查询、数据操控和数据库管理。无论是构建数据库、查询数据,还是更新表格,SQL 都是数据库开发者的核心工具。本文将详细介绍一些常用的SQL语法,帮助初学者掌握其基本操作。


1. SQL 查询:SELECT 语句

SQL 查询是从数据库中提取数据的最常用操作,基本的语法格式是:

SELECT 列名1, 列名2 FROM 表名 WHERE 条件;
  • SELECT *:提取表中的所有列。
  • WHERE:筛选符合特定条件的行。
  • ORDER BY:对结果按指定列排序。
  • LIMIT:限制返回的结果数。

示例:查询所有年龄大于25的用户,并按年龄降序排列。

SELECT name, age 
FROM users 
WHERE age > 25 
ORDER BY age DESC 
LIMIT 10;

2. 插入数据:INSERT INTO

INSERT INTO 用于向表中添加新数据,语法如下:

INSERT INTO 表名 (列名1, 列名2, ...)
VALUES (1,2, ...);
  • 插入数据必须与表的列结构匹配。

示例:向 users 表中插入一条新记录:

INSERT INTO users (name, age, email) 
VALUES ('Alice', 28, 'alice@example.com');

3. 更新数据:UPDATE

UPDATE 语句用于修改表中的数据,语法如下:

UPDATE 表名
SET 列名1 =1, 列名2 =2, ...
WHERE 条件;
  • WHERE 是可选的,但非常重要,因为未指定条件时会更新表中的所有记录。

示例:更新用户 Alice 的年龄:

UPDATE users 
SET age = 29 
WHERE name = 'Alice';

4. 删除数据:DELETE

DELETE 语句用于删除表中的记录,基本语法为:

DELETE FROM 表名 WHERE 条件;
  • 注意:没有 WHERE 子句的 DELETE 会删除表中的所有行。

示例:删除年龄小于18的用户记录:

DELETE FROM users 
WHERE age < 18;

5. 创建表:CREATE TABLE

创建新表时使用 CREATE TABLE 语句,语法格式为:

CREATE TABLE 表名 (
    列名1 数据类型 约束,
    列名2 数据类型 约束,
    ...
);
  • 每个列都要指定数据类型(如 INT, VARCHAR, DATE 等)。
  • 可以定义约束,如 PRIMARY KEY, NOT NULL, UNIQUE

示例:创建一个 employees 表:

CREATE TABLE employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    position VARCHAR(50),
    hire_date DATE
);

6. 修改表:ALTER TABLE

ALTER TABLE 语句用于修改现有表的结构,如添加或删除列:

ALTER TABLE 表名 
ADD 列名 数据类型 约束;

示例:为 employees 表添加 salary 列:

ALTER TABLE employees 
ADD salary DECIMAL(10, 2);

7. 连接表:JOIN

JOIN 允许从多个表中联合查询数据,常见的连接类型有:

  • INNER JOIN:只返回两表中匹配的数据。
  • LEFT JOIN:返回左表所有记录及其匹配数据。
  • RIGHT JOIN:返回右表所有记录及其匹配数据。
  • FULL JOIN:返回两表中所有匹配和不匹配的数据。

示例:将 orders 表和 customers 表连接,获取每个订单及其客户信息:

SELECT orders.order_id, customers.name, customers.email 
FROM orders 
INNER JOIN customers ON orders.customer_id = customers.customer_id;

8. 聚合函数与分组:GROUP BYHAVING

SQL 提供了多种聚合函数来统计数据,如 COUNT(), SUM(), AVG(), MIN(), MAX()。通过 GROUP BY 对数据进行分组,并使用 HAVING 过滤聚合结果。

示例:统计每个职位的员工数量:

SELECT position, COUNT(*) AS num_employees 
FROM employees 
GROUP BY position
HAVING COUNT(*) > 1;

9. 子查询(Subqueries)

子查询是在查询中嵌套另一个查询,用于复杂的查询操作。

示例:查询员工数量大于 10 的部门:

SELECT department_name 
FROM departments 
WHERE (SELECT COUNT(*) 
       FROM employees 
       WHERE employees.department_id = departments.department_id) > 10;

10. 视图:CREATE VIEW

VIEW 是一个虚拟表,基于 SQL 查询生成,可以像表一样进行查询。视图可以简化复杂的查询,提升可读性。

示例:创建一个显示高薪员工的视图:

CREATE VIEW high_salary_employees AS 
SELECT name, salary 
FROM employees 
WHERE salary > 10000;

11. 事务控制:BEGIN, COMMIT, ROLLBACK

事务确保一组操作要么全部执行成功,要么全部回滚到操作前的状态。主要的事务控制命令包括:

  • BEGIN TRANSACTION:启动事务。
  • COMMIT:提交事务,确认更改。
  • ROLLBACK:回滚事务,撤销更改。

示例:在事务中更新两张表,确保数据一致性:

BEGIN TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;

COMMIT;

12. 索引:CREATE INDEX

索引用于加速查询,提高数据检索的速度。常用于查询频繁的列。

示例:为 employees 表的 name 列创建索引:

CREATE INDEX idx_name ON employees(name);

SQL 是数据管理的核心语言,掌握常用的 SQL 语法对于数据库开发与维护至关重要。本文介绍了从数据查询、插入、更新、删除,到更复杂的连接、分组、子查询等操作,帮助读者全面了解SQL的基本功能。SQL 在实际应用中非常灵活,可以用于复杂的数据操作和分析,是每个开发者和数据工程师必备的技能。


http://www.kler.cn/a/319205.html

相关文章:

  • MySQL查询某个数据库中特定表的空间占用大小
  • sealos部署K8s,安装docker时master节点突然NotReady
  • 重构开发之道,Blackbox.AI为技术注入智能新动力
  • 软件测试面试大全(含答案+文档)
  • Excel筛选的操作教程
  • Centos安装Elasticsearch教程
  • SelMatch:最新数据集蒸馏,仅用5%训练数据也是可以的 | ICML‘24
  • 【深度学习】聊一聊正则化
  • C++之 string(中)
  • 1.1 elasticsearch分布式集群基本搭建(centos7.x + elaticsearch7.11.1)
  • 【代码随想录训练营第42期 Day60打卡 - 图论Part10 - Bellman_ford算法系列运用
  • 什么是集成学习?
  • 如何使用ssm实现基于VUE.js的在线教育系统+vue
  • Go调试工具—— Delve
  • 2024 ICPC ShaanXi Provincial Contest —— C. Seats(个人理解)拓扑+dfs
  • 深度学习(4):torch.nn.Module
  • flink 的 Barrier 对齐 的优劣详解:
  • PHP 中 empty() 函数的作用
  • PAT甲级-1083 List Grades
  • 如何选择渲染集群管理软件?
  • css基础知识笔记
  • 【Pyside】pycharm2024配置conda虚拟环境
  • Jmeter 线程组解析
  • 产品经理如何转到AI赛道?优势在哪?待遇如何?
  • C++系列-STL容器中统计算法count, count_if
  • uniapp调用安卓service实现后台运行