⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logop.sql

📁 derby database source code.good for you.
💻 SQL
字号:
---- this test is for logical operators (AND, OR, etc.)---- create a table. Logical operators work on the results of comparisons,-- which are tested in a separate test, so the types of the columns being-- compared are irrelevant here.create table t (x int, y int);-- insert some values, including nullsinsert into t values (1, 1);insert into t values (1, 2);insert into t values (2, 1);insert into t values (2, 2);insert into t values (null, 2);insert into t values (1, null);insert into t values (null, null);-- basic AND testselect x, y from t where x = 1 and y = 2;select x, y from t where y = 2 and x = 1;select x, y from t where x = 1 and y = 3;select x, y from t where y = 3 and x = 1;create table s (x int);insert into s values (1);-- there is no short-circuiting with AND: ie when the first operand is FALSE,-- the second operant still got evaluated for AND. Same behavior in DB2 as well.select x from s where x = 5 and 2147483647 + 10 = 2;-- Does not matter it in what order the 2 operands are. Both of them always gets evaluated.select x from s where 2147483647 + 10 = 2 and x = 5;-- Now try a chain of ANDsselect x, y from t where x = 1 and x + 0 = 1 and y = 2 and y + 0 = 2;-- basic OR testselect x, y from t where x = 1 or y = 2;select x, y from t where y = 2 or x = 1;select x, y from t where x = 4 or y = 5;select x, y from t where y = 5 or x = 4;-- test short-circuiting: for OR, when the first operand is TRUE, the second-- operand should not be evaluated.  We test this by deliberately causing an-- error in one of the operands.select x from s where x = 1 or 2147483647 + 10 = 2;-- Now try it with the error on the left, just to be sure the error really-- happens.select x from s where 2147483647 + 10 = 2 or x = 1;-- Now try a chain of ORsselect x, y from t where x = 1 or x + 0 = 1 or y = 2 or y + 0 = 2;-- Test the precedence of AND versus OR.  AND is supposed to have a higher-- precedence that OR, i.e. "a OR b AND c" is equivalent to "a OR (b AND c)"-- First test TRUE OR TRUE AND FALSE.  This should evaluate to TRUE.  If-- the precedence is wrong, it will evaluate to FALSE.select x from s where (1 = 1) or (2 = 2) and (3 = 4);-- Now test FALSE AND TRUE OR TRUE.  This should evaluate to to TRUE.  If-- the precedence is wrong, it will evaluate to FALSE.select x from s where (1 = 2) and (3 = 3) or (4 = 4);-- Now test whether parenthesized expressions work.  Use the parentheses to-- force the OR to be evaluated before the AND.select x from s where ( (1 = 1) or (2 = 2) ) and (3 = 4);select x from s where (1 = 2) and ( (3 = 3) or (4 = 4) );-- More involved testing of expression normalization-- Ands under ands under ands ...select * from s where (	( ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) and						  ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) ) and						( ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) and						  ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) ) );-- Ors under ors under ors ...select * from s where (	( ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) or						  ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) ) or						( ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) or						  ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) ) );-- Ands under ors under ors ...select * from s where (	( ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) or						  ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) ) or						( ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) or						  ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) ) );-- Ors under ands under andsselect * from s where ( ( ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) and						  ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) ) and						( ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) and						  ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) ) );-- left deep with andsselect * from s where ( ( ( ( ( ((1=1) and (1=1)) and (1=1)) and (1=1)) and (1=1))						and (1=1)) and (1=1));-- left deep with orsselect * from s where ( ( ( ( ( ((1=1) or (1=1)) or (1=1)) or (1=1)) or (1=1))						or (1=1)) or (1=1));select * from s where ( ( ( ( ( ((1=1) or (1=2)) or (1=2)) or (1=2)) or (1=2))						or (1=2)) or (1=2));select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=1)) or (1=2)) or (1=2))						or (1=2)) or (1=2));select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=1)) or (1=2))						or (1=2)) or (1=2));select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=1))						or (1=2)) or (1=2));select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))						or (1=1)) or (1=2));select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))						or (1=2)) or (1=1));-- right deep with orsselect * from s where ( ( ( ( ( (1=1) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))						or (1=2)) or (1=2));select * from s where ( ( ( ( ( (1=2) or ((1=1) or (1=2)) ) or (1=2)) or (1=2))						or (1=2)) or (1=2));select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=1)) ) or (1=2)) or (1=2))						or (1=2)) or (1=2));select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=1)) or (1=2))						or (1=2)) or (1=2));select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=1))						or (1=2)) or (1=2));select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))						or (1=1)) or (1=2));select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))						or (1=2)) or (1=1));-- ... and false and ... should get resolved to falseselect x from s where 2147483647 + 10 = 2 and (1=2);select x from s where (1=2) and 2147483647 + 10 = 2;-- notsselect x from s where not ( (1 = 1) or (2 = 2) ) and (3 = 4);select x from s where not ( ( (1 = 1) or (2 = 2) ) and (3 = 4) );select x from s where (1 = 2) and not ( (3 = 3) or (4 = 4) );select x from s where not ( (1 = 2) and ( (3 = 3) or (4 = 4) ) );-- following NOTs in select clause won't work because it results in a transient boolean datatypeselect not ( (1 = 1) or (2 = 2) ) and (3 = 4) from s;--select not ( ( (1 = 1) or (2 = 2) ) and (3 = 4) ) from s;--select (1 = 2) and not ( (3 = 3) or (4 = 4) ) from s;--select not ( (1 = 2) and ( (3 = 3) or (4 = 4) ) ) from s;-- Ands under ands under ands ...select * from s where not (	( ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) and						      ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) ) and						    ( ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) and						      ( ((1=1) and (1=1)) and ((1=1) and (1=2)) ) ) );-- Ors under ors under ors ...select * from s where not (	( ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) or						      ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) ) or						    ( ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) or						      ( ((1=1) or (1=1)) or ((1=1) or (1=2)) ) ) );-- Ands under ors under ors ...select * from s where not (	( ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) or						      ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) ) or						    ( ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) or						      ( ((1=1) and (1=1)) or ((1=1) and (1=2)) ) ) );-- Ors under ands under andsselect * from s where not ( ( ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) and						      ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) ) and						    ( ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) and						      ( ((1=1) or (1=1)) and ((1=1) or (1=2)) ) ) );-- left deep with andsselect * from s where not ( ( ( ( ( ((1=1) and (1=2)) and (1=1)) and (1=1)) and (1=1))						    and (1=1)) and (1=1));-- left deep with orsselect * from s where not ( ( ( ( ( ((1=2) or (1=1)) or (1=1)) or (1=1)) or (1=1))						    or (1=1)) or (1=1));select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))						    or (1=2)) or (1=2));select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=1)) or (1=2)) or (1=2))						    or (1=2)) or (1=2));select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=1)) or (1=2))						    or (1=2)) or (1=2));select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=1))						    or (1=2)) or (1=2));select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))						    or (1=1)) or (1=2));select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))						    or (1=2)) or (1=1));-- right deep with orsselect * from s where not ( ( ( ( ( (1=1) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))						    or (1=2)) or (1=2));select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))						    or (1=2)) or (1=2));select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=1)) ) or (1=2)) or (1=2))						    or (1=2)) or (1=2));select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=1)) or (1=2))						    or (1=2)) or (1=2));select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=1))						    or (1=2)) or (1=2));select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))						    or (1=1)) or (1=2));select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))						    or (1=2)) or (1=1));-- nots on notsselect * from s where not ( not ( not ((1=2) or (1=1))) or (not ((1=2) or (1=2)) ) );-- following nots on nots won't work because they result in transient boolean datatype in the select clauseselect not ( not ( not ((1=2) or (1=1))) or (not ((1=2) or (1=2)) ) ) from s;-- negative testing-- non boolean where clausesselect * from s where 1;select * from s where 1 and (1=1);select * from s where (1=1) and 1;select * from s where 1 or (1=1);select * from s where (1=1) or 1;select * from s where not 1;-- Clean updrop table t;drop table s;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -