Posted on 2010-07-11 15:43
断点 阅读(232)
评论(0) 编辑 收藏 所属分类:
Oracle DBA
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。
DML(data manipulation language):它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。
conn sys/sys as sysdba;
drop user pcisv6 cascade;
exp --备份scott用户下的表
--创建用户,identified为认证相当是密码,quota配额就是分配空间。
create user pcisv6 identified by 11 default tablespace core6 quota 10M on corev6
grant create session,create table,create view to pcisv6; --授权,session是用于登录的
imp --导入scott用户下的表
SELECT:
select rownum r,ename from emp; --rownum行数,目前只能使用<、<=, 而没有直接>、=的写法。
select ename, sal --求薪水最高的前5人
from (select ename, sal from emp order by sal desc)
where rownum <= 5;
--求薪水最高的前6到10人
select ename,sal,rownum r from emp order by sal desc; --r 排序混乱
select ename,sal,rownum r from (select ename,sal from emp order by sal desc); --此时r序号按新表排序
select ename, sal -- 此处为结果
from (select ename, sal, rownum r
from (select ename, sal from emp order by sal desc))
where r >= 6
and r <= 10;
INSERT:
insert into dept values(50,'game','bj'); --整条记录
rollback;
create table dept2 as selet * from emp; --创建dept2表
insert into dept2(deptno,dname) values(60,'game2'); --有选择的字段插入
insert into dept2 select * from dept; --插入一个表, 2个表结构一样
UPDATE:
update emp2 set sal=sal*12,ename=ename||'-' where deptno=10;
DELETE:
delete from dept2 where deptno<25;
rollback;
TRANSACTION:
transaction 起始一条dml语句,在commit、rollback时完成。
transaction 在执行dml后,在其后有执行了ddl、dcl时,事务自动提交。
在正常退出exit时,事务自动提交。
在非正常退出时,事务回滚。
------------------------------------------------------------
例子:
有3个表S,C,SC
S(SNO,SNAME)代表(学号,姓名)
C(CNO,CNAME,CTEACHER)代表(课号,课名,教师)
SC(SNO,CNO,SCGRADE)代表(学号,课号成绩)
问题:
1,找出没选过“黎明”老师的所有学生姓名。
2,列出2门以上(含2门)不及格学生姓名及平均成绩。
3,即学过1号课程有学过2号课所有学生的姓名。
请用标准SQL语言写出答案,方言也行(请说明是使用什么方言)。
1.
select sname froms
join sc on (s.sno = sc.sno)
join c(c.cno = sc.cno)
where c.cteacher <> 'liming';
2.
select sname
where sno in (select sno
from sc
where scgrade < 60
group by sno
having count(*) >= 2);
3.
select sname
where sno in (select sno
from sc
where cno = 1
and sno in (select sno from sc where cno = 2));