CUBRID学习笔记 41 sql语法之select
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
CUBRID学习笔记 41 sql语法之select的更多相关文章
- CUBRID学习笔记 41 sql语法之groupby 等
cubrid的中sql查询语法groupby GROUP BY ... HAVING Clause 按dept_no分组 SELECT dept_no, avg(sales_amount) FROM ...
- CUBRID学习笔记 18 sql语句的预处理(类似存储过程)
定义预处理 类似sqlserver的存储过程 语法 PREPARE stmt_name FROM preparable_stmt 说明 PREPARE 关键字 stmt_name 预处理语句的名字 ...
- CUBRID学习笔记 19 sql语句1
创建 欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . 过错 create table tableName (字段名 字段类型 pr ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- SQL反模式学习笔记21 SQL注入
目标:编写SQL动态查询,防止SQL注入 通常所说的“SQL动态查询”是指将程序中的变量和基本SQL语句拼接成一个完整的查询语句. 反模式:将未经验证的输入作为代码执行 当向SQL查询的字符串中插入别 ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样
python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样,IDLE shell编辑器,快捷键:ALT+p,上一个历史输入内容,ALT+n 下一个历史输入 ...
- Java学习笔记之---基础语法
Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...
随机推荐
- T-sql语句中GO的作用及语法【转】
1. 作用: 向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号.2. 语法:一批 Transact-SQL 语句GO如Select 1Select 2Select ...
- android 项目学习随笔十二(ListView加脚布局)
1.ListView加脚布局 头布局initHeaderView,在onTouchEvent事件中进行显示隐藏头布局切换 脚布局initFooterView,实现接口OnScrollListener, ...
- Python标准库之核心模块学习记录
内建函数和异常 包括__builtin__模块和exceptions模块 操作系统接口模块 包括提供文件和进程处理功能的os模块,提供平台独立的文件名处理(分拆目录名,文件名,后缀等)的os.path ...
- Notepad++编辑Pyhton文件的自动缩进的问题(图文)
转自:http://www.xuebuyuan.com/1102224.html 这个问题一直困扰我很久,Python对缩进很敏感,一般建议缩进用空格,而 Notepad++的自动缩进是用的TAB,g ...
- 【原创】纯干货,Spring-data-jpa详解,全方位介绍。
本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求.这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring ...
- c sharp学习 问题记录
1.函数的调用可以嵌套,定义不可以 C# 参考之方法参数关键字:params.ref及out C#中方法的参数的四种类型
- 虚拟机 本地 本机 双启动 运行 vhd local Dual Boot
在使用虚拟机的过程中, 可能会遇到虚拟机的运行要求过高, 电脑力不从心的情况. 为了让虚拟机使用更多电脑资源, 可以让虚拟机以本地双系统的方式,访问本地计算机资源. 打开磁盘管理,在磁盘上右键,选择 ...
- Intellij IDEA
http://1358440610-qq-com.iteye.com/blog/2102195
- 20145227 《Java程序设计》第6周学习总结
20145227 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 输入/输出 10.1 InputStream与OutputStream 1.串流设计的概念 Java将输入/ ...
- Java 中日期的几种常见操作 —— 取值、转换、加减、比较
Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿.当然,我只提 ...