LIKE – 查找类似值 LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。...IN – 锁定多个值 IN 操作符允许我们在 WHERE 子句中规定多个值。...UNION ALL 语法: SELECT 列名 FROM 表A UNION ALL SELECT 列名 FROM 表B; 另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名...注意: UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 ????...取整: select round(1.1351,0) from dual; select round(1.56,0) from dual; ????
SQL 高级言语学习 LIKE – 查找类似值 LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。...IN – 锁定多个值 IN 操作符允许我们在 WHERE 子句中规定多个值。...UNION 语法: SELECT 列名 FROM 表A UNION SELECT 列名 FROM 表B; 注意: UNION 操作符默认为选取不同的值。...UNION ALL 语法: SELECT 列名 FROM 表A UNION ALL SELECT 列名 FROM 表B; 另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名...取整: select round(1.1351,0) from dual; select round(1.56,0) from dual; NOW/SYSDATE – 当前时间 NOW/SYSDATE
在HeapTupleFields中,t_xmin是插入这行tuple的事务id;t_xmax是删除或者锁住tuple的事务id;union结构中的t_cid是删除或者插入这个tuple的命令id,也就是命令序号...=# select * from page_header(get_raw_page('t1',0));-[ RECORD 1 ]--------lsn | 0/1671188checksum...| 0flags | 0lower | 772upper | 784special | 8192pagesize | 8192version | 4prune_xid...| 0postgres=# 可以看到第0个page的pd_lsn为0/1671188,checksum和flags都是0,这里没有开启checksum;tuple开始偏移是772(pd_lower)...lp_off+lp_len=8160+32=8192),这行记录的插入事务id是557(t_min),和tuple的删除事务id是0(tmax),这里数据没有被删除,所以都是0。
0 2 b.PageHeaderData postgres=# select * from page_header(get_raw_page('mvcc', 'main', 0)); lsn...c.ItemIddata postgres=# select lp,lp_off,lp_flags,lp_len from heap_page_items(get_raw_page('mvcc',...lp_off:tuple在page中的位置。 ...d.HeapTupleHeaderData postgres=# select * from heap_page_items(get_raw_page('mvcc', 'main', 0)); lp...更新是进行删除后再插入。 t_cid:这个是指一个事务内的命令ID,每个事务都是从0开始。
在允许范围之外的 p 值将导致一个错误。没有声明精度的 float 将被当作 double precision 。 ...下面看一下物理存储: postgres=# create table numerictest (n1 numeric); CREATE TABLE postgres=# select pg_relation_filepath...(m1 money); CREATE TABLE postgres=# insert into moneytable values ('$1') ; INSERT 0 1 postgres=# select...-12-8'); INSERT 0 1 postgres=# checkpoint ; CHECKPOINT postgres=# select pg_relation_filepath('datetest...into byteat values ('ab'); INSERT 0 1 postgres=# checkpoint ; CHECKPOINT postgres=# select pg_relation_filepath
在结果集中,如果 GROUPING 返回 1 则指示聚合;返回 0 则指示不聚合。...--SELECT ABS(numeric_expression) 绝对值 SELECT ABS(-1); --CEILING (numeric_expression)大于或等于指定数值表达式的最小整数...SELECT ROUND(123.4567,2); SELECT ROUND(123.4567,-2); --SIGN(numeric_expression)返回指定表达式的正号 (+1)、零 (0)...,不含尾随空格 SELECT LEN('FIRE'); SELECT LEN('FIRE '); -- LOWER(character_expression) 全部转换为小写字符 SELECT LOWER...) 在字符或者文本数据中搜索指定模式, --返回指定表达式中某模式第一次出现的起始位置;否则返回0 SELECT PATINDEX('%FIRE%','FIREWANG'); --QUOTENAME
/* 插入数据 */ insert into course values('CS-437', 'Database Systems', 'Comp.Sci...from /* 创建角色 */ create role instructor; 字符串 %:匹配任意字符串 _:匹配一个字符 ||:串联 trim():去掉后面的空格 upper()、lower...intersect except (select course_id from section where year = 2009) union (select course_id from section...where semester = 'Spring') 去并集,会自动去重(union all 不去重) 空值 涉及空值的比较,返回 unknown 判断空值用 is null,不能用 = null...求候选码: 只在右边的一定不属于候选码, 只在左边的一定包含于候选码, 不在函数依赖集中出现的一定包含于候选码, 其它属性与2,3的属性的组合中(必须包含2,3的属性),闭包等于全集 U 的为候选码
操作符用于在 WHERE 子句中搜索列中的指定模式。...; SQL in IN 操作符 IN 操作符允许我们在 WHERE 子句中规定多个值。...not IN ('Adams','Carter') SQL between BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。...p 必须是 1 到 38 之间的值。默认是 18。 s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。...p 必须是 1 到 38 之间的值。默认是 18。 s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
这些例程可以接受并显示系统对象的符号名,而不是类型oid使用的原始数字值。别名类型使查找对象的OID值变得简单。...cmin:插入该元组的命令在插入事务中的命令标识(从0开始累加) cmax:删除该元组的命令在插入事务中的命令标识(从0开始累加) cmin和cmax用于判断同一个事务内的其他命令导致的行版本变更是否可见...由于 OID 是系统表的隐藏列,因此查看系统表中数据库对象的OID时,必须在SELECT语句中显式指定。...postgres 数据库相关的数据存储在 PGDATA/base/13635 目录里面。...pd_lower,pd_upper:pd_lower指向行指针(line pointer)的尾部,pd_upper指向最后那个元组。 pd_special: 索引页面中使用,它指向特殊空间的开头。
请注意,value应该是指定column的值和要查询的行: SELECT * FROM table WHERE column = value; 使用比较运算符 WHERE子句中的比较运算符定义应如何将指定列与值进行比较...请注意,AVG函数仅适用于包含数值的列; 当在包含字符串值的列上使用时,它可能会返回错误或0: SELECT AVG(column) FROM table; 查找列中的值的总和 SUM函数用于查找列中保存的所有数值的总和...: SELECT SUM(column) FROM table; 与AVG函数一样,如果在包含字符串值的列上运行SUM函数,它可能会返回错误或只是0,这取决于您的RDBMS。..._2.common_column; 将多个SELECT语句与UNION子句组合使用 UNION运算符用于两个(或更多个)SELECT语句的结果成单个结果集是很有用的: SELECT column_1 FROM...table UNION SELECT column_2 FROM table; 此外,UNION子句可以将查询不同表的两个(或更多)SELECT语句组合到同一个结果集中: SELECT column
,如果需要有条件的从表中选取数据,可将where子句添加到select语句中 语法:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 可在where子句中使用的运算符: 操作符 描述...SQL LIKE操作符 LIKE用于在WHERE子句中搜素列中的指定模式 语法: SELECT column_name(s) FROM table_name WHERE column_name...charlist] 不在字符列中的任何单一字符 SQL IN操作符 IN操作符允许我们在WHERE子句中规定多个值。....column_name SQL UNION和UNION ALL操作符 UNION用于合并两个或多个SELECT语句的结果集。...DEFAULT 用于向列中插入默认值,如果没有规定其他的值,就添加默认值。 SQL CREATE INDEX语句 用于在表中创建索引,在不读取整个表的情况下,使用索引可以更快的查找数据。
LOWER():转小写字母 select lower(列名) from 表名; // 也可以带表名 select lower(列名) as l_Name from 表名; UPPER():转大写字母 LENGTH...select语句中嵌套select语句,那么被嵌套的select语句称为子查询。 子查询出现位置 select ...(select) from ......SQL语句: select e.ename,e.sal from emp e where e.sal > (select min(sal) from emp); from 子句中的子查询 from子句中的子查询结果可以当做一张临时表来使用...e.job ='Java全栈工程师'; 就这个需求而言,SQL查询可以用之前学的 or 或者 in(值1,值2) 都可以实现结果,但在多表链接查询时 union 效率更高。...union注意事项: 在进行结果集合并的时候,要求结果集的列数相同 limit用法(必须掌握) 将查询结果集的一部分取出来,通常多用于分页查询中。
数据库对象和对象符号标识 base 目录一个文件对应一个数据库,个人实验的映射如下:1:template1 14485:template0 14486:postgres 数据库和堆表的OIDs分别存储在...,postgres=CTc/postgres} (3 rows) 数据库的OIDs 堆表的OIDs select relname,oid from pg_class; postgres=# select...t_user" OWNER TO "postgres"; 设置字段随机值: select substr( 'abcdefghijklmnopqrstuvwxyz', 1, ( random( ) *...SELECT lpad( ( random( ) * 1 ) :: INT :: text, 1, '0' ); 使用explain插入数据: EXPLAIN ANALYZE INSERT INTO...写入方式 从上面的步骤可以看到,写入方式比较好理解,就是在行指针后面插入新的数据,以及在末端元组加入新数据,之后更新指针引用以及更新头部信息即可。
t_user" OWNER TO "postgres";设置字段随机值:select substr( 'abcdefghijklmnopqrstuvwxyz', 1, ( random( ) * 26...SELECT lpad( ( random( ) * 1 ) :: INT :: text, 1, '0' );使用explain插入数据:EXPLAIN ANALYZE INSERT INTO t_user...- pd_checksum:校验和,在 9.3 版本之前存储时间线标识。- pd_lower,pd_upper:分别代表行指针的末尾和最新堆元组的起始位置。...* 在某些情况下,行指针是 "使用中"z状态,但在页面上没有任何相关的存储。 * 根据惯例,在每一个没有存储空间的行指针中,lp_len == 0。...图片从上面的步骤可以看到,写入方式比较好理解,就是在行指针后面插入新的数据,以及在末端元组加入新数据,之后更新指针引用以及更新头部信息即可。
3.引号绕过(使用十六进制) 会使用到引号的地方一般是在最后的where子句中。...盲注经常使用,使用between的脚本) 使用greatest()、least():(前者返回最大值,后者返回最小值) 同样是在使用盲注的时候,在使用二分查找的时候需要使用到比较操作符来进行查找。...id=1+and+ascii(lower(mid((select+pwd+from+users+limit+1,1),1,1)))=74 或者: substr((select 'password'),...,可以将注入语句分割插入。...Inject=union/*&inject=*/select/*&inject=*/1&inject=2&inject=3&inject=4 最终在IIS中读取的参数值将如下所示 Inject=union
PostgreSQL中NULL的意义 PG中,NULL可以表示空numeric值;不能进行数学操作符计算,NULL参与的结果都是NULL。 1、NULL是什么 首先需要理解NULL值是什么。...因不同语言处理方式不同,所以NULL值经常引起一些混淆。在详细介绍之前,还需要了解三值逻辑和二值逻辑概念。二值是布尔值的概念,要么真,要么假。但三值逻辑可以真,也可以为假,还可以是中间值(未知)。...某些语言中,NULL充当二值逻辑,而其他语言中则可能充当三值逻辑(尤其是数据库中)。 1)C/C++中 在C/C++语言中,NULL定义为0。可以使用等值运算符“==”或者“!...== NULL) printf("NULL is 0 \n");} 上述程序的输出将是“NULL is 0”,所以很明显NULL在C语言中被定义为“0” 2)Java 与C/C++...对于 Bob,我们插入了 0,对于 Davis,我们插入了 NULL。通过这样做,我们可以轻松区分谁有 0 分,谁还没有结果。
优化数字数据(Numeric Data) l 对于唯一ID或其它可用字符串或数字表示的值,选择用数字列好过用字符串列。...eg: mysql> SELECT 'a' = 'A'; -> 1 mysql> SELECT BINARY 'a' = 'A'; -> 0 mysql> SELECT 'a' = 'a...'; -> 1 mysql> SELECT BINARY 'a' = 'a '; -> 0 l 当需要比较不同列的值时,尽可能为那些列定义相同的字符集和比对方法,避免执行查询时进行字符串转换...当连续的主键值在物理上连续存储时,可以加快InnoDB的插入和检索速度。...l max_memory:默认为8192,当ANALYSE()试图查找所有不重复值时,为每列分配的最大内存量。 注意:PROCEDURE ANALYSE()不能在UNION语句中使用。
需要注意,如果从其他表扫数据插入本表,例如CREATE TABLE …AS…或者INSERT INTO…SELECT…,插入的数据使用的压缩算法仍然使用原始数据的压缩方法。...添加对亚美尼亚语、巴斯克语、加泰罗尼亚语、印地语、塞尔维亚语和意第绪语词干的支持 允许tsearch数据文件有无限的行长度(Tom Lane),之前的限制是4K字节。...允许BRIN索引在每个范围内记录多个最小值/最大值 ,如果每个页面范围中都有一组值的时候非常有用。允许更加有效地处理异常值。...,使用带有结果缓存的参数化嵌套循环的好处会增加 7) FDW API 和 postgres_fdw 已扩展为允许批量插入外部表:如果FDW支持批量,并且请求了批量,那么累积行并以批量形式插入,否则每次插入一行...QUERY: SELECT lower(unaccent(t)) CONTEXT: SQL function "mangle" during inlining 在我们的示例中,我们可以通过在函数调用中使用
下面我们先认识一下CTE,然后通过几个实际查询示例来深入理解,最后会提供测试数据,以方便自己动手实践(在mysql8和postgres10上都测试过)。 什么是 CTE?...简单理解,CTE 就是一个有名字的结果集,就像一个普通表一样,可以被用在 select 语句中。...two,有一个列 number_two,值为 2。...2个 select 的联结词包括 UNION ALL 和 UNION,区别就是 UNION 会把重复的结果删掉。...结合上面的例子: 第一个 select 产生一条数据,列名为 "n",值为 “1”,放入结果集。
另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。...使用 UNION来创建查询的时候,我们只需要用 UNION作为关键字把多个 SELECT语句连接起来就可以了,要注意的是所有 SELECT语句中的字段数目要想同。...不用以下操作 显示或隐式的类型转换 比如 SELECT id FROM table WHERE id='1' 再如在WHERE子句中numeric 型和int型的列相比较就属于隐式转换 使用非同类型的列进行等值查询...在WHERE子句中的"="左边表达式进行函数、算术运算或其他表达式运算 使用前缀为%的LIKE 使用负向查询,如NOT, !...EXISTS代替IN,EXISTS在一些场景查询会比IN快 用UNION ALL代替UNION 使用EXISTS来判断记录是否存在,而不使用SELECT COUNT(1)来判断记录是否存在
领取专属 10元无门槛券
手把手带您无忧上云