1. 简介
SQL其实就是用户和关系数据库交互的标准语言,是老美制定的,大体上分为三大类:
1,DML数据操纵语言,对数据库中的数据进行增删改查等操作
2,DDL数据定义语言,主要是创建和修改数据库对象,比如表的创建、修改、删除
3,DCL数据控制语言,比如对用户进行授权
这三大类大体知道有这么回事就行了,本篇我们介绍单表查询中常用的SQL语句。
2. select
2.1 直接查询类
/*星号表示全部列*/ select * from emp; /*可以选择指定的列empno和ename*/ select empno,ename from emp; /*两根竖线表示连接*/ select empno||','||ename from emp; /*as表示列的别名*/ select ename as emp_name from emp; /*用e这个别名代表emp,注意Oracle中表的别名不实用as*/ select e.ename from emp e;
2.2 查询结果处理
/*查询结果升序排序(默认升序)*/ select * from emp order by ename; /*查询结果降序排序*/ select * from emp order by ename desc; /*查询结果转化,例如存储时1男0女*/ select case sex when '1' then '男的' when '0' then '女的' end from PEO t /*查询前10行*/ select * from emp where rownum<=10; /*排序后查询前10行*/ select * from (select * from emp order by ename) where rownum<=10 /*结果筛选*/ select * from emp where ename='JAMES';/*名字是JAMES的*/ select * from emp where ename<>'JAMES';/*名字不是JAMES的*/ /*and同时满足 or满足一个以上,not对内容取反*/ select * from emp where ename='JAMES' and empno=7900; select * from emp where ename='JAMES' or empno=7902; select * from emp where not(ename='JAMES') /*in、not in,集合判断*/ select * from emp where ename in ('JAMES','ALLEN','MILLER'); select * from emp where ename not in ('JAMES','ALLEN','MILLER'); /*like模糊匹配,%表示任意字符,_表示一个字符* select * from emp where ename like '%A%' select * from emp where ename like 'A____' /*选择不重复的内容*/ select distinct(deptno) from emp /*对选择结果进行计算*/ select sum(sal) as sumsal from emp; select avg(sal) as sumsal from emp; select count(comm) from emp;/*注意NULL列是不纳入计数的*/
2.3 非常特殊的NULL
需要注意的是,当用了group by语句后,select的列必须是group by后面的列,或者聚合函数(count/sum/avg/…)计算的列。
/*正确*/ select count(deptno),deptno from emp group by deptno; /*错误,因为ename不是group by后面的列*/ select count(deptno),deptno,ename from emp group by deptno; /*正确,因为sum是聚合函数*/ select sum(sal),deptno from emp group by deptno; /*having其实很简单,就是限制性group by 及之前的语句,然后对结果进行筛选*/ select sum(sal),deptno from emp group by deptno /*执行后查询出结果*/HAVING sum(sal)>10000/*对结果筛选*/