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

初识SQL

SQL

定义:SQL(Structured Query Language,结构化查询语言)是一种标准化的数据库操作语言,广泛用于关系数据库管理系统(RDBMS),如 MySQL、PostgreSQL 等。它支持数据的定义(DDL)、操作(DML)和控制(DCL)。

作用

  • DDL(Data Definition Language):定义和管理数据库结构(如 CREATE TABLE)。
  • DML(Data Manipulation Language):操作数据(如 SELECTINSERT)。
  • DCL(Data Control Language):控制访问权限(如 GRANTREVOKE)。

优点
  1. 描述性强:SQL 使用声明式语句,用户只需指定“想要什么”,无需关心底层实现。例如:SELECT name FROM students WHERE age > 18;
  2. 非过程化语言:SQL 不支持循环或条件分支(如 if-else),但可以通过子查询和连接实现复杂逻辑。
  3. 跨平台性(补充):SQL 是 ANSI/ISO 标准,大多数 RDBMS 支持核心语法,具有良好的可移植性。

SQL 的五种主要用途
  1. 更新数据(Update)
    • 示例:UPDATE employees SET salary = salary * 1.1 WHERE dept_id = 3;
    • 含义:将部门 3 的员工薪资提高 10%。
  2. 读取数据(Read)
    • 示例:SELECT name, age FROM students WHERE age BETWEEN 18 AND 25 ORDER BY age;
    • 含义:查询 18-25 岁学生的姓名和年龄,并按年龄排序。
  3. 写入数据(Write)
    • 示例:INSERT INTO orders (order_id, customer_id, date) VALUES (1001, 5, '2025-03-01');
    • 含义:插入一条订单记录。
  4. 删除数据
    • 示例:DELETE FROM users WHERE last_login < '2024-01-01';
    • 含义:删除超过一年的未登录用户。
  5. 结构管理
    • 示例:CREATE TABLE products (id INT PRIMARY KEY, name VARCHAR(50), price DECIMAL(10,2));
    • 含义:创建商品表。

工作中会使用 SQL 的职业
  • 通用职业
    • 后端开发人员:编写 API 时使用 SQL 查询数据库,如 SELECT * FROM orders WHERE status = 'pending';
    • 数据科学家:结合 SQL 和 Python(如 pandas)分析数据,例如:SELECT AVG(salary) FROM employees GROUP BY dept_id;
  • 数据管理员(DBA)
    1. 性能优化:创建索引,如 CREATE INDEX idx_name ON employees(name);
    2. 备份与恢复:使用 BACKUP DATABASE db_name TO DISK = 'path';(SQL Server 示例)。
    3. 权限管理GRANT SELECT ON customers TO analyst_role;

流行的 SQL 数据库系统
  1. SQL Server:支持 T-SQL(扩展 SQL),适用于企业级高可用性场景。
    • 示例:SELECT TOP 5 * FROM sales ORDER BY amount DESC;(查询销售额前 5)。
  2. PostgreSQL:支持 JSON 和高级索引,适合复杂查询。
    • 示例:SELECT * FROM users WHERE data->>'age' > '25';(查询 JSON 字段)。
  3. MySQL:优化了高并发读写,常见于 Web 应用。
    • 示例:SELECT COUNT(*) FROM logs WHERE date = CURDATE();(统计今日日志)。
  4. SQLite:无服务器架构,适合嵌入式系统。
    • 示例:SELECT * FROM contacts LIMIT 10;(查询前 10 条记录)。

深入内容:SQL 查询示例
  1. 连接查询
    SELECT e.name, d.dept_name
    FROM employees e
    INNER JOIN departments d ON e.dept_id = d.id
    WHERE e.salary > 50000;
    
    • 含义:查询薪资超过 5 万的员工及其部门名称。
  2. 子查询
    SELECT name
    FROM students
    WHERE class_id IN (SELECT id FROM classes WHERE teacher = 'Smith');
    
    • 含义:查询 Smith 老师班级的学生。
  3. 聚合函数
    SELECT dept_id, AVG(salary) as avg_salary
    FROM employees
    GROUP BY dept_id
    HAVING AVG(salary) > 60000;
    
    • 含义:查询平均薪资超过 6 万的部门。

相关文章:

  • 在 macOS 使用 .pem 私钥免密登录腾讯云服务器
  • java高级(IO流多线程)
  • 【愚公系列】《Python网络爬虫从入门到精通》036-DataFrame日期数据处理
  • GPT-4.5实际性能评测:实际探索
  • 3475相或为k
  • 1-PostgreSQL 简介
  • huggingface下载模型到本地缓存环境变量配置详解
  • 《每天读一个JDK源码》之HashMap解读
  • Python线程池知多少
  • 【Qt】ffmpeg照片提取、视频播放▲
  • 【Java 基础(人话版)】Java SE vs Java EE
  • 请解释 Node.js 中的网络模块(http、https),如何创建 HTTP服务器?
  • ESP32+Mixly+温湿度传感器DHT11
  • LangChain项目实战1——基于公司制度RAG回答机器人
  • PHP的学习
  • 如何通过 LlamaIndex 将数据导入 Elasticsearch
  • DAY09 Map接口、斗地主案例(有序版本)、冒泡排序
  • Mysql100道高频面试题
  • DeepSeek开源周-汇总
  • CSS浮动详解
  • 亚马逊网站入口/什么是淘宝搜索关键词
  • 内江规划建设教育网站/交换友情链接
  • 阿里云做网站步骤/百度站长工具查询
  • 网站建设运营规划/2345网址导航手机版
  • 网站建设人员招聘/鄞州seo服务
  • 医院网站建设情况说明/长春网站优化服务