简单的SQL语句(不定期更新)

create table dept(dname char(7),loc char(4),id number(7) primary key);//建表

desc dept;//查找表所具有的属性
alter table dept add ddate date;//修改table表 dept 增加名为当ddate属性为date的属性组
select * from dept;//选择所有表元素
alter table dept drop column ddate;//删除dept 中在ddate列
insert into dept (dname,loc,ddate)values('12','23',23);//向dept中插入元组
insert into dept (deptno,dname,loc) values(77,'11','1321');
alter table dept add constraint first primary key (deptno);//将dept中的deptno设成主码
alter table dept add constraint uni primary key (deptno);

delete  from dept where deptno='7';//删除dept表中deptno='7'的元组

create table emp as select * from scott.emp;///从事scott用户下把emp表拷到自己用户下

(一)   包括排序、分组的单表查询

emp表

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
8888              
30 SMITH CLERK 7902 17-12月-80 800   20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975   20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850   30
7782 CLARK MANAGER 7839 09-6月 -81 1000   10
7788 SCOTT ANALYST 7566 19-4月 -87 3000   20
7839 KING PRESIDENT   17-11月-81 1000   10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100   20
7900 JAMES CLERK 7698 03-12月-81 950   30
7902 FORD ANALYST 7566 03-12月-81 3000   20
7934 MILLER CLERK 7782 23-1月 -82 1900   10

 

1)查询EMP全部列

select * from emp;

2)如果现在只要查询出雇员的编号、姓名、工作.

select empno,ename,job from emp;

3)为查询的结果列指定一个别名.

select count(*) num from emp

4)查询所有的工作(去掉重复的工作) distinct

select distinct job from emp;

5)查询出工资大于1500的所有雇员

select * from emp
where sal>1500;

6)例:查询出在1981年入职的全部雇员的信息

select * from emp where to_char(hiredate) like '%81';
7)例:查询出雇员号不是7369, 7499 , 7521 的雇员的具体信息

select * from emp
where empno not in(7369,7499 , 7521);

8)例:查询出雇员姓名第二个字母为”L”的雇员信息

select * from emp
where ename like'_L%';

9)例:按工资升序对雇员信息进行排序

select * from emp
order by sal asc;

10)检索出部门号为30的雇员信息,并按工资降序,工资相同则按入职日期升序排列

select * from emp
where empno in(
select empno from emp
where deptno=20
)
order by sal desc,hiredate asc;

11)查询没有得到奖金的员工的信息。

select * from emp
where comm is null;

 

(二) 多表连接查询

DEPTNO DNAME LOC
77 jhk  
89 lll  
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
45    

1)查询出雇员的编号,雇员姓名,部门编号,部门名称以及部门的位置

select emp.empno,emp.ename,dept.deptno,dept.dname,dept.loc from emp,dept
where emp.deptno=dept.deptno;

2)以部门为主体,利用emp和dept做一个连接查询,查询结果包括雇员编号,雇员姓名,部门编号,部门名称,部门所在位置(利用外连接)

select emp.empno,emp.ename,dept.deptno,dept.dname,dept.loc from emp,dept
where emp.deptno=dept.deptno(+);

3)统计获得奖金的人数

 

4)求所雇员的最低工资

5)统计出每个部门的人数

6)查询出每个部门的部门名称,及每个部门的雇员人数

7)求部门号为20且工资小于3000的员工编号及其所属部门名称

8)查询某个员工的直接领导

 

用户授权

grant select on emp to machuan;

权限回收

revoke select on emp from machuan;
 

posted @ 2013-04-08 14:59  剑不飞  阅读(329)  评论(0编辑  收藏  举报