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

Oreacle(SQL语言基础)

关键词:SQL入门、SQL分类、SQL*Plus、SELECT语句、DML语句、事务控制


✅ 摘要

SQL(Structured Query Language)是关系型数据库的核心操作语言,广泛应用于 Oracle、MySQL、PostgreSQL、SQL Server 等主流数据库系统中。

本文将从 SQL 的基本分类讲起,详细介绍 SELECT 查询、DML 数据操作语句,并结合 SQL 工具使用和事务控制机制,每个知识点都配有 完整的 SQL 示例代码,适合初学者快速上手,也适合中级开发者巩固提升。


一、SQL概述与工具使用

🔹 1. SQL的分类

SQL 通常分为以下几类:

类别全称功能
DDLData Definition Language创建、修改、删除数据库对象(如表、索引等)
DMLData Manipulation Language插入、更新、删除数据
DCLData Control Language授予权限、回收权限
TCLTransaction Control Language控制事务提交、回滚等
示例:查看当前用户下的所有表(Oracle)
-- 查看当前用户拥有的所有表(Oracle)
SELECT * FROM user_tables;

🔹 2. 常用SQL工具介绍

工具名称支持数据库特点
SQL*PlusOracle命令行工具,轻量级,常用于脚本执行
SQL DeveloperOracle图形化界面,支持调试PL/SQL
PL/SQL DeveloperOracle强大的开发工具,支持代码调试
MySQL WorkbenchMySQL官方图形管理工具
DBeaver多种数据库开源通用数据库管理工具
示例:SQL*Plus 登录 Oracle
sqlplus username/password@hostname:port/servicename

二、基本查询与操作

🔹 1. SELECT语句(列选择、别名、去重)

示例1:简单查询某张表的数据
-- 查询员工表中的所有数据
SELECT * FROM employees;
示例2:选择特定字段并设置别名
-- 查询姓名和工资,设置中文别名
SELECT first_name AS "名字", salary AS "工资" FROM employees;
示例3:去重查询(DISTINCT)
-- 查询不同的部门编号
SELECT DISTINCT department_id FROM employees;

🔹 2. 过滤条件(WHERE子句、运算符)

示例1:使用等于、大于、小于等比较运算符
-- 查询工资大于5000的员工
SELECT first_name, salary FROM employees WHERE salary > 5000;
示例2:使用 IN 和 BETWEEN
-- 查询部门编号为10或20的员工
SELECT first_name, department_id FROM employees WHERE department_id IN (10, 20);-- 查询工资在6000到8000之间的员工
SELECT first_name, salary FROM employees WHERE salary BETWEEN 6000 AND 8000;
示例3:模糊查询 LIKE
-- 查询姓氏以 'K' 开头的员工
SELECT first_name FROM employees WHERE last_name LIKE 'K%';

🔹 3. 排序与分页(ORDER BY、ROWNUM)

示例1:按工资降序排序
-- 按工资从高到低排序
SELECT first_name, salary FROM employees ORDER BY salary DESC;
示例2:使用 ROWNUM 分页(Oracle)
-- 查询前5条记录
SELECT * FROM (SELECT first_name, salary, ROWNUM rnumFROM employeesWHERE ROWNUM <= 5
)
WHERE rnum >= 1;

三、数据操作语言(DML)

🔹 1. 插入数据(INSERT)

示例1:插入单条记录
-- 向 employees 表插入一条新记录
INSERT INTO employees (employee_id, first_name, last_name, email, hire_date, job_id, salary, department_id)
VALUES (1001, 'Tom', 'Smith', 'tom.smith@example.com', SYSDATE, 'IT_PROG', 7000, 60);
示例2:插入多条记录(MySQL语法)
-- MySQL支持一次性插入多条记录
INSERT INTO users (name, age) VALUES 
('Alice', 25),
('Bob', 30),
('Charlie', 28);

🔹 2. 更新与删除(UPDATE、DELETE)

示例1:更新记录
-- 将员工ID为1001的工资调整为8000
UPDATE employees SET salary = 8000 WHERE employee_id = 1001;
示例2:删除记录
-- 删除员工ID为1001的记录
DELETE FROM employees WHERE employee_id = 1001;

🔹 3. 事务控制(COMMIT、ROLLBACK、SAVEPOINT)

示例1:事务开始与提交
-- 开始事务(自动开启,无需显式BEGIN)
INSERT INTO employees VALUES (1002, 'Lucy', 'Brown', ...);-- 提交事务
COMMIT;
示例2:事务回滚
-- 修改数据
UPDATE employees SET salary = 9000 WHERE employee_id = 1002;-- 回滚到上次提交的状态
ROLLBACK;
示例3:设置保存点(SAVEPOINT)
-- 设置保存点
SAVEPOINT before_update;-- 更新数据
UPDATE employees SET salary = 9000 WHERE employee_id = 1002;-- 回滚到保存点
ROLLBACK TO before_update;

四、总结

通过本文的学习,你应该已经掌握了:

  • SQL 的基本分类(DDL、DML、DCL、TCL)
  • 如何使用 SELECT 实现各种查询操作(列选择、过滤、排序、分页)
  • 如何使用 INSERT、UPDATE、DELETE 进行数据操作
  • 如何使用 COMMIT、ROLLBACK、SAVEPOINT 控制事务
  • 常见 SQL 工具的使用方式

📚 参考资料

  • Oracle 官方文档
  • MySQL 官方文档

  • 如果你在学习过程中遇到任何疑问,欢迎在评论区留言交流!
  • 👍 如果你觉得这篇文章对你有帮助,别忘了点赞、收藏、转发哦!
http://www.dtcms.com/a/266793.html

相关文章:

  • 【问题解决】VSCode终端中看不到Git-Bash
  • XILINX Kintex 7系列FPGA的全局时钟缓冲器(BUFG)和区域时钟缓冲器(BUFR/BUFH)的区别
  • 【PyTorch】PyTorch预训练模型缓存位置迁移,也可拓展应用于其他文件的迁移
  • HTTP协议利用TCP的特性来实现长连接
  • Compose笔记(三十)--图片选择器
  • 【Spring Boot】HikariCP 连接池 YAML 配置详解
  • 洛谷P1941 [NOIP 2014 提高组] 飞扬的小鸟
  • vue3 获取选中的el-table行数据
  • MySQL 查询进阶指南:子查询、多表连接与 UNION 操作全解析
  • SQL 快速参考手册-SQL001
  • Swagger 安装使用教程
  • 高效的在Vue3中使用Vuex
  • Android-自定义View的实战学习总结
  • python训练day49 CBAM
  • 流程分类框架体系设计应该梳理到L5还是L6?
  • DePIN 普惠结构的缺失拼图,为什么是 UBI Network?
  • js中的捕获阶段和冒泡阶段
  • vue2/3安装依赖报错,终极解决方案
  • Kuberrnetes 服务发布
  • 【MySQL】十六,MySQL窗口函数
  • Mint密室 · 猫猫狐狐的“特征选择”囚室逃脱
  • Ubuntu下的Tomcat服务器部署
  • Linux基础 -- NAND Flash UBIFS基础特性及注意点
  • 【沉浸式解决问题】idea开发中mapper类中突然找不到对应实体类
  • 【Agent】构建专家级SQL Agent交互
  • Qt控件核心属性全解析
  • 【Bluedroid】 BLE 隐私保护机制深度剖析(btm_ble_reset_id)
  • [学习记录]Unity-Shader-曲面细分着色器
  • IDEA-常用的开发组件
  • 用户进程的借壳挂靠之术