cubrid的中sql查询语法


SELECT [ ] <select_expressions>

[{TO | INTO} <variable_comma_list>]

[FROM <extended_table_specification_comma_list>]

[WHERE <search_condition>]

[GROUP BY {col_name | expr} [ASC | DESC], ...[WITH ROLLUP]]

[HAVING <search_condition> ]

[ORDER BY {col_name | expr} [ASC | DESC], ... [NULLS {FIRST | LAST}]

[LIMIT [offset,] row_count]

[USING INDEX { index_name [,index_name, ...] | NONE }]

[FOR UPDATE [OF <spec_name_comma_list>]]

<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> ...
]

<table_specification> ::=

<single_table_spec> [] [WITH (<lock_hint>)] |

<metaclass_specification> [ ] |

|

TABLE ( )

::= [AS] [(<identifier_comma_list>)]

<single_table_spec> ::= [ONLY] <table_name> |

ALL <table_name> [ EXCEPT <table_name> ]

<metaclass_specification> ::= CLASS <class_name>

<join_table_specification> ::=

[INNER | {LEFT | RIGHT} [OUTER]] JOIN <table_specification> ON <search_condition>

<join_table_specification2> ::= CROSS JOIN <table_specification>

<lock_hint> ::= 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>

<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 '[1]';

下面更像是演示正则表达式

匹配特殊的字符

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 '[2]+');

('aXbc' regexp '[3]+')

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,教程,学习,笔记欢迎转载 ,转载时请保留作者信息。本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com 。 过错

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

  1. a-d ↩︎

  2. a-dXYZ ↩︎

  3. a-dXYZ ↩︎

CUBRID学习笔记 41 sql语法之select的更多相关文章

  1. CUBRID学习笔记 41 sql语法之groupby 等

    cubrid的中sql查询语法groupby GROUP BY ... HAVING Clause 按dept_no分组 SELECT dept_no, avg(sales_amount) FROM ...

  2. CUBRID学习笔记 18 sql语句的预处理(类似存储过程)

    定义预处理  类似sqlserver的存储过程 语法 PREPARE stmt_name FROM preparable_stmt 说明 PREPARE 关键字 stmt_name 预处理语句的名字 ...

  3. CUBRID学习笔记 19 sql语句1

    创建 欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . 过错 create table tableName (字段名 字段类型 pr ...

  4. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  5. SQL反模式学习笔记21 SQL注入

    目标:编写SQL动态查询,防止SQL注入 通常所说的“SQL动态查询”是指将程序中的变量和基本SQL语句拼接成一个完整的查询语句. 反模式:将未经验证的输入作为代码执行 当向SQL查询的字符串中插入别 ...

  6. ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现

    ASP.NET MVC 学习笔记-2.Razor语法   1.         表达式 表达式必须跟在“@”符号之后, 2.         代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...

  7. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  8. python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样

    python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样,IDLE shell编辑器,快捷键:ALT+p,上一个历史输入内容,ALT+n 下一个历史输入 ...

  9. Java学习笔记之---基础语法

    Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...

随机推荐

  1. ID3DXMesh接口 创建自己的立方体网格

    D3DXCreateMeshFVF 首先创建一个ID3DXMesh接口. ID3DXMesh接口的说明可以参数龙书. 这里主要是用代码来讲解: #define VERTEX_FVF (D3DFVF_X ...

  2. 如何在图像处理工具包ImagXpress中对图像进行捕捉、复制和粘贴

    如何在在ImagXpress中进行图像的捕捉. 复制和粘贴呢?下面详细来看一下,在多种情况下,图和实现这些操作. 捕捉屏幕图像 捕捉通过ImageXView窗口绑定的屏幕范围,以及保存到一个Image ...

  3. vsftpd基本配置(原)

    前提:iptables关闭或放行,selinux关闭或放行. 目标:创建虚拟ftpuser到指定的www.ftpuser.com目录,且只能在本目录下. 创建帐号 useradd -d /var/ww ...

  4. 【secureCRT】如何在secureCRT上设置常用的快捷输出按钮栏

    转自:http://jingyan.baidu.com/article/5d6edee2f32de199eadeec25.html 方法/步骤   打开secureCRT软件,单击菜单栏上面的[查看] ...

  5. [PHP100] PHP如何防止注入及开发安全

    1.PHP注入的基本原理 程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对 用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据 库查询代码,根据程序返回 ...

  6. MySQL连接字符串总结

    一.MySQL Connector/ODBC 2.50 (MyODBC 2.50)连接方式 1.本地数据库连接 Driver={MySQL};Server=localhost;Option=16834 ...

  7. POSTGRESQL9.5之pg_rman工具

    pg_rman是一款专门为postgresql设计的在线备份恢复的工具.其支持在线和基于时间点备份方式,还可以通过创建backup catalog来维护DB cluster备份信息. 看起来好像是模仿 ...

  8. 20145227 《Java程序设计》第6周学习总结

    20145227 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 输入/输出 10.1 InputStream与OutputStream 1.串流设计的概念 Java将输入/ ...

  9. java UUID

    UUID是Universally Unique Identifier的缩写,它是在一定的范围内(从特定的名字空间到全球)唯一的机器生成的标识符.UUID具有以下涵义: 经由一定的算法机器生成 为了保证 ...

  10. YTU 2296: KMP模式匹配 二(串)

    2296: KMP模式匹配 二(串) 时间限制: 1 Sec  内存限制: 128 MB 提交: 29  解决: 17 题目描述 输入一个主串和一个子串,用KMP进行匹配,问进行几趟匹配才成功,若没成 ...