Oracle第四课

Oracle第四课

一、plsql操作

  1. 免密登录

    tools->preferences->logon history->fexed users->user21/user21
  2. 关键字转大写

    tools->preferences->Editor->keywords->uppercase
  3. view查看表结构,edit修改表结构

  4. query data 查看表里的记录,edit data修改表里的记录

二、外键约束

  1. 外键,第三范式,别的表中

  2. 创建一个班级表

    CREATE TABLE t_clazz(
    ID number PRIMARY KEY,
    name varchar(20) NOT NULL,
    remark varchar(50));
  3. 给t1表增加班级这一列

    ALTER TABLE t1 ADD clazz NUMBER;
  4. 给t1表增加外键,参照班级表的id

    -- 外键什么都不写(no action),当子表有关联时删除父表记录会报错
    ALTER TABLE t1 ADD CONSTRAINT t1_fk FOREIGN KEY(clazz)
    REFERENCES t_clazz(ID);
    -- 设置为set null,删除父表记录时,把子表相应外键置为空
    ALTER TABLE t1 ADD CONSTRAINT t1_fk FOREIGN KEY(clazz)
    REFERENCES t_clazz(ID) ON DELETE SET NULL;
    -- cascade级联删除,删除父表时,子表相应的记录也会被删除
    ALTER TABLE t1 ADD CONSTRAINT t1_fk FOREIGN KEY(clazz)
    REFERENCES t_clazz(ID) ON DELETE CASCADE;
  5. 删除外键约束

    ALTER TABLE t1 DROP CONSTRAINT t1_fk;

三、truncate

  1. 作用:截断表,删除表中的数据,但是保留表的结构和索引、触发器等对象

  2. delete删除表中的记录,对表也没有影响(DML)

  3. truncate(DDL),类似于drop table,然后再create table,假设truncate命令执行后,后台drop表,然后再create表,对于客户感觉不到

四、DML(数据操作语言,增删改)

  1. 插入

    -- insert不写列时,指定的值的顺序一定要和表结构中的列的顺序保持一致

    insert into 表名(列1,列2,...) values(值1,值2,...);
    -- 向班级表中添加数据
    INSERT INTO t_clazz VALUES(1,'name1','');
    -- 向t1表中添加数据
    INSERT INTO t1(id,NAME,age,sex,clazz) VALUES(3,'name1',10,0,1);
  2. 修改

    -- set后面是要修改的条件

    -- 把所有记录都修改
    UPDATE t_clazz SET NAME='新名称';
    -- 把id为1的记录修改
    UPDATE t_clazz SET NAME='新名称1' WHERE ID=1;
  3. 删除

    DELETE FROM t_clazz WHERE ID=1;

    -- delete针对表中的数据,trunicate针对表对象的

    -- delete不会释放空间,truncate会释放空间

    -- delete可以恢复数据,truncate不可以恢复

    -- drop释放空间,表上的所有对象都丢失了,truncate不会丢失表上的对象

    -- 有害化排序:delete->truncate->drop

五、DQL(数据查询语言)

  1. sys登录

    • 账号:sys 密码:orcl

  2. 获取当前用户下所有的表的信息

    SELECT * FROM User_Tables t;
  3. 获取当前表的所有字段信息

    SELECT * FROM User_Tab_Columns WHERE table_name='T_CLAZZ';
  4. 给表起别名

    as 或者是空格
    SELECT sal,empno,ename,sal+100 sal2,comm,sal+comm money FROM emp;
  5. scott是Oracle一个测试账号,默认是锁定,要解锁,解锁完了要修改密码(强制)

    -- scott下面有几张表,供测试使用

    -- 以sysdba登录
    sqlplus / as sysdba
    -- 解锁scott账号
    alter user scott account unlock;
    -- 修改scott密码
    alter user scott identified by scott;
    -- 登录scott账号
    sqlplus scott/scott
  6. 查询空或者非空

    SELECT SAL FROM emp WHERE SAL IS NULL;
  7. where过滤

    -- 查询工资大于3000的员工
    SELECT empno,ename,sal FROM emp WHERE sal>=3000;
  8. 去重

    -- 查询部门里面有人的部门号
    SELECT DISTINCT deptno FROM emp;
    -- distinct对后面的字段都进行过滤
    SELECT DISTINCT deptno,sal FROM emp;
  9. 排序

    -- 升序ASC,降序DESC
    SELECT * FROM emp ORDER BY sal;
    SELECT * FROM emp ORDER BY sal;
    -- 部门升序,部门中的员工工资降序
    SELECT * FROM emp ORDER BY deptno ASC,sal DESC;

六、作业

  1. 按照emp表中的入职时间降序查询

  2. 获取emp表中的所有职位信息,不要重复显示

  3. 显示每个员工的sal增加500后的信息

  4. JavaScript中找出数组重复的元素

    [10,9,3,7,2,8,4,5,7,9],找出9和7



posted @ 2021-01-18 12:20  若你  阅读(55)  评论(0编辑  收藏  举报