-- 注释
sqlplus -- 自带工具
regedit -- 注册表
--------------------以下必须登录管理员-----------------------------
--解锁 锁定用户
alter user 用户名 account lock;
alter user 用户名 account unlock;
--修改用户密码 (没有密码找回)
alter user 用户名 identified by 密码;
------ 管理 服务
net start OracleOraDb11g_home1TNSListener --监听服务
net start OracleServiceORCL ---基础服务
-------------------------------------------------
--- 查询emp表中 所有数据
select *from emp;
--查询emp表中 指定 ename job 数据
selecT
eName , job
from Emp
;
-- 查询当前用户下的所有 表 对象
select *from user_tables
-- 虚拟表 dual
select 1+3 from dual;
select 1/3 from dual;
select 1/(3+1) from dual;
select 1/3,EMP.* from emp;
---给所有员工涨工资
select sal+1500 from emp;
--空值问题 ORACLE
--空值是无效的,未指定的,未知的或不可预知的值。
--空值不是空格或者0
--空值参与的表达式 结果一定为空 (需要后期的函数 解决)
--- 每个员工的总工资
select sal+COMM from emp;
select COMM from emp;
---列 别名
select sal+COMM aaa from emp;
select sal+COMM as 总工资 from emp;
--"" 不是字符串 列的别名 使用 " " 可以包含特殊符号 区分 内容的大小写
select sal+COMM "总工资 aaa" from emp;
--'' 表示字符串
select "1" from emp;--别名
select '1' from emp;
select "as as".COMM from EMP "as as";
select ENAME ,EMPNO from emp;
--- 拼接 我是 ? 我的工作是 ? 我的薪资是?
select
'我是'||ename ||',我的工作是' ||job ||',我的薪资是'||sal
as 个人信息
from emp;
---重复行
select deptno from emp ;
--查询所有员工所在的部门编号 --去除重复行
select distinct deptno ,ename from emp
----where子句 ---- '10' 可以表示 数字10
select *from emp where deptno=10
select *from emp where deptno='10'
--字符大小写敏感
select *from emp where job='CLERK'
select *from emp where job='clerk'
---日期 工具--首选项 --时间格式 nfl-option oracle 格式 ‘01-1月-1982’
-- oracle 中文乱码 几乎没有乱码 jdbc mysql --- url
select * from emp where hiredate='17-12月-1980'
-- and 逻辑与 or 逻辑或
---查询 job 是CLERK 并且 sal 大于 1000
select *from emp where job='CLERK' and sal>1000
---查询 job 是CLERK 或者 sal 大于 1000 且部门编号是20号部门
select *from emp where job='CLERK' or (sal>1000 and deptno=20)
---- > >= < <= <> !=
--日期大于 81 年 sal大于 2000 不是 20号部门了
select *from emp where hiredate>'01-1月-1981' and sal>2000 and deptno!=20
------- between 值1 and 值2 [ 值1, 值2] 等价于 >= and <= 值1< = 值2
--sal 1000-3000之间
select *from emp where sal>=1500 and sal<=3000
select *from emp where sal between 1500 and 3000;
select *from emp where sal not between 1500 and 3000;
--- in (值列表) 等值 比较 等价 or
--- sal 800 or 1000 or 3000
select *from emp where sal=800 or sal=1000 or sal=3000
select *from emp where sal in(800,1000,3000)
-- like 模糊查询 % [0-∞ ) _ [1] 占位符
--select *from emp where ename like 'S' ====== select *from emp where ename= 'S'
select *from emp where ename like 'S%'
select *from emp where ename like '%T'
select *from emp where ename like '%S%'
--第二位 D
select *from emp where ename like '_D%'
--倒数第二位 D
select *from emp where ename like '%T_'
--- is null 是否是 空
---查老板
select *from emp where mgr is null
--- and or not
--- not between ... and ...
select *from emp where sal not between 1500 and 3000;
--- not in (1,2,3)
select *from emp where sal not in(3000,5000 );
---not like
select *from emp where ename not like 'S%'
---is not null
--查询 有奖金
select *from emp where comm is not null
---order by 子句 排序子句 默认升序 ASC DESC 降序
--- order by 排序的是 返回的所有数据
select empno,ename,sal 工资 from emp order by 工资
--- 别名 不能直接使用在 自己的 where 子句中
--select empno,ename,sal 工资 from emp where 工资 >1000
select empno ,ename,sal from emp where sal>1000 order by sal
select empno ,ename,sal from emp where sal>1000 order by sal desc
---根据多个条件排序
select empno ,ename,sal from emp order by sal
----单行函数-------
---------字符函数-------------------------------
select lower(ename) from emp where deptno=10;
select upper('zhaoxiaogang') from dual;
--job 是clerk 的员工 实现不区分大小写
select *from emp where job=upper('clerk');
select *from emp where lower(job)= lower('clerk');
select initcap('shi hao chen') from dual
---拼接
select concat ( concat('姓名:',ename) ,'----哈哈') 焦心 from emp;
---截取 substr
select substr('java1014',5,8) from dual -- 从第 5位开始 到 第8位 都是包含 下标从1开始
select substr('java1014',5) from dual -- 从第 5位开始 后面所有
select substr('java1014',9) from dual
-- length 长度
select length('java1014') from dual;
select substr('java1014',5,length('java1014')) from dual
--instr 返回 指定字符第一次出现的下标
select instr('java1014','a1') from dual;
--instr 返回 指定字符第一次出现的下标 指定从 第3位开始
select instr('java1014','a1',3) from dual;
---左补 lpad rpad
select lpad('java1014',10,'e') from dual;
select rpad('java1014',10,'e') from dual;
---trim 去除左右两边的指定字符
select ' java1014 ' from dual
select trim(' ' from ' java1014 ' ) from dual
select trim('j' from 'jjjjjjjava1014jjjjjj' ) from dual
--replace 替换
select replace('java1014','ava','bvd') from dual;
--------------------------数字函数
---四舍五入
select round(66.66) from dual; --默认到各位
select round(66.66,0) from dual;
select round(66.66,1) from dual;
select round(66.66,-1) from dual;
select round(66.66,-2) from dual;
select trunc(66.66) from dual
select trunc(66.66,1) from dual
select trunc(66.66,-1) from dual
select ceil(66.000000) from dual;
select floor(66.66) from dual;
---mod 求余
select mod(12,0) from dual;
select mod(12,11) from dual;
select mod(11,12) from dual;