• Oracle第三课(学习中笔记)


    复习
    一。连接查询
    等值连接 FROM A a, B b WHERE a.id = b.id
    不等值连接 FROM A a ,B b WHERE a.id between b.aid  and b.bid ;
    自连接 FROM A a, A b where a.id = b.id
    外连接

    class    student
    1    1001
    2    1002

    WHERE CLASS.ID(+) = STUDENT.CID;

    二。组查询
    single-row单行函数
    upper(name)更改数据为大写
    round(age)单个处理四舍五入

    group function 分组函数
    count(*) 查询数量
    avg(age) 查询平均值

    三。
    group by :
    select count(*),min(salary)
    frome table_emplpyee
    group by age
    分组后进行条件的过滤
    having count(*)>2 (hanving专属于group by )

    例:
    SELECT COUNT(*)
    FROM TABLE
    WHERE AGE >20 AND AGE <30 由此问上是取出大于20小于30的年龄
    GROUP BY AGE  利用age进行分组
    HAVING COUNT(*)>10 取分组后的数据中count(*)>10的内容
    ORDER BY AGE 最后将所有的数据进行排序


    group by trunc(age/10) 将1-10,10-20,20-30 进行分组
    要是我们要在21-31 进行分组呢。应当如此写法
    group by trunc((age-1)/10)

    subquery
    SELECT * FROM A WHERE A.ID IN (
        SELECT AVG(AGE) FRME B
    )

    分页(子查询)
    page
    SELECT * FROM (
        SELECT D FROM P
    )

    使用rownum表示当前行的行号
    -----------------------------------------------


    E-R图的绘画。
    one-to-one
    many-to-one
    many-to-many

    范式
    第一范式(INF):在关系模式R中的每一种具体关系R中,如果每个属性值都是不可再分的最小数据单位,
    则称为R是第一范式的关系
    第一范式简单地说,就是要求属性具有原子性,不可再分解。第一范式面临出第二范式。
    第二范式(2NF):如果关系模式R(U,F)中的左右非主属性都完全依赖于任意一个候选关键字,则称关系R是属于第二范式。
    第二范式简单地说,就是每个表有个主键,其他字段完全依赖于该主键,第二范式的问题?引出第三范式。
    第三范式(3NF);如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递依赖,则成关系R是属于第三范式的。
    第三范式是很重要的,表示了不要存在值的依赖关系。


    第四章节TABLE
    Datetype
    VARCHAR2
    CHAR
    VARCHAR

    CREATE TABLE JUL12_TEST_CHAR(
        a char(10),
        b varchar(10),
        c varchar2(10)
    )

    INSERT INTO JUL12_TEST_CHAR VALUES('AAA','AAA','AAA');
    SELECT LENGTH(A),LENGTH(B),LENGTH(C) FROM JUL12_TEST_CHAR
    CHAR为不可变
    VARCHAR为可变类型,为微软的标准。
    VARCHAR2也为可变类型,只有Oralce自己可以用。
    VARCHAR2的类型最多可以放置4000个字符。

    NUMBER
    CREATE TABLE JUL12_TEST_NUMBER(
        A NUMBER,
        B NUMBER(3),
        C NUMBER(5,2)
    );

    INSERT INTO JUL12_TEST_NUMBER (A) VALUES(1234);
    INSERT INTO JUL12_TEST_NUMBER (A) VALUES(123123123123123);
    INSERT INTO JUL12_TEST_NUMBER (A) VALUES(123.12);
    如此可见 NUMBER就是什么样的数据都可以添加进入数据库
    INSERT INTO JUL12_TEST_NUMBER (B) VALUES(2.234);
    如此可件 NUMBNER(3可添加的都是整数,而位数最多为三位,若添加小数,则在开始的时候就被取整
    INSERT INTO JUL12_TEST_NUMBER (C) VALUES(1.2312);
    INSERT INTO JUL12_TEST_NUMBER (C) VALUES(123.12312);// 可以插入但是小数被转化成2位
    INSERT INTO JUL12_TEST_NUMBER (C) VALUES(12344); //  不能插入
    如此可见 NUMBER(5,2)中可以添加小数的位数必须为2。那么整数的位数就只能为三了。

    当然也可以 使用INT   他的范围和变成语言中的是一样的。

    日期格式
    CREATE TABLE JUL12_DATE
    (
        D DATE
    );

    INSERT INTO JUL12_DATE VALUES(SYSDATE);
    INSERT INTO JUL12_DATE VALUES('09-AUG-08');
    INSERT INTO JUL12_DATE VALUES(TO_DATE('AUG:03:08','MM:DD:YY'));

    SELECT TO_CHAR(D,'DD-MM-YY HH24:MM:SS') FROM JUL12_DATE;
    INSERT INTO JUL12_DATE VALUES(TO_DATE('AUG:18:2008 12:23:10','MM-DD-YY HH:MI:SS'));


    ----CLOB   BLOB


    =====================================================
    主键。。。
    PRIMARY KEY
    CREATE TABLE JUL12_PK(
        ID NUMBER(4) PRIMARY KEY,
        NAME CHAR(10)
    );

    INSERT INTO JUL12_PK VALUES(1,'AA');
    INSERT INTO JUL12_PK VALUES(2,'BB');
    INSERT INTO JUL12_PK VALUES(3,'CC');

    CREATE TABLE JUL12_PK1(
        ID NUMBER(4) ,
        NAME CHAR(10),
        CONSTRAINT S_1PK PRIMARY KEY(ID)
    );


    ALTER TABLE JUL12_STUDENT_04
    ADD CONSTRAINT SS_PK
    PRIMARY KEY(SID);

    非空约束
    CREATE TABLE JUL12_NULL(
         ID NUMBER(3) PRIMARY KEY,
        NAME VARCHAR(10) NOT NULL
    );

    ALTER TABLE JUL12_NULL  MODIFY NAME NULL;

    --unique唯一性约束
    CREATE TABLE JUL12_UNIQUE1(
        ID NUMBER PRIMARY KEY,
        NAME CHAR(10) UNIQUE
    );

    INSERT INTO JUL12_UNIQUE1 VALUES (1,'ZAHNG');
    INSERT INTO JUL12_UNIQUE1 VALUES (2,'ZHANG');

    、、CHECK
    加查值是否在约束的范围里面
    CREATE TABLE JUL12_CHECK(
        A CHAR(3)
        CONSTRAINT CHECK_A CHECK (A IN ('A','B','C'))
    );

    ---FOREIGN KEY
    CREATE TABLE JUL12_TEST_CLASS(
        CID NUMBER(3) PRIMARY KEY,
        CNAME VARCHAR2(10) UNIQUE
    );
    CREATE TABLE JUL12_TEST_STUDENT(
        SID NUMBER(3) PRIMARY KEY,
        SNAME VARCHAR2(10) NOT NULL,
        CID NUMBER(3) ,
        CONSTRAINT JUL12_FK_SC FOREIGN KEY(CID) REFERENCES
        JUL12_TEST_CLASS(CID)
    );

    INSERT INTO JUL12_TEST_CLASS VALUES(1,'JAVA');

    INSERT INTO JUL12_TEST_STUDENT VALUES(101,'ZHANG',1);

    先删除子表,然后再删除父表。

    级联删除呢?
    DELETE FROM JUL12_TEST_CLASS;

    alter TABLE JUL12_TEST_STUDENT MODIFY
        CONSTRAINT JUL12_FK_SC1 FOREIGN KEY(CID) REFERENCES
        JUL12_TEST_CLASS(CID) ON DELETE CASCADE;
    -------实现级联删除,父表删除则子表关于删除列的内容全部删除
    1。删除以前约束
    ALTER TABLE JUL12_TEST_STUDENT DROP CONSTRAINT JUL12_FK_SC;
    2。建立新的符合要求的约束
    ALTER TABLE JUL12_TEST_STUDENT ADD
        CONSTRAINT JUL12_FK_SC1 FOREIGN KEY(CID) REFERENCES
        JUL12_TEST_CLASS(CID) ON DELETE CASCADE;
    -------删除后子表的该字段为NULL
    1。删除以前的约束
    ALTER TABLE JUL12_TEST_STUDENT DROP CONSTRAINT JUL12_FK_SC1;
    2。建立信的符合要求的约束
    ALTER TABLE JUL12_TEST_STUDENT ADD
        CONSTRAINT JUL12_FK_SC1 FOREIGN KEY(CID) REFERENCES
        JUL12_TEST_CLASS(CID) ON DELETE SET NULL;

    约束名字在user_constratints表中
    SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE FROM
    USER_CONSTRAINTS WHERE TABLE_NAME='JUL12_TEST_STUDENT';
  • 相关阅读:
    python 进程、线程、协程感悟
    elk部署心得
    虚拟安装centos后无法上网、DNS无法解析问题解决
    mysql测试题
    爬取lol皮肤
    ping使用
    第一篇技术博客
    PADS layout修改字符时发生严重错误退出问题
    PADS 快捷键
    电容知识整理
  • 原文地址:https://www.cnblogs.com/itgmhujia/p/1262319.html
Copyright © 2020-2023  润新知