1.创建表
create table emp();
2.舍去表
truncate table emp; 立即删除表的所有记录 并且不能回滚
3.删除表
drop table emp;删除表的信息 不能回滚
4.删除表的所有信息
delete from emp ;
5.查询语句
select * from emp;
6.别名
select sai*12 as '年薪' from emp;
7.字符串连接:用'||‘
比如把姓和名连在一起
select last_name||''||first_name 姓名 from emp;
8.消除重复行 distinct
select distinct ename from emp;
9.条件限定 where
select * from emp where sal>5000;
between 的使用
select * from emp where sal between 3000 and 5000;
in的使用
select * from emp where sal in (3000,5000);
like 的使用 模糊查找
select * from emp where ename like '_a%';
is null 的使用
select * from emp where comm is null;
10.根据顺序查
select* from emp order by sal desc; 降序
select * from emp order by sal asc; 升序
11.统计函数
count 总数 max 最大 min最小 avg 平均
12.分组查询
select ename,sal from emp group by ename;
小技巧:一说有分组 后面就跟分组条件
13.having的使用 结合分组查询使用
必须按一定的分组 才能用having
having(sal)>5000
14.子查询
select ename from emp where sal=(select max(sal) from emp)
15.插入数据
insert into emp(id, ename,sal) values ('1','小明','5000');
对于不想插入的信息可以使用null或者' '来代替
insert into emp values ('1','老王‘,null);
16.删除数据
delete from emp where deptno=21;
delete操作时,可以回滚
17.修改数据
update emp set ename=78 where deptno =20;
18.修改表的结构
<1>增加新的一列
alter table emp add(kills number);
<2>修改列
alter table emp modify(ename varchar2(300))
<3.>删除列
alter table emp drop colvmn kills;
执行这句话需要权限
19.视图
一张虚拟表 视图表一般以v$开头
创建一个试图
create view emp1 as(
select id ,name from emp
)
删除视图
drop view emp1;
20.关联联接
<1>内连接 inner join
select e.ename,e.sal.d.dname from dept d inner join emp e on (d.deptno=e.ename);
<2>外连接
1. 左外连接:在内连接的基础上 保证左表数据全有
select d.dname,e.ename,e.sal,d.deptno from dept d left outer join emp e on(d.deptno=e.deptno);
2.右外连接: 在内连接的基础上 保证右表数据全有
把上面语句的left换成 right即可
3.全连接 :左外连接加上右外连接的查询结果
使用full outer join
<3>交叉连接:左表的每条记录和右表的每条记录首尾相连 cross join
select ename,dname from emp,dept;
select ename,dname from dept cross join emp;
<4>自然连接 natural join
区别:不需要写连接条件
去掉重复字段 类型相同 名称相同
<5>等值连接和非等值连接
1.等值连接:相当于内连接,连接条件相当为等值连接
select ename,dname from emp join dept using (deptno);
2.非等值连接
select emp.ename,emp.sal,dept.dname,salgrade.grade from dept onner join emp
on(dept.deptno=emp.deptno) inner join salgrade
on(emp.sal between salgrade.losal and salgrade.hisal)
<6>自关联
smith这个人的名字和他经理的名字
select employee.ename ,manager.ename from emp manager inner join emp employee
on(manager .empno=employee.mgr) where employee.ename='SMITH';