程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle簡單操作語句(增刪改查),和代碼例子,oracle增刪

Oracle簡單操作語句(增刪改查),和代碼例子,oracle增刪

編輯:Oracle教程

Oracle簡單操作語句(增刪改查),和代碼例子,oracle增刪


//創建用戶 :
    
        create user c##名字 identified by 密碼 ;
        //命名規則 :
            1 名字必須以字母開頭,
            2 長度不能超過30個字符(60字節),
            3 不能使用oracle的保留字<
            4 只能使用a-z,A-Z, 0-9,$,#,_,等...

//切換當前用戶 :

            connect 用戶名/密碼@網絡服務器(orcl);

//oracle數據類型 :
    
        number : 整型值  插入值的時候 直接 (22,33,4,45,...就行)
        varchar2 : 字符型 插入值的時候 '必須用單引號括起來';
    number :

        number(5,2);//一共5位數字,其中有兩位是小數,范圍是(-10^38 ~ 10^38);
        number(5);//就是規定有五位數字,沒有小數 默認是number(5,0);
    
    char :

        //查詢快,但是浪費空間
        char:定長,2000字符(4000字節),字符串char(5);//可以設置5可 但是內容必須是 '內容',用單引號括起來

    varchar2 :

        varchar2:變長,4000字符(8000字節);
        varchar2(20 byte);//規定能寫20個字符 但是只能是byte類型(字節型),但是內容必須是 '內容',用單引號括起來

    clob :

        clob(characterlarge object);//字符型大對象,最大4G

    date :

        date;//時間格式,values()賦值的時候,可以用這個更改格式 : to_date('20-2-81','DD-MON-RR');

    blob :
        blob://二進制數據電影,圖片,音樂,4G不會放到數據庫裡面,文件服務器

//創建表單 :
    在當前用戶下創建表單
    create table 表名字(id number(5,2), name varchar2(20 byte));//創建一個表單,裡面有兩列,第一列是id 是數值型 切共有5位數字,並有兩位是小數,三位是整數 ,第二列是name 字符型,能輸入20個字節,必須是字節

//更改表名字 :

    rename 舊表名 to 新表名;

zeng :
//增 :
    //創建用戶 :
    
        create user c##名字 identified by 密碼 ;
        //命名規則 :
            1 名字必須以字母開頭,
            2 長度不能超過30個字符(60字節),
            3 不能使用oracle的保留字<
            4 只能使用a-z,A-Z, 0-9,$,#,_,等...

    //為用戶授權 : 權限

        grant connect,resource,unlimited tablespace to c##名字 container=all;//所有權限

    //grant 權限 to c##用戶名:

        connect:鏈接(登陸) 權限
        resource:數據/源 權限 (對數據的 增 刪 改 查 )
        unlimited tablespace : 表空間 權限

    // grant 權限 傳遞
        
        grant 權限 to 用戶名 with grant option;//它也就有給別人權力的權力,但是權力不能超過他自己(本身)

    //設置用戶使用的表空間 :
        
        alter user 用戶名 default tablespace users;
        alter user 用戶名 temporary tablespace temp;//臨時表空間

    //創建表單 :

        create table 表名(屬性 number(5,0)/*數據類型五位數,且沒有小數*/ , 屬性 varchar2(4 byte)/*數據類型,字符型,只能輸入4位,必須是字節格式*/)

    //往表裡面添加行(內容) :
        
        insert into 用戶名.表名(屬性1,屬性2.../*可選的*/)values(值,值...);

    //往表單裡添加一個字段 : (添加一個列/屬性)

        alter table 表名 add ("名字" number(3)/*類型,規定內容格式*/);

    //多個插入 :

        insert into 新表名(字段名) select 列 from 表名 where 行限定條件(不是所有數據,年齡段,某個部門)//
    如 : insert into emp(id) select age from emp where id = 33;//把emp表中 id列值為33,對應的那些age的值,添加到emp表的id列中

    //備份表 :

        create table 表名 as select * from 表名;

    //模擬中的數據復制 :

        insert into 表1(屬性1,屬性2...) select * from 表2;//表1後面屬性個數是多少,表2就必須是多少,而且數據類型也必須完全相同 , 然後把表2裡面列的數據類型的值,添加到和表1中對應列的數據類型相同的那一列的後面(追加行 )
        1 insert into emp (id/*我這個id是number(5)類型,並且只能寫5個數字*/) select * from emp2;//表2 裡面必須有一個number(5)類型的列,並且也只能寫5個數字
        2 insert into emp (id/*我這個id是number類型*/) select hao from emp2;//hao這個列 必須和id列的數據類型完全相同,然後把hao那一列的數據,在id哪一列的後面,追加

shan :
//刪 :

    //刪除用戶和表 :
      
        //刪除用戶 只能用sys用戶才能刪除,因為只有sys用戶有刪除別的用戶的權利
        drop user 用戶名 cascade;//用戶和表一起刪除

    //刪除表 :

        drop table 用戶名.表名;//刪除表

    //刪除權限 :

        revoke 操作名(權限) on 表名 from 用戶名;

    //刪除一個表的字段 : (刪除一個列/屬性)

        alter table 表名 drop column 列名;    //強烈建議不要對成熟的系統這麼做

    //刪除行 : 不定條數
    
        delete from 表名 where 行限定條件;
            限定條件 如 : name那一列為Kay的 全部刪除
        delete from emp where name = 'Kay';

    //刪除表的數據

        truncate table 表名;    //相當於刪除表和數據然後重建表.

gai :
//改 :

    //更改表名字 :
        
        rename 舊表名 to 新表名;

    //切換當前用戶 :

        connect 用戶名/密碼@網絡服務器(orcl);

    //更改字段(列)的類型或者名字 :

        alter table 表名 modify (屬性 類型);
            如 : alter table student modify (sex number(1));

    //更改列上的值 :

        update 表名 set 列名=列值改變量(+-*/), 字段2,字段3, where 行限定條件;
            如 :  update 表名 set 列名='值' where id='B0002'(限定條件,id為B0002的 都會把前面指定的屬性的值更改);

            1  update 表名 set (job,sal,comm/*列名*/)= (select job,sal,comm from/*查看三個列*/ emp where ename='clock'/*ename為'clock'*/) where ename ="scott"/*enamel為'Scott'的*/;//

            1 --> update 表名 set (job,sal,comm)= (select job,sal,comm from emp where ename='clock') where ename ="scott";//先查ename為'clock'的(區分大小寫),獲取job,sal,comm,對應的值,再把這些值更改(賦值)到 ename為'scott' 對應的job,sal,comm的列值中

cha :
//查 :

    //查看當前登陸用戶 :
        
        show user;

    //查看當前用戶下所有的表單 :

        select * from user_tables;

    //查看你能管理的所有用戶 :
    
        select * from all_users;

    //查看數據庫裡面的所有用戶 :

        select * from dba_users;//前提是 你登陸的是sys或system號(用戶);

    //查看數據庫裡面的所有表

        select 表名 from dba_tables;//數據庫所有表,包括系統表,前提是 你登陸的是sys或system號(用戶);

    //查看表頭 :

        desc 表名;//查看表頭(也就是列)
where_and :
    //篩選數據,多選, 查詢空值 (後面只能用null 這是一個語句)

        select * from 表名 where 列(屬性) is not null;//不為空的
        select * from 表名 where 列(屬性) is  null;//為空的
        //查看某列的屬性為空(不為空)的所有數據

where_and_or :
        or : 或者 或
        >,>=,<,<=,= : 大於,大於等於,小於,小於等於,等於;
    select * from 表 where (列 >/*</>/=(大於或等於或小於)*/值 or 列 = 值) and 列 like 'j%';//
        如 : select * from emp where (id>20 or age = 19)and name like 'j%';//查看emp表中 id列的值大於20或age列的值為19的 並且 name列的值以j開頭的所有的行的屬性

    //指定查詢 :

        select 列限定(就是列) from 表限定(就是表) where 行限定(就是一行中某一個屬性);    //數據限定條件區分大小寫,java限定大小寫,select什麼就輸出什麼
        1 select id,name from emp where job = 'CLERK';//查看 job(列)為'CLERK'的哪一行(或多行)的id值和name值

        2 select * from 表 where 列(列限定/表頭) < 7800 and 列>2000;//(*就代表輸出所有列的屬性) 輸出 某表中 某列上的值小於7800 且 某列的值大於2000 的所有列的屬性

    //查詢特定列 :

        select 列1,列2,列3... from 表 where 行限定;(行限定 : 就是某一列上的值 )
        如 :
            select id,name from emp where sex = '男';//查看性別為'男'的 id和name屬性

distinct :
    //單列查詢 : (去除重復)

        select distinct 列限定 from 表名 where 行限定(z只能單行查詢)
    
like :

    //匹配字符查詢 : (就是篩選)

        % : 匹配多個字符 有兩個意思 1 可以匹配任意位字符
                                    2 可以匹配每位上面的任意字符
        _ : 匹配一個字符

       1 select * from 表名 where 限定列 like ''%k%';//查看某個表中某個列的屬性值,包含k的所有的行的屬性

       2  select * from 表名 where 限定列 like '__k%';//兩個下劃線(代表兩位) 查看某個表的某個列的值, 值的第三位是k的所有的行的屬性

in :

    //枚舉查詢

        select * from 表 where 列 in(值(1),值(2),值(3)...);//輸出某表中 某列的值為 1 或者 2 或者 3 的所有的行的屬性
        select * from emp id in(22,42,66);//輸出emp表中 id 列的值為22或42或66的所有的行的屬性

    in_and :
        >,>=,<,<=,= : 大於,大於等於,小於,小於等於,等於;
        select * from 表 where 列 in(值(1),值(2),值(3)) and 列 >/</=(大於或小於或等於) 值;
        如 : select * from emp where id in(22,33,44) and age >19;//查看emp表中 id列的值為22或33或44 並且 age(年齡)列的值 大於19的 所有的行的屬性

    //對查看到值進行運算 :
            
            +*-/ : 運算查看的值(查是查 算是算 不是一回事,並不會改變表單裡面的值,只是更改了輸出方式)//但是 該列的數據類型必須是數字(number類型)
            select 列+20 '年終獎' , name from 表名;
            select 列+(加/減/乘/除)20(加減乘除對應的值) '年終獎'(給算好的結果(輸出時候的列)起個名字) ,name from 表名;
            select sal+20 '年終獎' , name from emp;//查看emp表中的sal值和name值 ,並且把sal的值都加20 然後起個列名為年終獎

    nvl :
        //!!!!重點 : 如果 某列某行 有個空值 , 那麼運算結果肯定為空值
        nvl(列,0) : 把某列上的空值 賦值為0
        select 運算列1 + nvl(運算列2,0)*12 "年工資",列 from 表;
        select sal(工資) + nvl(jiang(獎金列),0) '年工資' ,name from emp;//查看emp表中的sal列,和jiang列,和name列 , 並把sal列的值和jiang列的值相加(有的人獎金為空 , 就是沒有,然後通過nvl(),就把空值賦值為0),然後算出來的結果起名(輸出時候的列名)為 年工資 ,

order_by :

    desc :

        //給查到的數據,進行從大到小排序(是查到後,在排序,和表內容沒關系)
        select * from 表名 order by  列 desc;//某列從大到小排序(只是輸出的時候排序而已)

    asc :

        //給查到的數據,進行從小到大排序(是查到後,在排序,和表內容沒關系)
        select * from 表 order by 列 asc;//某表的某列輸出的時候從小到大排序(只是輸出的時候排序)

    as : (起名)

        select 列,列*12 + nvl(列*12,0) as sy,  列 from emp order by sy 排序(asc/desc);//查看某個表的某些列,並對某些列進行了算數操作,並給算的結果起個別名 叫 sy列 ,然後再給這個sy列進行排序 asc(從小到大)/desc(從大到小)

//子查詢 : 分頁
    
    //幾個查詢運算,只能是number類型 ,返回值也都為int類型
    max :

        max();//獲取某一列的最大值  返回值為int類型
            如 : max(id);//獲取id那一列的最大值

    min :

        min();//獲取某一列的最小值  返回值為int類型
            如 : min(id);//獲取id那一列的最小值

    avg :

        avg();//獲取某一列的平均值  返回值為int類型
            如 : avg(id);//獲取id那一列的平均值

    sum :

        sum();//獲取某一列的值的總和    返回值為int類型
            如 : sum(id);//獲取id那一列的值的總和

    count :

        conut();//當前列下有多少個值    返回值為int類型
            如 : conut(id);//獲取id那一列有幾個值
    
    group_by :

    //以單列為標准分組

        group by ;//以某一列為標准,進行分組   分組標准必須是查詢條件中的列
        select 操作(列),操作(列).... ,分組列 from 表 group by 分組列;//分組列就是以某個列為標准分組,去除這一列的重復數據(是把相同數據的行,分為一組)
        select avg(sal),max(sal),deptno from emp group by deptno;

     //以多列為標准分組

        group by ;//以某幾個列為標准,進行分組   分組標准必須是查詢條件中的列
        select 操作(列),操作(列).... ,分組列1,分組列2 from 表 group by 分組列1,分組列2;//以多列為標准進行分組,就是分組列1進行分組(把相同的數據分為一組,並且 每個組裡面不能有分組列2相同的數據 , 如 : id , name  每個id分組裡面,不能有相同的name)
        select min(sal),avg(sal),max(sal),deptno,job from emp group by deptno,job;

having :

        having ;//對統計結果進行過濾
        select 操作(列),操作(列).... ,分組列 from 表 group by 分組列 having 操作(列) 比較符 值;//就是限定條件  但是是對結果集進行的限定查詢, 先分組,在從分組的基礎上,進行限定
        select avg(sal),max(sal),deptno from emp emp group by deptno having avg(sal)>2000;(平均工資低於2000的部門號和平均工資)


//為用戶授權 : 權限

        grant connect,resource,unlimited tablespace to c##名字 container=all;//所有權限

    //grant 權限 to c##用戶名;
        connect:鏈接(登陸) 權限
        resource:數據/源 權限
        unlimited tablespace : 表空間 權限

    //設置用戶使用的表空間 :
        
        alter user 用戶名 default tablespace users;
        alter user 用戶名 temporary tablespace temp;//臨時表空間


                               JDBC請看下一篇~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved