CUBRID學習筆記 41 sql語法之select

来源:http://www.cnblogs.com/wang2650/archive/2016/03/18/5291317.html
-Advertisement-
Play Games

cubrid的中sql查詢語法 SELECT [ ] [{TO | INTO} ] [FROM ] [WHERE ] [GROUP BY {col_name | expr} [ASC | DESC], ...[WITH ROLLUP]] [HAVING ] [ORDER BY {col_name |


cubrid的中sql查詢語法


SELECT [ ]
[{TO | INTO} ][FROM ]
[WHERE ][GROUP BY {col_name | expr} [ASC | DESC], ...[WITH ROLLUP]]
[HAVING ]
[ORDER BY {col_name | expr} [ASC | DESC], ... [NULLS {FIRST | LAST}][LIMIT [offset,] row_count]
[USING INDEX { index_name [,index_name, ...] | NONE }][FOR UPDATE [OF ]]

<qualifier> ::= ALL | DISTINCT | DISTINCTROW | UNIQUE

<select_expressions> ::= * | <expression_comma_list> | *, <expression_comma_list>

<variable_comma_list> ::= [:] identifier, [:] identifier, ...

<extended_table_specification_comma_list> ::=
    <table_specification>   [
                                {, <table_specification> } ... |
                                <join_table_specification> ... |
                                <join_table_specification2> ...
                            ]

::=
[] [WITH ()] |
[ ] |
|
TABLE ( )

::= [AS] [()]

::= [ONLY] |
ALL [ EXCEPT ]

::= CLASS

::=
[INNER | {LEFT | RIGHT} [OUTER]] JOIN ON

::= CROSS JOIN

::= READ UNCOMMITTED

  • 還是看例子吧

distinct 去重
SELECT DISTINCT host_nation
FROM olympic;

分頁
SELECT host_year as col1, host_nation as col2
FROM olympic
ORDER BY col2 LIMIT 5;

SELECT CONCAT(host_nation, ', ', host_city) AS host_place
FROM olympic
ORDER BY host_place LIMIT 5;

還可以
SELECT 1+1 AS sum_value;

其實就類似子查詢

SELECT SUM (n)
FROM (SELECT gold FROM participant WHERE nation_code = 'KOR'
UNION ALL
SELECT silver FROM participant WHERE nation_code = 'JPN') AS t(n);

換個姿勢
SELECT nation_code, host_year, gold
FROM participant p
WHERE gold > (SELECT AVG(s)
FROM (SELECT silver + bronze
FROM participant
WHERE nation_code = p.nation_code
AND silver > 0
AND bronze > 0)
AS t(s));

where條件

WHERE

<search_condition> ::=
    <comparison_predicate>
    <between_predicate>
    <exists_predicate>
    <in_predicate>
    <null_predicate>
    <like_predicate>
    <quantified_predicate>
    <set_predicate>
  
  比較運算
  
  = <> != > < >= <=
  
  成立是1 不成立是0 
  
  any  some  all運算
  
  any 任一個條件符合 some 是一部分(文檔暫缺)
  
  SELECT * FROM condition_tbl WHERE dept_name = ANY{'devel','sales'};
  
  all  條件全部符合
  
  SELECT * FROM condition_tbl WHERE salary > ALL{3000000, 4000000, NULL};
  

  SELECT * FROM condition_tbl WHERE (

(0.9 * salary) < ALL (SELECT salary FROM condition_tbl
WHERE dept_name = 'devel')
);

between 運算符

SELECT * FROM condition_tbl WHERE salary BETWEEN 3000000 AND 4000000;

SELECT * FROM condition_tbl WHERE (salary >= 3000000) AND (salary <= 4000000);

SELECT * FROM condition_tbl WHERE salary NOT BETWEEN 3000000 AND 4000000;

SELECT * FROM condition_tbl WHERE name BETWEEN 'A' AND 'E';

exists 運算符

SELECT 'raise' FROM db_root WHERE EXISTS(
SELECT * FROM condition_tbl WHERE salary < 2500000);

SELECT 'raise' FROM db_root WHERE NOT EXISTS(
SELECT * FROM condition_tbl WHERE salary < 2500000);

in 運算符

SELECT * FROM condition_tbl WHERE dept_name IN {'devel','sales'};

SELECT * FROM condition_tbl WHERE dept_name = ANY{'devel','sales'};

SELECT * FROM condition_tbl WHERE dept_name NOT IN {'devel','sales'};

isnull

SELECT * FROM condition_tbl WHERE salary IS NULL;

SELECT * FROM condition_tbl WHERE salary IS NOT NULL;

SELECT * FROM condition_tbl WHERE salary = NULL;

like 運算符
轉義用\
SELECT * FROM condition_tbl WHERE name LIKE '%s%';

SELECT * FROM condition_tbl WHERE UPPER(name) LIKE '_O%';

SELECT * FROM condition_tbl WHERE name LIKE '___';

REGEXP, RLIKE 運算符
這個例子用的少,轉碼比較
SELECT ('a' collate utf8_en_ci REGEXP BINARY 'A' collate utf8_en_ci);
0
SELECT ('a' collate utf8_en_cs REGEXP BINARY 'A' collate utf8_en_cs);
0
SELECT ('a' COLLATE iso88591_bin REGEXP 'A' COLLATE iso88591_bin);
1
SELECT ('a' COLLATE iso88591_bin REGEXP BINARY 'A' COLLATE iso88591_bin);
0
主要看這個
支持正則表達式嘍
SELECT name FROM athlete where name REGEXP '^[a-d]';

下麵更像是演示正則表達式
匹配特殊的字元
SELECT ('new\nline' REGEXP 'new
line');

SELECT ('cubrid dbms' REGEXP '^cub');
SELECT ('this is cubrid dbms' REGEXP 'dbms$');

SELECT ('cubrid dbms' REGEXP '^c.*$');
SELECT ('Aaaapricot' REGEXP '^A+pricot');
SELECT ('Apricot' REGEXP '^Aa?pricot');
SELECT ('Aapricot' REGEXP '^Aa?pricot');
('Aapricot' regexp '^Aa?pricot')

1 代表成立
SELECT ('Aaapricot' REGEXP '^Aa?pricot');

('Aaapricot' regexp '^Aa?pricot')

0
-- (cub)* : match zero or more instances of the sequence abc.

SELECT ('cubcub' REGEXP '^(cub)*$');

('cubcub' regexp '^(cub)*$')

1
-- [a-dX], [^a-dX] : matches any character that is (or is not, if ^ is used) either a, b, c, d or X.

SELECT ('aXbc' REGEXP '^[a-dXYZ]+');

('aXbc' regexp '^[a-dXYZ]+')

1
SELECT ('strike' REGEXP '^[^a-dXYZ]+$');

('strike' regexp '^[^a-dXYZ]+$')

1

case 運算符

SELECT a,
CASE WHEN a=1 THEN 'one'
WHEN a=2 THEN 'two'
ELSE 'other'
END
FROM case_tbl;

結果
a case when a=1 then 'one' when a=2 then 'two' else 'other' end

        1  'one'
        2  'two'
        3  'other'
     NULL  'other'
     
     
     SELECT a,
   CASE a WHEN 1 THEN 'one'
          WHEN 2 THEN 'two'
          ELSE 'other'
   END

FROM case_tbl;

SELECT a,
CASE WHEN a=1 THEN 1
WHEN a=2 THEN 1.2345
ELSE 1.234567890
END
FROM case_tbl;

SELECT a,
CASE WHEN a=1 THEN 'one'
WHEN a=2 THEN 'two'
ELSE 1.2345
END
FROM case_tbl; //報錯,類型轉換錯誤

COALESCE 函數
對null處理的函數
類似
CASE WHEN a IS NOT NULL
THEN a
ELSE b
END

當a的值為null的時候 返回10.0000
SELECT a, COALESCE(a, 10.0000) FROM case_tbl;

decode 函數
類似
CASE WHEN a = b THEN c
WHEN a = d THEN e
ELSE f
END

參數有三個,
第一個 可以是表達式要或者比較的值 如下例的a
第二個 結果 如下例的1 ,2
第三個 預設值 如other
a 列
1
2
3
NULL

執行
SELECT a, DECODE(a, 1, 'one', 2, 'two', 'other') FROM case_tbl;
結果
1 'one'
2 'two'
3 'other'
NULL 'other'

a為1 等於one a為2 等於two a為3和null ,沒有符合條件的項,使用預設值other

SELECT a, DECODE(a, 1, 1, 2, 1.2345, 1.234567890) FROM case_tbl;
註意以下的結果,數字都是單精度的.隱式轉換了. 以預設結果的類型為準.
1 1.000000000
2 1.234500000
3 1.234567890
NULL 1.234567890
下麵的這個會失敗,因為one不能轉為 double
SELECT a, DECODE(a, 1, 'one', 2, 'two', 1.2345) FROM case_tbl;

GREATEST 函數
獲取最大的值

SELECT gold, silver , bronze, GREATEST (gold, silver, bronze)
FROM participant
WHERE nation_code = 'KOR';

結果是三個參數列每行值中的的最大值
gold silver bronze greatest(gold, silver, bronze)

        9           12            9                              12
        8           10           10                              10
        7           15            5                              15
       12            5           12                              12
       12           10           11                              12
       
     c#,net,cubrid,教程,學習,筆記歡迎轉載 ,轉載時請保留作者信息。本文版權歸本人所有,如有任何問題,請與我聯繫[email protected] 。 過錯  

if函數
三個參數,
第一個表達式返回真假
第二個表示真的時候返回的值
第三個表示假的時候返回的值

類似
CASE WHEN a IS TRUE THEN b
ELSE c
END

SELECT a, IF(a=1, 'one', 'other') FROM case_tbl;

IFNULL NVL函數
給null的列設預設值,註意返回的類型,取決於預設值的類型.ifnull和Nvl類似.但是Nvl支持集合類型.
類似
CASE WHEN a IS NULL THEN b
ELSE a
END

例如SELECT a, IFNULL(a, 'UNKNOWN') FROM case_tbl;
結果
1 '1'
2 '2'
3 '3'
NULL 'UNKNOWN'

ISNULL函數 返回整數 1或者0

LEAST函數
參數可以是多個表達式,返回最小的值, 參數是null則返回null

SELECT gold, silver , bronze, LEAST(gold, silver, bronze) FROM participant
WHERE nation_code = 'KOR';
結果
gold silver bronze least(gold, silver, bronze)

        9           12            9                            9
        8           10           10                            8
        7           15            5                            5
       12            5           12                            5
       12           10           11                           10

NULLIF 函數
相等返回null 否則原樣返回
類似CASE
WHEN a = b THEN NULL
ELSE a
END

      SELECT a, NULLIF(a, 1) FROM case_tbl; 
      結果 a是1的時候返回null
       a  nullif(a, 1)

        1          NULL
        2             2
        3             3
     NULL          NULL
     
     

NVL2(expr1, expr2, expr3) 函數
第一個表達式不等於null的是否返回第二個表達式,等於null返回第三個表達式
SELECT a, NVL2(a, a+1, 10.5678) FROM case_tbl;

     a  nvl2(a, a+1, 10.5678)

        1                      2
        2                      3
        3                      4
     NULL                     11

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在一些下載應用里整個頁面都是按鈕,有好多好多,但是仔細觀察不難發現他們很有規律。就像下麵一樣👇 很有規律的排列在屏幕上,那麼這需要我們怎麼去做能。 正如標題,我們需要瞭解兩個知識點,分別是自定義按鈕和九宮格,九宮格是一種演算法。在這裡我給大家列出方法,並不過多解釋,希望會對大家有幫助。 代碼如下:
  • 原文地址 下載並打開xcode。 接著新建一個工程,如下圖所示: 點擊Create a new Xcode project,之後選擇ios下的Application,點擊Single View Application來創建我們的第一個項目。如圖所示: 創建完項目後,我們來編寫我們的第一個ios項目。
  • 它是什麼? 我每天讀一章。大約每天3小時,在索引,查詢處理那兩章花了8小時以上,在範式那節重新整理下以前的看法,非常不錯的書,翻譯的也不錯。相比國內的《資料庫系統概論》,這書適合自學,並且非常詳細,演算法偽代碼多。在索引一章,完全可以通過他的演算法加例子很好的理解索引的原理和應用,在查詢處理一節,對演算法
  • 今天用到的oracle資料庫,但是發現以前設置的密碼,忘記了,怎麼輸入都不對,所以從網上找了一下資料,解決了,然後整理分享給大家。 一、遇到的問題: 1.、忘記除SYS、SYSTEM用戶之外的用戶的登錄密碼。 2.、忘記SYS用戶,或者是SYSTEM用戶的密碼。 3.、如果SYS,SYSTEM用戶的
  • 在伺服器A資料庫TEST新建了一個本地發佈(Local Publications)RPL_GES_MIS_TEST,在伺服器B資料庫RPL_TEST上創建了一個本地訂閱(Local Subscriptions),它訂閱了了這個發佈RPL_GES_MIS_TEST.如下截圖所示,本地發佈只有DB_OB...
  • Spark官方文檔 中文翻譯 轉載請註明出處: "http://www.cnblogs.com/BYRans/" "1 概述(Overview)" "2 引入Spark(Linking with Spark)" "3 初始化Spark(Initializing Spark)" "3.1 使用Spar
  • cubrid的中sql查詢語法insert into 官方文檔是英文的,看不明白可以參看ocracle的同類函數說明.很多都是一樣的. INSERT INTO a_tbl1(id) VALUES (4), (5); insert a single row with SET clauses INSER
  • cubrid的中sql查詢語法groupby GROUP BY ... HAVING Clause 按dept_no分組 SELECT dept_no, avg(sales_amount) FROM sales_tbl GROUP BY dept_no; 分組前先執行條件比較 SELECT dept
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...