可以快速删除表的记录并释放空间,不使用事务处理,速度快且效率高,但无法回滚事务:truncate table table_name
5、其他create命令create index:创建数据表索引
create procedure:创建存储过程
create function:创建用户函数
create view:创建视图
create trigger:创建触发程序
create sequence: 创建序列
6、SEQUENCE
在 oracle 中 sequence 就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
创建语法:
create sequence sequence_marks
increment by 1 --每次加几个
start with 1 --从 1 开始计数
nomaxvalue --不设置最大值
nocycle --一直累加,不循环
cache 10 --使序列号预分配,默认 nocache
例子: select sequence_marks.currval from dual insert into table_name values(sequence_marks.nextval)
删除 :drop sequence sequence_marks
DML语言 -> 数据操作语言 1、 INSERT 语句Insert into table_name(column1,column2 … … .column_n) values (val1….)
插入多条:
insert into 表名(列名.....) select 列名.... from 源表名
insert into stu select 1,'abc' from dual union
select 2,'abcd' from dual;
2、UPDATE 语句update table_name set column1=value,…. where [condition…]
3、DELETE 语句Delete from table_name where [condition…]
DQL语言 -> 数据库查询语言 1、基本语法SELECT column_list[*查询所有数据]
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
例子:
SQL>select * from em--查询所有数据
SQL>select ename,job from em--查询指定的字段数据
SQL> select * from emp where sal>1000--加条件
2、聚合函数注:以下例子数据来自ORACLE自带表“EMP”和“DEPT”
聚合函数对一组值执行计算并返回单一的值。聚合函数忽略空值。
聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。不能在WHERE 子句中使用组函数。
AVG(expression): 返回集合中各值的平均值
查询所有人都的平均工资
select avg(sal) from emp
COUNT(expression): 以 Int32 形式返回集合中的项数
查询工资低于 2000 的人数
select count(*) from emp where sal<2000
MAX(expression): 返回集合中的最大值
查询最高工资
select max(sal) from emp
MIN(expression): 返回集合中的最小值
查询最低工资
select max(sal) from emp
SUM(expression): 返回集合中所有值的总和
查询部门编号为 20 的工资总和
select sum(sal) from emp where deptno=20
3、排序函数用于根据指定的列对结果集进行排序
ORDER BY 语句
查询所有信息并按工资排序
select * from emp order by sal
升序(asc)
查询所有信息并按工资升序排序
select * from emp order by sal asc
降序(desc)
查询所有信息并按工资降序排序
select * from emp order by sal desc
ROWNUM 与 ORDER BY[ROWNUM:伪列,只能使用<,<=,!=]
4、分组函数分组函数作用于一组数据,并对一组数据返回一个值。
GROUP BY 子句
查询每个部门的平均工资
select avg(sal) from emp group by deptno
HAVING 子句
查询部门的平均工资大于 2000
select avg(sal) from emp group by deptno having avg(sal)>2000
5、连接查询连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。
1)内连接
内连接也叫连接,是最早的一种连接。还可以被称为普通连接或自然连接
查询工资最高的 5 个人信息
select e.*,rownum 编号 from (select * from emp order by sal desc) e
where rownum<=5
[或 rownum!=6]
这自然连接,内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。
等值连接:
select * from emp inner join dept on emp.deptno=dept.deptno
select * from emp,dept where emp.deptno=dept.deptno
不等值连接:
select * from emp inner join dept on emp.deptno!=dept.deptno
2)外连接
外连接分为三种:左外连接,右外连接,全外连接。对应 SQL:LEFT/RIGHT/FULL OUTER JOIN。通常我们省略 outer 这个关键字。
写成:LEFT/RIGHT/FULL JOIN。
左外连接(left join): 是以左表的记录为基础的
select * from emp left join dept on emp.deptno=dept.deptno
select * from emp ,dept where emp.deptno=dept.deptno(+)
右外连接(right join): 和 left join 的结果刚好相反,是以右表(BL)为基础的
select * from emp right join dept on emp.deptno=dept.deptno
select * from emp , dept where emp.deptno(+)=dept.deptno
全外连接(full join): 左表和右表都不做限制,所有的记录都显示,两表不足的地方用 null 填充
select * from emp full join dept on emp.deptno=dept.deptno
3)交叉连接
交叉连接即笛卡儿乘积,是指两个关系中所有元组的任意组合。一般情况下,交叉查询是没有实际意义的。
select * from cross full join dept
6、常用查询1)like 模糊查询【Oracle 通配符只支持%与_】
查询姓名首字母为 S 开始的员工信息
select * from emp where ename like 'S%'
查询姓名第三个字母为 A 的员工信息
select * from emp where ename like '__A%'
2)is null/is not null 查询
查询没有奖金的雇员信息
select * from emp where comm is null
查询有奖金的雇员信息
select * from emp where comm is not null
3)in 查询
查询雇员编号为 7566、7499、7844 的雇员信息
select * from emp where empno in(7566,7499,7844)
4)exists/not exists 查询(效率高于 in)
查询有上级领导的雇员信息【查询原理:一条一条读写记录】
select * from emp e where exists
(select * from emp where empno=e.mgr)
查询没有上级领导的雇员信息
select * from emp e where not exists
(select * from emp where empno=e.mgr)
5)all 查询
查询比部门编号为 20 的所有雇员工资都高的雇员信息
select * from emp where sal > all(select sal from emp where deptno=20)
6) union 合并不重复
select * from emp where comm is not null
union
select * from emp where sal>3000
7)union all 合并重复
select * from emp where comm is not null
union all
select * from emp where sal>3000
7、子查询