zoukankan      html  css  js  c++  java
  • Oracle学习笔记四:表的创建与管理

    一、表的创建

    1.1、创建表

    CREATE TABLE STUDENT 
    (
        ID INT NOT NULL,
        NAME VARCHAR2(20),
        BIRTHDAY DATE,
        STATUS VARCHAR2(10),
        CONSTRAINT STUDENT_PK PRIMARY KEY 
        (
            ID 
        )
        ENABLE 
    );

    1.2、插入数据

    INSERT INTO STUDENT (ID,NAME,BIRTHDAY,STATUS) VALUES (1,'HELLO',TO_DATE('2000-01-01','yyyy-mm-dd'),'GOOD');
    INSERT INTO STUDENT (ID,NAME,BIRTHDAY,STATUS) VALUES (2,'WORLD',TO_DATE('2000-02-01','yyyy-mm-dd'),'GOOD');
    COMMIT;

    1.3、查看所有表

    SELECT * FROM TAB;
    SELECT * FROM USER_TABLES;

    1.4、查看表结构

    desc student;

    二、表的更改

    2.1、更改表名

    RENAME STUDENT TO STUDENT1;

    2.2、更改表结构

    --增加列
    ALTER TABLE STUDENT ADD (EMAIL VARCHAR2(50));
    
    --增加列默认值
    ALTER TABLE STUDENT  MODIFY (BIRTHDAY DEFAULT SYSDATE);
    
    --更改列名
    ALTER TABLE STUDENT RENAME COLUMN STATUS TO INITLEVEL;
    
    --更改列类型
    ALTER TABLE STUDENT  MODIFY (NAME VARCHAR2(10 BYTE));
    
    --删除列
    ALTER TABLE STUDENT DROP COLUMN STATUS;

    三、表的复制

    CREATE TABLE STUDENT01 AS SELECT * FROM STUDENT;

    四、表的截断

    TRUNCATE TABLE STUDENT01;

    五、表的删除

    --删除表
    TRUNCATE TABLE STUDENT01;
    
    --删除表(包含约束)
    DROP TABLE STUDENT01 CASCADE CONSTRAINTS;
    
    --删除表(释放资源,不经过回收站。)
    DROP TABLE STUDENT01 PURGE;

    六、表的增删改查

    6.1、insert

    --直接插入
    INSERT INTO STUDENT01 (ID,NAME,BIRTHDAY,STATUS) VALUES (3,'HI',TO_DATE('2000-03-01','yyyy-mm-dd'),'GOOD');
    INSERT INTO STUDENT01 (ID,NAME,BIRTHDAY,STATUS) VALUES (4,'MAN',TO_DATE('2000-04-01','yyyy-mm-dd'),'GOOD');
    COMMIT;
    
    --从其它表插入
    INSERT INTO STUDENT (ID,NAME,BIRTHDAY,STATUS)
    SELECT ID,NAME,BIRTHDAY,STATUS FROM STUDENT01 WHERE NOT EXISTS (SELECT 1 FROM STUDENT WHERE ID=STUDENT01.ID);
    COMMIT;

    6.2、delete

    --按条件删除
    DELETE FROM STUDENT01 WHERE ID>=3;
    COMMIT;
    
    --删除所有记录
    DELETE FROM STUDENT01;
    COMMIT;
    
    --截断表
    TRUNCATE TABLE STUDENT01;
    COMMIT;

    6.3、update

    --直接更新
    UPDATE STUDENT01 SET STATUS='VERY GOOD' WHERE ID>=3;
    COMMIT;
    
    --从其它表更新
    ALTER TABLE STUDENT01
    ADD CONSTRAINT STUDENT01_PK PRIMARY KEY 
    (
      ID 
    )
    ENABLE;
    
    UPDATE (SELECT A.STATUS STATUS1,B.STATUS STATUS2 FROM STUDENT A INNER JOIN STUDENT01 B ON A.ID=B.ID WHERE B.ID>=3)
    SET STATUS1=STATUS2;
    COMMIT;

    6.4、select

    --单表查询
    
    --01.查询所有列
    SELECT * FROM STUDENT01;
    
    --02.查询指定列
    SELECT ID,NAME FROM STUDENT01;
    
    --03.算术运算符 +,-,*,/
    SELECT ID+1 NEWID FROM STUDENT01;
    
    --04.比较符 >,<,=,>=,<=,<>
    SELECT * FROM STUDENT01 WHERE ID>=3;
    
    --05.列连接 ||
    SELECT NAME,STATUS,NAME||' '||STATUS CONCATCOLOUMN FROM STUDENT01 WHERE ID<>3;
    
    --06.字符串 ''
    SELECT NAME||' IS A STUDENT' AS NAME FROM STUDENT01;
    
    --07.去除重复行 DISTINCT
    SELECT DISTINCT NAME FROM STUDENT01;
    
    --08.别名 AS
    SELECT NAME AS NEWNAME FROM STUDENT01;
    
    --09.构建表达式
    SELECT 'DROP TABLE '||TABLE_NAME||';' EXPRESSION FROM ALL_TABLES WHERE OWNER='SYSTEM' AND TABLE_NAME LIKE 'STU%';
    
    --10.模糊查询及通配符 LIKE,%,_
    SELECT * FROM STUDENT01 WHERE NAME LIKE 'HE%';
    SELECT * FROM STUDENT01 WHERE NAME LIKE 'H_LLO';
    
    --11.复合条件 AND,OR,IN
    SELECT * FROM STUDENT01 WHERE NAME LIKE 'H%' AND STATUS='GOOD';
    SELECT * FROM STUDENT01 WHERE NAME LIKE 'H%' OR STATUS='GOOD';
    SELECT * FROM STUDENT01 WHERE ID IN (1,3);
    
    --12.变量 &
    SELECT * FROM STUDENT01 WHERE ID=&ID;
    
    --13.排序 ASC,DESC
    SELECT * FROM STUDENT01 ORDER BY ID ASC;
    SELECT * FROM STUDENT01 ORDER BY ID DESC;
    
    --多表查询 INNER JOIN,LEFT JOIN,RIGHT JOIN
    SELECT A.ID,A.NAME,A.BIRTHDAY,B.STATUS FROM STUDENT A INNER JOIN STUDENT01 B ON A.ID=B.ID;
    SELECT A.ID,A.NAME,A.BIRTHDAY,B.STATUS FROM STUDENT A LEFT JOIN STUDENT01 B ON A.ID=B.ID;
    SELECT A.ID,A.NAME,A.BIRTHDAY,B.STATUS FROM STUDENT A RIGHT JOIN STUDENT01 B ON A.ID=B.ID;
  • 相关阅读:
    2017-7-17/18 背包dp cf round 417 div2
    poj3667-Hotel-线段树-区间合并
    STL 总结
    c++ 用freopen简单的重定向,再也不怕debug了~
    dynamic programming 从入门到放弃
    java 输入数据
    数位dp
    ECJTU 2018 Summer Training 5
    ECJTU 2018 Summer Training 2
    dfs和bfs专题
  • 原文地址:https://www.cnblogs.com/atomy/p/13806220.html
Copyright © 2011-2022 走看看