Oracle系统里那些常用的操作SQL代码,给你举几个简单示范看看
- 问答
- 2026-01-19 02:16:30
- 2
查看当前数据库里有哪些表
刚接触一个数据库,你肯定想知道里面有什么,你可以这样看:
SELECT table_name FROM user_tables;
这条语句会列出你当前用户下拥有的所有表的名称。user_tables 是Oracle提供的一个数据字典视图,它就像一个记录了所有表信息的清单,如果你有权限想看所有用户的表,可以用 SELECT table_name FROM all_tables;。
看看一张表具体长什么样
知道了表名,比如有个表叫 employees(员工表),你想知道它里面有哪些列(字段),每个列是什么类型(比如是数字还是文字),可以这样:
DESC employees;
DESC 是 DESCRIBE(描述)的缩写,这不是标准的SQL语句,但却是Oracle(以及一些其他数据库)里一个非常方便的命令,执行后,它会显示表的结构,包括列名、是否允许为空、数据类型等,如果你想用标准的SQL查询来实现类似效果,可以查 SELECT * FROM user_tab_columns WHERE table_name = 'EMPLOYEES';,但显然 DESC 更简单快捷。
从表里把数据查出来
这是最核心、最常用的操作,比如你想看员工表里所有员工的信息:
SELECT * FROM employees;
那个星号 代表“所有列”,如果你只想看员工的编号和姓名,而不是所有信息,可以指定列名:
SELECT employee_id, first_name, last_name FROM employees;
给查询结果加上条件
表里数据可能成千上万,你通常只想看其中一部分,你想只看部门编号是90的员工:
SELECT employee_id, first_name, last_name FROM employees WHERE department_id = 90;
WHERE 后面跟的就是条件,再比如,你想找所有名字里以字母‘S’开头的员工:
SELECT employee_id, first_name, last_name FROM employees WHERE first_name LIKE 'S%';
这里的 LIKE 是模糊匹配,百分号 代表任意长度的任意字符。
往表里添加新数据
假设公司新来了一位员工,你需要把他的信息加到表里:
INSERT INTO employees (employee_id, first_name, last_name, email, hire_date, job_id) VALUES (1000, '张三', '张', 'zhangsan@company.com', DATE '2023-10-27', 'IT_PROG');
这条语句的意思是:向 employees 表中指定的那些列里,插入后面括号里对应的值,注意,值的顺序和类型必须和前面列的顺序和类型一一对应,日期值可以用 DATE 关键字来指定。
修改表里已有的数据
员工张三结婚了,改了姓氏,你需要更新他的信息:
UPDATE employees SET last_name = '李' WHERE employee_id = 1000;
非常重要:UPDATE 语句一定要有 WHERE 条件,否则它会更新表中所有行的数据,那很可能就酿成事故了,这里的 WHERE employee_id = 1000 确保了只更新编号为1000的这一位员工的记录。
从表里删除数据
如果一位员工离职了,需要将他的记录从表里移除:
DELETE FROM employees WHERE employee_id = 1000;
和 UPDATE 一样,DELETE 语句也必须谨慎使用 WHERE 条件,如果没有条件,会删除整个表的所有数据,这个操作几乎是不可逆的。
把查询结果排序
当你查数据时,可能希望结果按某种顺序排列,按员工的入职日期从晚到早排序(最新的在最前面):
SELECT employee_id, first_name, last_name, hire_date FROM employees ORDER BY hire_date DESC;
ORDER BY 负责排序,DESC 表示降序(从大到小,从晚到早),如果想升序(从小到大,从早到晚)可以用 ASC,或者不写(因为默认就是升序)。
把相似的数据分组统计
如果你想统计每个部门有多少名员工,就需要用到分组:
SELECT department_id, COUNT(*) as employee_count FROM employees GROUP BY department_id;
这条语句会先按 department_id(部门编号)把员工记录分组,同一个部门的归为一组,然后使用 COUNT(*) 函数计算每一组里有多少条记录(即多少名员工),结果就会显示每个部门编号及其对应的员工数量。
把两张表的信息关联起来查
通常信息会分散在不同的表里,员工表里只有部门编号(department_id),而部门的详细名称(如‘财务部’、‘销售部’)在另一张叫 departments 的表中,这时你需要把两张表连起来查:
SELECT e.first_name, e.last_name, d.department_name FROM employees e, departments d WHERE e.department_id = d.department_id;
这是一种古老的连接写法,它通过在 WHERE 条件里指定两个表之间的关联关系(e.department_id = d.department_id),来将员工表和部门表的数据“拼凑”在一起,这样你就能看到每个员工属于哪个具体的部门名称了,更现代的写法是使用 JOIN 关键字:
SELECT e.first_name, e.last_name, d.department_name FROM employees e JOIN departments d ON e.department_id = d.department_id;
效果是一样的。
这些例子覆盖了最基础的增(INSERT)、删(DELETE)、改(UPDATE)、查(SELECT)操作,以及排序、分组和表连接,是Oracle SQL入门最常接触到的一些代码。

本文由度秀梅于2026-01-19发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/83394.html
