天天看點

【學習總結】Oracle資料的基本用法

1.解鎖scott使用者

---這句話的目的是為了檢視我登入的執行個體
SELECT * FROM V$INSTANCE;
---v$開頭的動态性能試圖
---解鎖scott賬戶
SELECT * FROM DBA_USERS;
ALTER USER SCOTT IDENTIFIED BY SCOTT;

           

2.建立TBL_STUDENT表

CREATE TABLE TBL_STUDENT
(
STU_ID       NUMBER(10),
STU_NAME     VARCHAR2(20),
PHONE_NUMBER VARCHAR2(20)
)
           

3.給表中插入注釋

COMMENT ON TABLE TBL_STUDENT IS '學生基本資訊表';
COMMENT ON COLUMN TBL_STUDENT.STU_ID IS '學生編号';
COMMENT ON COLUMN TBL_STUDENT.STU_NAME IS '學生姓名';
COMMENT ON COLUMN TBL_STUDENT.PHONE_NUMBER IS '手機号碼';
           

4.表中插入資料

INSERT INTO STUDENT(STU_ID,STU_NAME,PHONE_NUMBER)
   VALUES (1,'張三','18012341234');
   INSERT INTO STUDENT(STU_ID,STU_NAME,PHONE_NUMBER)
   VALUES (2,'李四','18012341234');
   INSERT INTO STUDENT(STU_ID,STU_NAME,PHONE_NUMBER)
   VALUES (3,'王五','18012341234');
   COMMIT;
           

5.添加列

ALTER TABLE TBL_STUDENT ADD(STU_GENDER NUMBER(1));
           

6.添加性别:0表示男 1表示女

UPDATE TBL_STUDENT t SET t.STU_GENDER ='0'where t.stu_id='1';
           

7.表資料的删除

DELETE FROM TBL_STUDENT WHERE ID ='1';
           

8.清空表的兩種方式

                          No.1:DELETE:後面可以直接加條件 删除我所指定的資料,删除資料後 原有的資料塊不會被釋放 會産生高水位線問題 但delete支援復原 速度較慢

                          No.2:TRUNCATE:TRUNCATE後面不能加條件 是對資料的直接清空 速度較快 能夠對表空間得到釋放 但是turncate無法復原

DELETE FROM TBL_STUDENT;
TRUNCATE FROM TBL_STUDENT;
           

9.修改表中資料

UPDATE TBL_STUDENT T SET T.STU_NAME = '呵呵' WHERE T.STU_ID='1';
           

10.查詢表中的資料及部分用法

--查詢表中所有資料
SELECT * FROM TBL_STUDENT;
--查詢id在3到8之間的資料
SELECT * FROM TBL_STUDENT t WHERE t.STU_ID BETWEEN 3 AND 8;
--查詢性别為男的人數
SELECT COUNT(t.stu_id)FROM TBL_STUDENT t WHERE t.STU_GENDER = '0';
--把兩個表的結果都查詢出來 兩個結果集并起來
--UNION ON 和UNION 的差別:union 會對表中的資料進行排序而且會清除重複資料 較消耗性能
SELECT * FROM TBL_STUDENT UNION ALL SELECT * FROM TBL_STUDENT2;
SELECT * FROM TBL_STUDENT UNION SELECT * FROM TBL_STUDENT2;
           

11.查詢男女比例

--CASE WHEN 當滿足條件的時候
--THEN 要取得結果  END 表示case when 語句結束
SELECT (COUNT(CASE WHEN t.STU_GENDER = '0' 
             THEN t.STU_ID END)/COUNT(t.STU_ID))*100||'%' cnt_nan,
       (COUNT(CASE WHEN t.STU_GENDER = '1' 
             THEN t.STU_ID END)/COUNT(t.STU_ID))*100||'%' cnt_nv                    
FROM TBL_STUDENT t;
           

      查詢結果:

【學習總結】Oracle資料的基本用法

12.統計人數最多的姓氏 和 統計人數最少的姓氏

select z.xin,z.cnt_xin
   from(
       select substr(t.stu_name,0,1) xin,count(t.stu_id) cnt_xin
           from tbl_student t
       group by substr(t.stu_name,0,1)
       )z
       ,
       (
       select max(t.cnt_xin) mx,min(t.cnt_xin) mi
           from(
               select substr(t.stu_name,0,1) xin,count(t.stu_id) cnt_xin
                    from tbl_student t
               group by substr(t.stu_name,0,1))t
        ) z2
   where z.cnt_xin = z2.mx or z.cnt_xin = z2.mi;
           

          查詢結果:

【學習總結】Oracle資料的基本用法

   左表為學生資訊表,右邊為姓氏統計最值表 

【學習總結】Oracle資料的基本用法

未完待續。。。。。。