7、Oracle 的安装和查询

Oracle 的安装和查询

Oracle是关系型数据库。用的是Oracle11g完整性产品。

Oracle的安装

详细安装看ppt。如果安装失败,请重新安装系统。

sys为超级管理员,需要通过选择 sysdba

system为普通管理员

scott普通用户,第一次安装的时候,此用户还在锁定状态。可通过sys管理员

alter user scott account unlock 来解锁

Oracle用户的创建

必须要用System管理员去创建,身份选择 sysdba

Oracle11g和Oracle10g都默认自带一个scott用户,默认密码为:tiger


新建sql命令窗口

创建用户

create user 用户名 identified by 密码

给用户赋予权限

赋予用户登录权限

grant connect to 用户名

赋予用户操作资源权限(DML,DDL,DCL,DQL)

grant resource to 用户名

Oracle的登录

可在命令窗口执行。sqlplus命令

1.先连接到Oracle服务。sqlplus /nolog 不登录,只是连接服务。

2.连接sys管理员。conn sys(用户名)/123(密码)@orcl(实例,一个数据库)。第一次登录时要登录sys来解锁用户。

​ conn sys/123@orcl as sysdba (sys后面要跟dba)

3.Show user 查看当前用户是哪个。

4.set linesize 150 设置每行的显示

5.set pagesize 20 设置每列显示

6.passw 修改密码。

7.alter user scott account unlock|lock 解锁用户/锁定用户。

8.写入到本地文件:

​ 1)、spool on 开始写入

​ 2)、spool d:/test.txt 写到哪里

​ 3)、select * from emp 查询结果

​ 4)、spool off 提交,写入完毕

Oracle忘记用户密码

  1. cmd打开window命令窗口

  2. 输入sqlplus /nolog

  3. 输入conn /as sysdba

  4. 输入alter user 要修改密码的用户名 identified by 新的密码

  5. 注意:

    ​ sqlplus不是内部命令时,环境变量出了问题。

scott用户(可用作测试是否安装成功)

一般系统会生成4张表。emp,dept,bonus,salgrade。

select * from tab tab是可查询生成的所有表

select * from emp(表名) 此语句是查询所有表信息。

desc 表名; 在命令窗口执行。

为表添加注解:comment on table emp is '雇员表';

为列添加注解:comment on column emp.empno is '雇员编号';

PL/SQL连接常遇见的问题

1.listener

例如这样的一个路径找:

D:\oracle\product\10.2.0\db_1\network\ADMIN\listener.ora

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = d:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)//ORCL是你实例的名称
(ORACLE_HOME = d:\oracle\product\10.2.0\db_1) //写你安装的路径
(SID_NAME = ORCL)

)
)

2.Oracle ORA-12541:TNS:no listener错误解决方法

无法监听的情况

可以将listener这个服务调成开机自动启动。如果开机无法正常启动,就找到这个服务手动启动,并且刷新一下。

如果还不能正常启动。百度吧 -_- 。

SQL语言

结构化查询语言 (Structured Query Language),具有定义、查询、更新和控制等多种功能,是关系数据库的标准语言。

SQL分类:
数据操纵语言DML Data Manipulation Language : (对数据的增删查改) DML
SELECT INSERT UPDATE DELETE
数据定义语言DDL Data definition language : (对字段的操作) DDL
CREATE ALTER DROP RENAME TRUNCATE
数据控制语言DCL Data Control Language : (事物管理)DCL
GRANT REVOKE
Transaction:commit rollback savepoint

DML中的select语句

select-from-where 句型

select 后面跟的是要查询的字段名

from 后面跟的是要查询的表名

where 后面跟的是查询的条件

Alias别名:

Colums alias

Colums "alias"

Colums as alias

为什么要取别名?

为了能够更加准确的从哪张表里查询数据,表名太长的情况,每次写效率不高。

当遇到直接运算结果的时候,最好用别名,这样效率高,就不能在计算一次了。

distinct 必须放在开头

select distinct e.deptno from emp e;

多字段:都要重复才去除。

select distinct e.deptno,e.sal from emp e;

逻辑复合查询

--not and or 优先级从高到低

where后面的

select * from emp;
--=,!=,<>,<,>,<=,>=,any,some,all
-- != 与 <> 一样的
select e.*
from emp e
where sal <> 2000;
--any,some,all
-- >any,>some 大于(1000,2000,3000)其中最小就行了。
-- >all 要比最大(1000,2000,3000)要大的查出来。
select e.ename,e.sal
from emp e
where e.sal > all(1000,2000,3000);
--is null,is not null
--查询条件的null!=null,要想判断为null,用is null或者is not null。
--查询奖金为空的所有信息。
select e.*
from emp e
where e.comm is null;
--between x and y
--介于x和y之间的值。
--查询工资2000到3000之间的所有信息。
select e.*
from emp e
where sal between 2000 and 3000;
--in(list),not in(list)
-- in 查询部门是10的部门编号,not in 查询不是10的部门编号
select e.*
from emp e
where e.deptno in (10);
--exists(sub-query) 子查询有数据则表达式返回true
--如果exists后面的sql语句有数据,就返回,如果一条都没有就不执行。
select e.*
from emp e
where exists(select * from emp);
--like _ ,%,escape ‘\‘ _\% escape ‘\’
--模糊查询 用like关键字
-- % 表示有0到多个字符。 _ 表示只有一个字符。
select e.*
from emp e
where e.ename like '%A%';
--如果要查询里面包含%分号的字符,有特殊含义的字符时,这个时候需要用escape '/'
-- / 后面的字符就失去了特殊的含义。
select e.*
from emp e
where e.ename like '%/%%' escape '/';
--where
select e.ename,e.sal
from emp e
where e.sal in (800,1000,1250,3000);
select e.ename
from emp e
where e.ename in ('KING','SMITH');
--not and or
--优先级从高到低
select e.*
from emp e
where e.comm is not null;
select e.*
from emp e
where (e.deptno = 30 or e.deptno = 10) and e.sal > 2000;

作业01

--作业01
--1、查询部门编号为10的员工信息
select e.* from emp e where e.deptno = 10;
--2、查询年薪大于3万的人员的姓名与部门编号
select e.ename,e.deptno,e.sal from emp e where e.sal*12 > 30000;
--3、查询佣金为null的人员姓名与工资
select e.ename,e.sal from emp e where e.comm is null;
--4、查询工资大于1500 且 and 含有佣金的人员姓名
select e.ename,e.sal from emp e where e.sal > 1500 and e.comm is not null;
--5、查询工资大于1500 或 or含有佣金的人员姓名
select e.ename,e.sal from emp e where e.sal >1500 or e.comm is not null;
--6、查询姓名里面含有 S 员工信息 工资、名称
select e.sal,e.ename from emp e where e.ename like '%S%';
--7、求姓名以J开头第二个字符O的员工姓名的与工资
select e.ename,e.sal from emp e where e.ename like 'JO%';
--8、求包含%的雇员姓名
select e.ename from emp e where e.ename like '%/%%' escape '/';
--9、使用in查询部门名称为 SALES 和 RESEARCH 的雇员姓名、工资、部门编号
--select e.ename,e.sal,e.deptno,d.dname
--from emp e,dept d
--where e.deptno = d.deptno and d.dname in ('SALES','RESEARCH');
select e.ename,e.sal,e.deptno
from emp e
where e.deptno in ( select d.deptno from dept d where d.dname in ('SALES','RESEARCH'));
--10、使用exists查询部门名称为SALES和RESEARCH 的雇员姓名、工资、部门编号。
select e.ename,e.sal,e.deptno
from emp e
where exists (select d.dname from dept d where e.deptno = d.deptno and d.dname in ('SALES','RESEARCH'));

排序

order by

desc 倒序排序

asc 升序排序(默认)

--排序,多个字段后面用分号,先第一个字段重复,就执行第二个
--desc 倒序排序
--asc 升序排序
select e.ename,e.sal
from emp e
order by e.sal asc,e.comm desc;

union all 全集、union 并集(去重)、intersect 交集、minus 差集

posted @   站着说话不腰疼  阅读(181)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示