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忘记用户密码
-
cmd打开window命令窗口
-
输入sqlplus /nolog
-
输入conn /as sysdba
-
输入alter user 要修改密码的用户名 identified by 新的密码
-
注意:
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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南