基础 SQL 语法与操作:Oracle SQL 入门教程
                           
天天向上
发布: 2025-02-12 22:17:59

原创
315 人浏览过

1. SQL 基础

SQL(结构化查询语言)是用于与数据库交互的标准语言。在 Oracle 数据库中,SQL 用来定义数据库结构、操控数据以及查询数据。SQL 的基本功能包括数据查询、数据更新、数据插入和数据删除。


2. SELECT 查询语句

SELECT 是 SQL 中最常用的命令,用来从数据库中检索数据。

示例:

SELECT first_name, last_name, email FROM employees;
  • 该查询从 employees 表中获取 first_namelast_nameemail 字段的数据。

使用 DISTINCT 去重:

SELECT DISTINCT department_id FROM employees;
  • 获取不同的部门 ID。

3. WHERE 子句与逻辑运算符

WHERE 子句用于指定查询条件,常与逻辑运算符结合使用。

常用的逻辑运算符:

  • AND:两个条件都必须为真
  • OR:至少有一个条件为真
  • NOT:条件不成立时为真

示例:

SELECT first_name, last_name
FROM employees
WHERE department_id = 10 AND salary > 5000;
  • 查询部门 ID 为 10 且工资大于 5000 的员工。

4. 常用的 SQL 聚合函数

SQL 提供了多种聚合函数,用于计算数据集的总和、平均值等。

  • COUNT:返回结果集中的行数
  • SUM:返回某列数值的总和
  • AVG:返回某列数值的平均值
  • MIN:返回某列的最小值
  • MAX:返回某列的最大值

示例:

SELECT COUNT(*), AVG(salary), MAX(salary), MIN(salary)
FROM employees;
  • 计算员工总数、平均工资、最高工资和最低工资。

5. 数据操控

  • INSERT 语句:向表中插入数据
  INSERT INTO employees (first_name, last_name, email, hire_date, salary)
  VALUES ('John', 'Doe', 'john.doe@example.com', SYSDATE, 6000);
  • UPDATE 语句:更新表中的数据
  UPDATE employees
  SET salary = 7000
  WHERE employee_id = 101;
  • DELETE 语句:删除表中的数据
  DELETE FROM employees
  WHERE employee_id = 101;

6. 数据验证与约束

在数据库设计中,约束用于确保数据的完整性。

  • PRIMARY KEY:主键约束,用于唯一标识表中的每一行。
  • FOREIGN KEY:外键约束,用于确保数据之间的关系。
  • UNIQUE:确保列中的每个值都是唯一的。
  • CHECK:确保列的值满足特定条件。

示例:

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    salary DECIMAL(10, 2) CHECK (salary > 0)
);
  • employees 表中,employee_id 为主键,salary 列确保大于零。

7. 数据定义与管理

  • 创建表
  CREATE TABLE employees (
      employee_id INT PRIMARY KEY,
      first_name VARCHAR(50),
      last_name VARCHAR(50),
      hire_date DATE
  );
  • 修改表:使用 ALTER TABLE 添加或修改列
  ALTER TABLE employees ADD department_id INT;
  • 删除表
  DROP TABLE employees;
  • 创建视图
  CREATE VIEW emp_view AS
  SELECT first_name, last_name, department_id
  FROM employees
  WHERE salary > 5000;

8. 索引与约束

  • 索引:加速数据检索的结构
  CREATE INDEX idx_employee_name ON employees (first_name, last_name);
  • 约束:确保数据的完整性(如上述 PRIMARY KEY、FOREIGN KEY)。

9. 连接与子查询

  • 内连接(INNER JOIN):返回两个表中满足连接条件的记录
  SELECT e.first_name, e.last_name, d.department_name
  FROM employees e
  INNER JOIN departments d
  ON e.department_id = d.department_id;
  • 外连接(LEFT JOIN, RIGHT JOIN):返回一个表的所有记录,以及另一个表中匹配的记录。如果没有匹配,另一个表的列返回 NULL。
  SELECT e.first_name, d.department_name
  FROM employees e
  LEFT JOIN departments d
  ON e.department_id = d.department_id;
  • 自连接(Self JOIN):连接同一个表,用别名区分不同的实例。
  SELECT e1.first_name AS Employee, e2.first_name AS Manager
  FROM employees e1
  LEFT JOIN employees e2
  ON e1.manager_id = e2.employee_id;
  • 交叉连接(CROSS JOIN):返回两个表的笛卡尔积,通常用于生成所有可能的组合。
  SELECT e.first_name, p.product_name
  FROM employees e
  CROSS JOIN products p;

10. 子查询与关联子查询

  • 子查询:查询中嵌套的查询,返回单一结果
  SELECT first_name, last_name
  FROM employees
  WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'Sales');
  • 关联子查询:子查询与外部查询相关联
  SELECT first_name, last_name, salary
  FROM employees e
  WHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id);

这些基本的 SQL 语法和操作为你提供了 Oracle 数据库的基础,后续的学习中可以根据需要进一步深入探讨查询优化、性能调优等内容。

发表回复 0

Your email address will not be published. Required fields are marked *