一、 创建表空间
create tablespace itheima
datafile 'C:\itheima.dbf'
size 100m
autoextend on
next 10m;
二、 创建用户
create user itshunzi
identified by root
default tablespace itheima;
三、 给用户授权
grant dba to itshunzi; -- 授予“itshunzi”用户超级管理员权限
四、解锁scott用户
alter user scott account unlock;
– 解锁scott用户密码
alter user scott identified by tiger;
–创建序列
create sequence seq_user;
– 删除序列
drop sequence seq_user;
– 从虚表中查询数据
select seq_user.nextval from dual;
select seq_user.currval from dual;
–创建表
create table tab_user(
id number(11) primary key,
username varchar2(20),
password varchar2(20)
);
– 向表中添加数据
insert into tab_user values(
seq_user.nextval,
'zhangsan',
'123456'
);
insert into tab_user values(
seq_user.nextval,
'lisi',
'123456'
);
commit;
* 注:在Oracle数据库中,默认执行增删改的时候,不会自动提交事务,需要手动提交。
– 添加一列
alter table tab_user add(address varchar2(32));
commit;
– 修改某一列的属性
alter table tab_user modify(address varchar2(50));
commit;
– 修改某一列的名称
alter table tab_user rename column address to addr;
commit;
– 删除表
drop table tab_user;
commit;
– 修改表数据
update tab_user set password = '456789' where id = 1;
commit;
– 删除表数据
delete from tab_user where id = 1;
commit;
– 数值函数(round – 四舍五入)
select round(35.55) from dual;
select round(35.55,-1) from dual;
– 日期函数(sysdate:当前时间,hiredate:入职时间,months_between:求月份函数)
-- 查询每位员工入职的天数
select ename,sysdate - hiredate from emp;
-- 查询每位员工入职的周数
select ename,round((sysdate - hiredate)/7) from emp;
-- 查询每位员工入职的月数
select ename,round(months_between(sysdate,hiredate)) from emp;
-- 查询每位员工入职的年数
select ename,round(months_between(sysdate,hiredate)/12) from emp;
– 转换函数
-- 日期转字符串(to_char)
select empno,ename,to_char(hiredate,'yyyy-mm-dd hh24-mi-ss') from emp;
-- 字符串转日期(to_date)
select to_date('1995-07-17 23:59:59','yyyy-mm-dd hh24-mi-ss') from dual;
–通用函数
--空值处理函数:(nvl) comm:奖金,存在空值的情况
select ename,nvl(comm,0),sal*12 + nvl(comm,0) from emp;
-- case when函数
select e.empno,
case
when e.job = 'clerk' then '业务员'
when e.job = 'manager' then '经理'
when e.job = 'analyst' then '分析员'
when e.job = 'president' then '总裁'
when e.job = 'salesman' then '销售'
else
'无业'
end
from emp e;
– 分组函数
select count(ename),deptno from emp group by deptno;(正确写法)
select ename,count(ename),deptno from emp group by deptno;(错误写法)
-- *注:在分组查询中,查询的字段只能包含分组条件字段和聚合函数,不能包含其他的内容
– *分页查询(rownum)
-- 1.查询 emp 表带有 rownum 列
select rownum,t.* from emp t;
-- 2.查询 emp 表中前五条数据
select rownum ,t.* from emp t where rownum<6;
-- 3.查询 emp 表中工资排名前五的数据
select ttt.* from (
select rownum r,tt.* from(
select t.* from emp t order by sal desc) tt) ttt
where r<6 and r>0;
-- 注:分组查询的rownum是一个伪列,表示的是查询结果的行数,他是根据select查询出来的,先于分组条件的执行,所以分组之后,rownum的顺序会被打乱
–Oracle数据库书写格式
SELECT ......
FROM ......
WHERE ......
GROUP BY ......
HAVING ......
ORDER BY ......
注:(1)where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
(2)having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组