1、backup scott//备份
exp//导出
2、create user
createuser guohailong identified(认证) by guohailong default table space users quota(配额) 10M on users
grant create session(给它登录到服务器的权限),create table, create view to guohailong
3、import data
Imp
25. -------取消操作--------
rollback
-----------事务确认语句--------
commit;//此时再执行rollback无效
当正常断开连接的时候例如exit,事务自动提交。 当非正常断开连接,例如直接关闭dos窗口或关机,事务自动提交
-----表的备份
create table dept2 as select * from dept;
-----插入数据
insert into dept2 values(50,'game','beijing');
----只对某个字段插入数据
insert into dept2(deptno,dname) values(60,'game2');
-----将一个表中的数据完全插入另一个表中(表结构必须一样)
insert into dept2 select * from dept;
-----求前五名员工的编号和名称(使用伪字段rownum 只能使用 < 或 = 要使用 > 必须使用子查询)
select empno,ename from emp where rownum <= 5;
----求10名雇员以后的雇员名称--------
select ename from (select rownum r,ename from emp) where r > 10;
----求薪水最高的前5个人的薪水和名字---------
select ename, sal from (select ename, sal from emp order by sal desc) where rownum<=5;
----求按薪水倒序排列后的第6名到第10名的员工的名字和薪水--------
selectename, sal from
(select ename, sal, rownum r from
(select ename, sal from emp orderby sal desc)
)
where r>=6 and r<=10
26. -------面试题--------
有3个表S,C,SC
S(SNO,SNAME)代表(学号,姓名)
C(CNO,CNAME,CTEACHER)代表(课号,课名,教师)
SC(SNO,CNO,SCGRADE)代表(学号,课号成绩)
问题:
1,找出没选过“黎明”老师的所有学生姓名。
2,列出2门以上(含2门)不及格学生姓名及平均成绩。
3,即学过1号课程有学过2号课所有学生的姓名。
答案:
1、
select sname from s join sc on(s.sno =sc.sno) join c on (sc.cno = c.cno) where cteacher <> '黎明';
2、
select sname 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 cno in
(select distinct sno from sc where cno = 2);
)
27. --------创建表-----------
create table stu
(
id number(6),
name varchar2(20) constraint stu_name_mmnot null,
sex number(1),
age number(3),
sdate date,
grade number(2) default 1,
class number(4),
email varchar2(50) unique
);
28. 五种约束条件:非空约束、唯一约束、主键约束、外键约束、检查约束(check)
--------------给name字段加入 非空 **约束**,并给约束一个名字,若不取,系统默认取一个-------------
create table stu
(
id number(6),
name varchar2(20) constraint stu_name_mm not null,
sex number(1),
age number(3),
sdate date,
grade number(2) default 1,
class number(4),
email varchar2(50)
);
--------------给nameemail字段加上唯一约束两个 null值 不为重复-------------
create table stu
(
id number(6),
name varchar2(20) constraint stu_name_mmnot null,
sex number(1),
age number(3),
sdate date,
grade number(2) default 1,
class number(4),
email varchar2(50) unique
);
--------------两个字段的组合不能重复 约束:表级约束-------------
create table stu
(
id number(6),
name varchar2(20) constraint stu_name_mmnot null,
sex number(1),
age number(3),
sdate date,
grade number(2) default 1,
class number(4),
email varchar2(50),
constraint stu_name_email_uni unique(email,name)
);
29. -------主键约束--------
create table stu
(
id number(6),
name varchar2(20) constraint stu_name_mmnot null,
sex number(1),
age number(3),
sdate date,
grade number(2) default 1,
class number(4),
email varchar2(50),
constraint stu_id_pk primary key (id),
constraintstu_name_email_uni unique(email, name)
);
30.---外键约束 被参考字段必须是主键---
create table stu
(
id number(6),
name varchar2(20) constraint stu_name_mmnot null,
sex number(1),
age number(3),
sdate date,
grade number(2) default 1,
class number(4) references class(id),
email varchar2(50),
constraint stu_class_fk foreign key (class) references class(id),
constraint stu_id_pk primary key (id),
constraint stu_name_email_uni unique(email, name)
);
红色为字段约束的写法,蓝色为表级约束的写法
createtable class
(
idnumber(4) primary key,
namevarchar2(20) not null
);
31. 修改表结构
---------------添加字段--------------------------
altertable stu add(addr varchar2(29));
---------------删除字段--------------------------
altertable stu drop (addr);
---------------修改表字段的长度------------------
altertable stu modify (addr varchar2(50));//更改后的长度必须要能容纳原先的数据
----------------删除约束条件----------------
altertable stu drop constraint 约束名
-----------修改表结构添加约束条件---------------
altertable stu add constraint stu_class_fk foreign key (class) references class(id);
32. 数据字典表(有user_tables、user_views、user_constraints等等)
---------------查看当前用户下面所有的表、视图、约束-----数据字典表user_tables---
select table_name from user_tables;
select view_name from user_views;
select constraint_name from user_constraints;
存储数据字典表的信息的表:dictionary;
//该表共有两个字段 table_name comments
//table_name主要存放数据字典表的名字
//comments主要是对这张数据字典表的描述
33. 索引(能优化查询效率)
create index idx_stu_email on stu (email);// 在stu这张表的email字段上建立一个索引:idx_stu_email
---------- 删除索引 ------------------
drop index index_stu_email;
---------查看所有的索引----------------
select index_name from user_indexes;
---------创建视图-------------------
create view v$stu as select id,name,age from stu;
视图的作用: 简化查询,保护我们的一些隐私数据,通过视图也可以用来更新数据,但是我们一般不这么用
缺点:要对视图进行维护
34.创建序列(sequence,oracle特有的东西,一般用来做主键)
create sequence seq;//创建序列
select seq.nextval from dual;// 查看seq序列的下一个值
drop sequence seq;//删除序列
create table article ( id number, title varchar2(1024),cont long);
create sequence seq;
insert into article (id,title,cont) values(seq.nextval , ‘a’, ‘b’);
35. 数据库的三范式
(1)要有主键,列不可分
(2)不能存在部分依赖:当有多个字段联合起来作为主键的时候,不是主键的字段不能部分依赖于主键中的某个字段
(3)不能存在传递依赖