Oracle学习笔记(四)

24.-------创建新用户--------

         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)不能存在传递依赖

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值