里的一个小区域填满了再统一拿到硬盘上来〕一路回车就行,等着它导完就可以了;3.创立
新用户 create user huanggang identified by haha0832 default tablespace users quota 10M on
users;用户名 huanggang 口令 haha0832 在 users 表空间里分配 10M 的默认表空间给该用户;
4.给予相应权限 grant create session,create table,create view to huanggang,如果没有 session
它登录都是问题;。只有 2 和 5 是在命令行中完成,其余是超级用户登录后在数据库里完成。
insert into+表名+values〔各字段值〕,在对这些数据进行操作时最好有一个备份,方法
很简单 rollback 回退操作,create table 表名 as select * from +欲备份表名;insert 语句还有一
种插入方法,insert into dept2(deptno,loc) values(50,'beijing');只是插入局部字段的值,其他字
段的值为 null,还有一种方法是 insert into dept2 select * from dept;将 select 子句选出的记录
挨个插入前提是选出的记录与该表的记录格式相同。
在 Oracle 中取完相应字段后,会在末尾附加一个伪字段,你看不到,叫做 rownum,它
是记录下每条记录在第几行了,用它的时候有个限制条件只能与<或<=在一起使用,在其他
数据库里没这种限制,且用起来也比拟简单,与其他数据库不兼容的地方,实在要用的话非
得加上一个子查询得出 rownum 字段。比方要取出工资最高的第六个到第十个人:
select ename,sal,r from
( select ename, sal,rownum r from
( select ename,sal from emp order by sal desc)
)
where r>=6 and r<=10
;
这个在 Oracle 里面是效率最高的,如果通过连接数据库用 Java 编程来做,但效率相当低。
这个重点掌握,比方说显示论坛里的帖子是分页显示的,如果想显示第 4 页的内容一定是从
某一个帖子到某一个帖子显示出来,帖子这个记录是按照发帖时间倒序排列的。三层嵌套就
是 Oracle 对这种问题的解决方案,当然每一种数据库有自己的解决方式。
SQL 面试题:
有 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 from s join sc on (s.sno=sc.sno) join c on (c o=sc.no) where c.cteacher <>
‘liming’;
(2) select sname from s where sno in (select sno from sc where scgrade <60 group by sno
having count(*) >=2);
(3) select sname from s where sno in (select sno from sc where cno=1 and sno = (select sno
from sc where cno=2));
update 的作用相对于对记录进行修改。用法是 update+表名+set+字段列表及更新值过滤条
件;delete+from+表名+过滤条件,删除某些字段。
五.
接下来讲数据定义语言 ddl 语言。它实现了数据表,视图等的建立。事务 transaction 就
是一系列的操作,要么同时完成要么不完成,比方转账操作要对两个账户 update,不会出
现数据不一致。对于 Oracle 来说,一个 transcation 起始于一条 dml 语句,然后一系列的操