<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA—咖啡館

    ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

     

    Oracle

    mysql

    對比版本

    Release 10.2.0.1.0 XE windowsXP

    5.0.45-community-nt-log MySQL Community Edition (GPL)

    當作計算器

    SQL> select 1+1 from dual;

    mysql> select 1+1;

    mysql> select 1+1 from dual;

    顯示表結構

    SQL> desc 表名

    mysql> desc 表名;

    SQL> describe 表名

    mysql> describe 表名;

     

    mysql> explain 表名;

    注意explain 也可以用來獲取執行計劃。

    需要訪問:

    User_tablesuser_tab_colsUSER_COL_COMMENTSUSER_INDEXES等等字典表。

    mysql> show columns from 表名;

     

    bin>mysqlshow 庫名表名

    日期的概念

    一個完全不同于字符串的類型。日期類型沒有所謂的格式,日期就是日期,只有在顯示的時候可以指定轉換成的字符串的格式。絕對不會允許2008-00-00這種情況出現。對于日期轉換為另一個日期相對比較簡單,比如select trunc(sysdate) fromdual;

    可以方便的和字符串進行比較、轉換。允許0000-00-00這種情況出現作為null的替代品方便處理(個人不認為這樣比較方便,反而給我造成困惑)。對于字符串轉換為日期比較簡單,比如CREATETABLE `datetime` (

     `dt` datetime NOTNULLdefault'0000-00-00 00:00:00',

     PRIMARYKEY (`dt`)

    );

    INSERTINTO `datetime` VALUES ('2008-01-01 00:00:00');

    select*from `datetime`;

    日期類型

    date

    datetime

    Date

    日期

    Time

    時間

    Timestamp

    如果表中其他字段變化,此類型的字段自動更新為當前系統時間。

    Timestamp

    保存了毫秒級別的時間

    不清楚

    日期函數

    SQL> select trunc(sysdate)from dual;

    mysql> select curdate();

    mysql> select current_date;

    SQL> select sysdate from dual;

    mysql> select sysdate();

    mysql> select now();

    SQL> select to_char(sysdate,'HH24:Mi:SS')from dual;

    注意此處返回結果為字符串,而不是日期類型。Oracle不提供和mysqltime類型相應的類型。

    mysql> select current_time;

    mysql> select curtime();

    注意:此處返回的是time類型。就是時間17:22:14這種時間。Oracle中沒有此類型。

    毫秒級別:

    SQL> selectcurrent_timestampfrom dual;

    需要使用函數MICROSECOND。目前還不會。

    日期格式化

    SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;

    mysql> select date_format(now(),'%Y-%m-%d');

    SQL> select to_char(sysdate,'hh24-mi-ss') from dual;

    mysql> select time_format(now(),'%H-%i-%S');

    日期函數

    (增加一天)

    SQL> select sysdate+1from dual;

    結果:2008-2-20 19:34:27

    mysql> select date_add(now(),interval 1 day);

    mysql>select now()+interval 1 day;

    日期函數

    (增加一個月)

    SQL> select add_months(sysdate,1)from dual;

    結果:2008-3-19 19:34:27

    mysql> select date_add(now(),interval 1 month);

    mysql>select now()+interval 1 month;

    別名

    SQL> select1as a from dual;

    mysql> select1as a;

    SQL> select1 a from dual;

    mysql> select1 a;

    字符串截取函數

    SQL> select substr('abcdefg',1,5)from dual;

    結果:abcde

    mysql> select substr('abcdefg',1,5);

    結果:abcde

    去除空格:

    select trim('abc   ')from dual;

    去除空格:

    select trim('abc   ')from dual;

    字符串拼接:

    SELECT CONCAT('a',' test')from dual;

    結果:a test

    SELECT CONCAT('a',' test');

    結果:a test

    注意oracle||為字符串拼接

    select'a'||' test'from dual;

    結果:a test

    注意mysql||為或操作符。

    select 0||1;

    結果1;

    Select 0||0;

    結果0。

    判斷是否包含:

    select instr('abcd','bcd')from dual;

    結果:2

    mysql> SELECT INSTR('foobarbar', 'bar');

    結果:4

    另有正則表達式。

    另有SUBSTRING_INDEX(str,delim,count)函數

    執行sql腳本

    SQL >@a.sql

    1mysql> source a.sql

    執行外部shell腳本

    SQL>host test.sh

    目前還不會

    SQL>! cd ..

    改表名

    SQL> altertable T renameto T1;

    mysql> alter table t rename t1;

    mysql> alter table T1 rename to T;

    執行命令

    ;<回車>

    ;<回車>

    /

    go

    r

    ego

    run

     

    distinct用法

    SQL> select distinct 1 from 1;

    mysql> select distinct 1 from 1;

    SQL> select distinct 1,2 from 1;

    mysql> select distinct 1,2 from 1;

    注釋

    --

    --

    /* */

    /**/

    REM

    #

    限制返回記錄條數為5

    SQL> select * from 表名 where rownum<=5;

    mysql> select * from 表名 limit 5;

    分頁查詢

    select*

    from (

    select row_.*, rownum rownum_

    from (

    yourSqlHere ) row_

    where rownum <= 100)

    where rownum_ > 20;

    select*from t limit20,100;

    外連接

     (+)

    left join

    LEFTOUTERJOIN

    left outer join

    RIGHTOUTERJOIN

     

    查詢索引

    SQL> select index_name,table_name from user_indexes;

    mysql> show index from 表名 [FROM 庫名];

    通配符

    “%”

    “%”“_”

    如果存在則更新,否則插入

    Merge into

    Replace into

    參見,mysqlreplace沒有oraclemerge嚴格:

    http://www.bitbybit.dk/carsten/blog/?p=128#comment-50048

    SQL語法

    SELECT selection_list 選擇哪些列

    SELECT selection_list 選擇哪些列

    FROM table_list 從何處選擇行

    FROM table_list 從何處選擇行

    WHERE primary_constraint 行必須滿足什么條件

    WHERE primary_constraint 行必須滿足什么條件

    GROUP BY grouping_columns 怎樣對結果分組

    注意:oracle如果需要排序必須指定order by 子句。

    GROUP BY grouping_columns 怎樣對結果分組

    注意:即使不存在order by子句,mysql也會按照group by 的列進行排序。甚至還能為group by 語句指定asc/desc子句。

    HAVING secondary_constraint 行必須滿足的第二條件

    HAVING secondary_constraint 行必須滿足的第二條件

    ORDER BY sorting_columns 怎樣對結果排序

    ORDER BY sorting_columns 怎樣對結果排序

    Oracle的結果集限定語句見:”分頁查詢”

    注意:oracle的rownum和mysql的Limit完全不同。

    LIMIT count 結果限定

    對not in null的處理,是關于三值邏輯的問題。

    CREATETABLE a

    ( code INT);

    INSERTINTO a

         VALUES(2);

    INSERTINTO a

         VALUES(NULL);

    SELECT1

     FROM DUAL

     WHERE1NOTIN(SELECT code FROM a);

    結果:無返回結果。

    CREATETABLE a

    ( code INT);

    INSERTINTO a

         VALUES(2);

    INSERTINTO a

         VALUES(NULL);

    SELECT1

     FROM DUAL

     WHERE1NOTIN(SELECT code FROM a);

    結果:無返回結果

    對not exists的處理

    CREATETABLE a

    ( code INT);

    INSERTINTO a

         VALUES(2);

    INSERTINTO a

         VALUES(NULL);

    SELECT1

     FROM DUAL

     WHERENOTEXISTS(SELECT1

                         FROM a WHERE a.code =1);

    結果:1

    CREATETABLE a

    ( code INT);

    INSERTINTO a

         VALUES(2);

    INSERTINTO a

         VALUES(NULL);

    SELECT1

     FROM DUAL

     WHERENOTEXISTS(SELECT1

                         FROM a WHERE a.code =1);

    結果:1

    獲取sql語句執行計劃

    SQL>EXPLAIN PLAN FOR   select * from t;

    然后

    SQL>select * from table(DBMS_XPLAN.DISPLAY)

    Mysql> explainselect*from t;

    執行計劃對照

    全表掃描: TABLE ACCESS FULL

    Type=all

    Where條件過濾:FILTER

    Extra=Using where

    排序:SORT ORDER BY

    Extra=Using filesort

       
       

    事務管理

    默認不自動提交

    innoDB支持事務

    默認自動提交autocommit

    阻塞讀取方式

     

     

    Unique index的區別。

    又是關于三值邏輯的問題。

    CREATETABLE hr.t (

       IDINTNOTNULL,

       DATACHAR(30)DEFAULTNULL,

       UNIQUE(ID,DATA)

     );

     

    INSERTINTO hr.t

         VALUES(1,NULL);

     

    INSERTINTO hr.t

         VALUES(1,NULL);

    mysql> CREATE TABLE t (

       ID INT NOT NULL,

       DATA CHAR(30) DEFAULT NULL,

       UNIQUE (ID, DATA)

     );

    INSERT INTO t

         VALUES (1, NULL);

    INSERT INTO t

         VALUES (1, NULL);

    select * from t;

    Query OK, 0 rows affected

    Query OK, 1 row affected

    Query OK, 1 row affected

    +----+------+

    | ID | DATA |

    +----+------+

    | 1 | NULL |

    | 1 | NULL |

    +----+------+

    2 rows in set

    ORA-00001: 違反唯一約束條件 (HR.SYS_C003999)

    posted on 2010-07-08 15:40 rogerfan 閱讀(1520) 評論(0)  編輯  收藏 所屬分類: 【數據庫】
    主站蜘蛛池模板: 欧洲人免费视频网站在线| 免费国产怡红院在线观看| 久久久久女教师免费一区| 在线综合亚洲中文精品| 久久亚洲综合色一区二区三区| 免费黄色毛片视频| **俄罗斯毛片免费| 中文字幕日本人妻久久久免费| 精品视频免费在线| 亚洲精品无码久久久久APP| 亚洲精品影院久久久久久| 亚洲AV永久纯肉无码精品动漫| 猫咪www免费人成网站| 中文日韩亚洲欧美制服| 亚洲明星合成图综合区在线| 亚洲av日韩av不卡在线观看| 亚洲无线观看国产精品| 2048亚洲精品国产| 亚洲av无码成人精品区| 国产一级一片免费播放| 在线免费观看一级毛片| 在线视频免费观看www动漫| 久久久久久99av无码免费网站| 97碰公开在线观看免费视频| 88xx成人永久免费观看| 日韩精品久久久久久免费| 久久青青草原国产精品免费| a级毛片100部免费观看| 91免费福利视频| 国产一级一毛免费黄片| 精品在线免费观看| 久久免费动漫品精老司机| 久久免费观看国产精品88av| 外国成人网在线观看免费视频| 国产99视频精品免费专区| 久爱免费观看在线网站| 8x8×在线永久免费视频| 最近高清中文字幕无吗免费看| 曰曰鲁夜夜免费播放视频| 在线视频免费观看高清| 全免费一级午夜毛片|