精华内容
下载资源
问答
  • hive 0.10.0为了执行效率考虑,简单的查询,就是只是select,不带count,sum,group by这样的,都不走map/reduce,直接读取hdfs文件进行filter过滤。这样做的好处就是不新开mr任务,执行效率要提高不少,但是不好的...

    平时我们用的HIVE 我们都知道 select * from table_name 不走MR 直接走HTTP 

    hive 0.10.0为了执行效率考虑,简单的查询,就是只是select,不带count,sum,group by这样的,都不走map/reduce,直接读取hdfs文件进行filter过滤。这样做的好处就是不新开mr任务,执行效率要提高不少,但是不好的地方就是用户界面不友好,有时候数据量大还是要等很长时间,但是又没有任何返回。

    改这个很简单,在hive-site.xml里面有个配置参数叫

    hive.fetch.task.conversion

    将这个参数设置为more,简单查询就不走map/reduce了,设置为minimal,就任何简单select都会走map/reduce

     

    造200W数据 格式为

     

    下面验证下like是否走MR

    1、等值比较: =

    select * from tp_200w_test where name='测试 '-等值条件下  --不走MR

     

    2、模糊比较: LIKE

    1)百分号在后面

    select * from tp_200w_test where name like '测%' and address like '江苏%'  --不走MR

     

    2)百分号在前面

    select * from tp_200w_test where name like '%试'  --不走MR

     

    3)百分号在2边

    select * from tp_200w_test where address like '%物联%'   --不走MR

     

    4)百分号加中间

     select * from tp_200w_test where address like '%物%联%'   --不走MR

     

    3、不等值比较: <>

    select * from tp_200w_test where id <>1    --不走MR

     

    4、小于比较:< ,大于比较> 小于等于<= 大于等于>= 

    select * from tp_200w_test where id <2  --不走MR

    select * from tp_200w_test where id >2  --不走MR

    select * from tp_200w_test where id >=2  --不走MR

    select * from tp_200w_test where id <=2  --不走MR

    5、空值判断is null, is not null 

    select * from tp_200w_test where id is null  --不走MR

    select * from tp_200w_test where id is not null  --不走MR

     

    6、JAVA的LIKE操作: RLIKE

    select * from tp_200w_test where id rlike '^f.*r$'  --不走MR

     

    对于集合统计函数

     1) count,sum ,min ,avg ,max 函数 都走MR,不在一一写

     

     

     

      

     

    转载于:https://www.cnblogs.com/staryea/p/8570538.html

    展开全文
  • H2内存数据库函数

    千次阅读 2018-06-17 11:45:20
    每个数据库为了使用者的查询简便性以及使用效率,都有专门提供一些函数给使用者进行使用,H2也同样如此,虽然没有oracle那么多强大的函数,但是一般需求的使用还是能够满足,下面就简单介绍下都有哪些函数一、函数的...

    每个数据库为了使用者的查询简便性以及使用效率,都有专门提供一些函数给使用者进行使用,H2也同样如此,虽然没有oracle那么多强大的函数,但是一般需求的使用还是能够满足,下面就简单介绍下都有哪些函数

    一、函数的分类以及名称

    1、聚合函数(Aggregate Functions)
    
      AVG
      BOOL_AND
      BOOL_OR
      COUNT
      GROUP_CONCAT
      MAX
      MIN
      SUM
      SELECTIVITY
      STDDEV_POP
      STDDEV_SAMP
      VAR_POP
      VAR_SAMP
    
    2、数值函数(Numeric Functions)
    
      ABS
      ACOS
      ASIN
      ATAN
      COS
      COT
      SIN
      TAN
      ATAN2
      BITAND
      BITOR
      BITXOR
      MOD
      CEILING
      DEGREES
      EXP
      FLOOR
      LOG
      LOG10
      RADIANS
      SQRT
      PI
      POWER
      RAND
      RANDOM_UUID
      ROUND
      ROUNDMAGIC
      SECURE_RAND
      SIGN
      ENCRYPT
      DECRYPT
      HASH
      TRUNCATE
      COMPRESS
      EXPAND
      ZERO
    
     3、字符串函数(String Functions)
    
      ASCII
      BIT_LENGTH
      LENGTH
      OCTET_LENGTH
      CHAR
      CONCAT
      DIFFERENCE
      HEXTORAW
      RAWTOHEX
      INSTR
      INSERT Function
      LOWER
      UPPER
      LEFT
      RIGHT
      LOCATE
      POSITION
      LPAD
      RPAD
      LTRIM
      RTRIM
      TRIM
      REGEXP_REPLACE
      REPEAT
      REPLACE
      SOUNDEX
      SPACE
      STRINGDECODE
      STRINGENCODE
      STRINGTOUTF8
      SUBSTRING
      UTF8TOSTRING
      XMLATTR
      XMLNODE
      XMLCOMMENT
      XMLCDATA
      XMLSTARTDOC
      XMLTEXT
    
    4、日期和时间函数(Time and Date Functions)
    
      CURRENT_DATE
      CURRENT_TIME
      CURRENT_TIMESTAMP
      DATEADD
      DATEDIFF
      DAYNAME
      DAY_OF_MONTH
      DAY_OF_WEEK
      DAY_OF_YEAR
      EXTRACT
      FORMATDATETIME
      HOUR
      MINUTE
      MONTH
      MONTHNAME
      PARSEDATETIME
      QUARTER
      SECOND
      WEEK
      YEAR
    
    5、系统函数(System Functions)
    
      ARRAY_GET
      ARRAY_LENGTH
      AUTOCOMMIT
      CANCEL_SESSION
      CASEWHEN   Function
      CAST
      COALESCE
      CONVERT
      CURRVAL
      CSVREAD
      CSVWRITE
      DATABASE
      DATABASE_PATH
      FILE_READ
      GREATEST
      IDENTITY
      IFNULL
      LEAST
      LOCK_MODE
      LOCK_TIMEOUT
      LINK_SCHEMA
      MEMORY_FREE
      MEMORY_USED
      NEXTVAL
      NULLIF
      READONLY
      ROWNUM
      SCHEMA
      SCOPE_IDENTITY
      SESSION_ID
      SET
      TABLE
      TRANSACTION_ID
      USER
    
    

    二、函数的使用以及说明

    AVG ( [ DISTINCT ] { int | long | decimal | double } )
    
    平均值。如果没有查询到行,结果集为NULL。聚合方法只能在SELECT语句中使用,返回的值的数据类型与输入参数(字段)类型一致。
    
    例子如下:AVG(X)
    
    BOOL_AND(boolean)
    
    如果表达式为真返回TRUE,如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。
    
    例子如下:BOOL_AND(ID>10)
    
    BOOL_OR(boolean)
    
    如果表达式为真返回TRUE,如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。
    
    例子如下:BOOL_OR(NAME LIKE ‘W%‘)
    
    COUNT( { * | { [ DISTINCT ] expression } } )
    
    统计所有的行数,或者非空值。方法返回一个长整数,如果没有查询到行,返回结果为0。聚合函数只能在SELECT语句中使用。
    
    例子如下:COUNT(*)
    
    GROUP_CONCAT
    
    GROUP_CONCAT ( [ DISTINCT ] string
    
    [ ORDER BY { expression [ ASC | DESC ] } [,...] ]
    [ SEPARATOR expression ] )
    
    以分割字符串进行连接。默认的分隔符是一个‘,‘(不带空格),此方法返回一个字符串,如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。
    
    例子如下:GROUP_CONCAT(NAME ORDER BY ID SEPARATOR ‘, ‘)
    
    MAX(value)
    
    取最大值。 如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。 返回的值的数据类型与输入参数(字段)类型一致。
    
    例子如下:MAX(NAME)
    
    MIN(value)
    
    取最小值。如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。 返回的值的数据类型与输入参数(字段)类型一致。
    
    例子如下:MIN(NAME)
    
    SUM( [ DISTINCT ] { int | long | decimal | double } )
    
    所有值求和。如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。 返回的值的数据类型与输入参数(字段)类型一致。
    
    例子如下:SUM(X)
    
    SELECTIVITY(value)
    
    估算性能优化选择(0-100)。这个值被定义为(100 * distinctCount / rowCount)。设置为了0的优化选择为0(未知) 。10000 以内的值都被保存在内存中。聚合函数只能在SELECT语句中使用。
    
    例子如下:SELECT SELECTIVITY(FIRSTNAME), SELECTIVITY(NAME) FROM TEST WHERE ROWNUM()<20000
    
    STDDEV_POP( [ DISTINCT ] double )
    
    总体标准差。此方法返回一个双精度实数。如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。
    
    例子如下:STDDEV_POP(X)
    
    STDDEV_SAMP( [ DISTINCT ] double )
    
    样本标准差。此方法返回一个双精度实数。如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。
    
    例子如下:STDDEV(X)
    
    VAR_POPVAR_POP( [ DISTINCT ] double )
    
    总体方差(总体标准方差)。 此方法返回一个双精度实数。如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。
    
    例子如下:VAR_POP(X)
    
    VAR_SAMP( [ DISTINCT ] double )
    
    样本方差(样本标准方差)。如果没有查询到行,结果集为NULL,聚合函数只能在SELECT语句中使用。
    
    例子如下:VAR_SAMP(X)
    
    ABS ( { int | long | decimal | double } )
    
    参见JAVA的 Math.abs方法。需要注意的是 Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE 和 Math.abs(Long.MIN_VALUE) == Long.MIN_VALUE。返回值的类型和输入参数的类型相同。
    
    例子如下:ABS(ID)
    
    ACOS(double)
    
    参见JAVA的Math.acos方法。这个方法返回一个双精度实数。
    
    例子如下:ACOS(D)
    
    ASIN(double)
    
    参见JAVA的Math.asin方法。这个方法返回一个双精度实数。
    
    例子如下:ASIN(D)
    
    ATAN(double)
    
    参见JAVA的Math.atan方法。这个方法返回个双精度实数。
    
    例子如下:ATAN(D)
    
    COS(double)
    
    参见JAVA的Math.cos方法。这个方法返回个双精度实数。
    
    例子如下:COS(ANGLE)
    
    COT(double)
    
    参见JAVA的方法Math.cot。这个方法返回个双精度实数。
    
    例子如下:COT(ANGLE)
    
    SIN(double)
    
    参见JAVA方法Math.sin。这个方法返回个双精度实数。
    
    例子如下:SIN(ANGLE)
    
    TAN(double)
    
    参见JAVA方法Math.tan。这个方法返回个双精度实数。
    
    例子如下:TAN(ANGLE)
    
    ATAN2(double, double)
    参见JAVA方法Math.atan2。这个方法返回个双精度实数。
    
    例子如下:ATAN2(X, Y)
    
    BITAND(long, long)
    位的与运算。这个方法返回一个长整数,参见JAVA操作 &。
    
    例子如下:BITAND(A, B)
    
    BITOR(long, long)
    位的或运算。这个方法返回一个长整数,参见JAVA操作 |。
    
    例子如下:BITOR(A, B)
    
    BITXOR(long, long)
    位的异或运算。这个方法返回一个长整数,参见JAVA操作 ^。
    
    例子如下:BITXOR(A, B)
    
    MOD(long, long)
    取余数操作,这个方法返回一个长整数,参见JAVA操作 %。
    
    例子如下:MOD(A, B)
    
    CEILING(double)
    参见JAVA方法 Math.ceil。 这个方法返回个双精度实数。
    
    例子如下:LOG(A)
    
    DEGREES(double)
    参见JAVA方法Math.toDegrees。这个方法返回个双精度实数。
    
    例子如下:DEGREES(A)
    
    EXPEXP(double)
    参见JAVA方法 Math.exp。这个方法返回个双精度实数。
    
    例子如下:EXP(A)
    
    FLOOR(double)
    参见JAVA方法 Math.floor。这个方法返回个双精度实数。
    
    例子如下:FLOOR(A)
    
    LOG(double)
    参见JAVA方法 Math.log。这个方法返回个双精度实数。
    
    例子如下:LOG(A)
    
    LOG10(double)
    参见JAVA方法 Math.log10 (在Java 5中)。这个方法返回个双精度实数。
    
    例子如下:LOG10(A)
    
    RADIANS(double)
    参见JAVA方法 Math.toRadians。这个方法返回个双精度实数。
    
    例子如下:RADIANS(A)
    
    SQRT(double)
    参见JAVA方法 Math.sqrt。这个方法返回个双精度实数。
    
    例子如下:SQRT(A)
    
    PIPI()
    参见JAVA值 Math.PI。这个方法返回个双精度实数。
    
    例子如下:PI()
    
    POWER(double, double)
    参见JAVA方法 Math.pow。这个方法返回个双精度实数。
    
    例子如下:POWER(A, B)
    
    RAND( [ int ] )
    调用无参的方法返回下一个未指定的随机数。调用带这个SESSION的种子参数的随机数生成器。这个方法返回一个双精度实数。
    
    例子如下:RAND()
    
    RANDOM_UUID
    返回一个新的122位未指定随机数的UUID。
    
    例子如下:RANDOM_UUID()
    
    ROUND(double, digitsInt)
    四舍五入一个数值,方法返回一个双精度的实数。
    
    例子如下:ROUND(VALUE, 2)
    
    ROUNDMAGIC(double)
    更好的四舍五入方法,但是要慢,它在处理约0时有特殊的方法。仅小于等于+/-1000000000000 的数被支持。数值将被在内部转换为一个字符串,然后最后的四个字符被检查,‘000x‘变成‘0000‘,‘999x‘变成 ‘999999‘,四舍五入是自动完成的,方法返回一个双精度的实数。
    
    例子如下:ROUNDMAGIC(VALUE/3*3)
    
    SECURE_RAND(int)
    生产加密安全的随机数,方法返回字节串。
    
    例子如下:CALL SECURE_RAND(16)
    
    SIGN ( { int | long | decimal | double } )
    如果值小于0返回-1,如果值为0返回0,其他返回1。
    
    例子如下:SIGN(VALUE)
    
    ENCRYPT(algorithmString, keyBytes, dataBytes)
    使用密钥加密数据。支持算法 XTEA 和 AES。每块的大小为16字节,这个方法返回字节串。
    
    例子如下:CALL ENCRYPT(‘AES‘, ‘00‘, STRINGTOUTF8(‘Test‘))
    
    
    DECRYPT(algorithmString, keyBytes, dataBytes)
    使用密码解密。支持算法 XTEA 和 AES。每块的大小为16字节,这个方法返回字节串。
    
    例子如下:CALL TRIM(CHAR(0) FROM UTF8TOSTRING(DECRYPT(‘AES‘, ‘00‘, ‘3fabb4de8f1ee2e97d7793bab2db1116‘)))
    
    HASH(algorithmString, dataBytes, iterationInt)
    使用一个算法计算一个HASH值,通过一定次数的使用算法迭代计算来获得HASH值。目前仅有 SHA256被支持。这个方法返回字节串。
    
    例子如下:CALL HASH(‘SHA256‘, STRINGTOUTF8(‘Password‘), 1000)
    
    TRUNCATE(double, digitsInt)
    截断数值(多余的位数直接截断为0)。这个方法返回一个双精度的实数。
    
    例子如下:TRUNCATE(VALUE, 2)
    
    COMPRESS(dataBytes [, algorithmString])
    使用指定的压缩算法压缩数据。目前支持的算法有: LZF (更快但是压缩率更低,缺省的压缩算法), DEFLATE (更高的压缩率)。压缩并不总能减少尺寸,非常小的对象和竟凑对象可能会变得更大。这个方法返回字节串。
    
    例子如下:COMPRESS(STRINGTOUTF8(‘Test‘))
    
    EXPAND(bytes)
    解压被COMPRESS 方法压缩的数据。这个方法返回字节串。
    
    例子如下:UTF8TOSTRING(EXPAND(COMPRESS(STRINGTOUTF8(‘Test‘))))
    
    ZERO()
    返回值0,这个方法能被用,即使在数字文本被禁用的情况下。
    
    例子如下:ZERO()
    
    ASCII(string)
    返回字符串第一个字符的ASCII值。这个方法返回一个整数。
    
    例子如下:ASCII(‘Hi‘)
    
    BIT_LENGTH(string)
    返回串的位长度。这个方法返回一个长整数。像BLOB, CLOB, BYTES 和 JAVA_OBJECT, 都可以使用这个方法。每个字符需要16个BIT位。
    
    例子如下:BIT_LENGTH(NAME)
    
    LENGTH{ LENGTH | CHAR_LENGTH | CHARACTER_LENGTH } ( string )
    返回串中的字符数量。这个方法返回一个长整数。像 BLOB, CLOB, BYTES 和 JAVA_OBJECT, 都可以使用这个方法。
    
    例子如下:LENGTH(NAME)
    
    OCTET_LENGTH(string)
    返回串中的字节数。这个方法返回一个长整数。像BLOB, CLOB, BYTES 和 JAVA_OBJECT, 都可以使用这个方法。每个字符需要2个字节。
    
    例子如下:OCTET_LENGTH(NAME)
    
    CHAR{ CHAR | CHR } ( int )
    转换ASCII值为字符。这个方法返回一个字符串。
    
    例子如下:CHAR(65)
    
    CONCAT(string, string [,...])
    合并字符串。这个方法返回一个字符串。
    
    例子如下:CONCAT(NAME, ‘!‘)
    
    DIFFERENCE(string, string)
    返回两个字符串的读音差别。这个方法返回一个整数。
    
    例子如下:DIFFERENCE(T1.NAME, T2.NAME)
    
    HEXTORAW(string)
    转换16进制字符串为普通字符串,4个16进制字符转换一个字符。
    
    例子如下:HEXTORAW(DATA)
    
    RAWTOHEX(string)
    转换普通字符串为16进制字符串。一个字符转换为4个16进制字符。这个方法返回一个字符串。
    
    例子如下:RAWTOHEX(DATA)
    
    INSTR(string, searchString, [, startInt])
    查找子串在字符串中的位置。如果一个开始位置被指定,这个位置之前的字符将被忽略,如果指定的开始位置为负数,从右数到开始位置的字符将被忽略。如果子串在字符串中未找到,返回0。
    
    例子如下:INSTR(EMAIL,‘@‘)
    
    INSERT FunctionINSERT(originalString, startInt, lengthInt, addString)
    插入一个附加的字符串到指定串的指定位置。lengthInt指定在原串中从startInt指定的位置删除的字符数。这个方法返回一个字符串。
    
    例子如下:INSERT(NAME, 1, 1, ‘ ‘)
    
    LOWER{ LOWER | LCASE } ( string )
    转换一个字符串为小写。
    
    例子如下:LOWER(NAME)
    
    UPPER{ UPPER | UCASE } ( string )
    转换一个字符串为大写。
    
    例子如下:UPPER(NAME) 
    
    LEFT(string, int)
    返回左边的子字符串。
    
    例子如下:LEFT(NAME, 3)
    
    RIGHT(string, int)
    返回右边的子字符串。
    
    例子如下:RIGHT(NAME, 3)
    
    LOCATE(searchString, string [, startInt])
    返回子串在字符串中的位置。如果一个开始位置被指定,这个位置之前的字符将被忽略,如果指定的开始位置为负数,从右数到开始位置的字符将被忽略。如果子串在字符串中未找到,返回0。
    
    例子如下:LOCATE(‘.‘, NAME)
    
    POSITION(searchString, string)
    返回子串在字符串中的位置。参考 LOCATE。
    
    例子如下:POSITION(‘.‘, NAME)
    
    LPAD(string, int[, paddingString])
    左填充指定长度的字符串。如果指定的长度比字符串的实际长度要短,将把字符串从尾部进行截断。如果填充字符串未指定,空格将被填充。
    
    例子如下:LPAD(AMOUNT, 10, ‘*‘)
    
    RPAD(string, int[, paddingString])
    右填充指定长度的字符串。如果指定的长度比字符串的实际长度短,将把字符串截断。如果填充字符串未指定,空格将被填充。
    
    例子如下:RPAD(TEXT, 10, ‘-‘)
    
    LTRIM(string)
    从字符串中移走所有的前导空格。
    
    例子如下:LTRIM(NAME)
    
    RTRIM(string)
    从字符串中移走所有的尾部空格。
    
    例子如下:RTRIM(NAME)
    
    TRIM ( [ { LEADING | TRAILING | BOTH } [ string ] FROM ] string )
    移走字符串前导和尾部两端的全部空格。其他字符也可以通过指定被移走。
    
    例子如下:TRIM(BOTH ‘_‘ FROM NAME)
    
    REGEXP_REPLACE(inputString, regexString, replacementString)
    使用正则表达式进行字符串替换。关于更多细节,请参看JAVA方法 String.replaceAll()。
    
    例子如下:REGEXP_REPLACE(‘Hello    World‘, ‘ +‘, ‘ ‘)
    
    REPEAT(string, int)
    返回字符串中循环的次数。
    
    例子如下:REPEAT(NAME || ‘ ‘, 10)
    
    REPLACE(string, searchString [, replacementString])
    使用另一个字符串替换文本中所有的搜索到的串。如果没有替换字符串被指定,搜索到的字符串将从原串中删除。
    
    例子如下:REPLACE(NAME, ‘ ‘)
    
    SOUNDEX(string)
    返回代表字符串读音的四个字符代码。参见 http://www.archives.gov/genealogy/census/soundex.html 。这个方法返回一个字符串。
    
    例子如下:SOUNDEX(NAME)
    
    SPACE(int) 
    返回组成字符串的空格数。
    
    例子如下:SPACE(80)
    
    STRINGDECODE(string)
    使用JAVA文本格式符解码字符串。特定的字符包括 \b, \t, \n, \f, \r, \", \\, \<octal>, \u<unicode>。这个方法返回一个字符串。
    
    例子如下:CALL STRINGENCODE(STRINGDECODE(‘Lines 1\nLine 2‘))
    
    STRINGENCODE(string)
    使用JAVA文本格式符编码字符串。特定的字符包括 \b, \t, \n, \f, \r, \", \\, \<octal>, \u<unicode>。这个方法返回一个字符串。
    
    例子如下:CALL STRINGENCODE(STRINGDECODE(‘Lines 1\nLine 2‘))
    
    STRINGTOUTF8(string)
    转换字符串为UTF8编码格式的字节数组。这个方法返回字节串。
    
    例子如下:CALL UTF8TOSTRING(STRINGTOUTF8(‘This is a test‘))
    
    SUBSTRING{ SUBSTRING | SUBSTR } ( string, startInt [, lengthInt ] )
    提取指定起始位置的子串。长度是可选的,也支持:SUBSTRING(string FROM start [FOR length]).
    
    例子如下:SUBSTR(NAME, 1)
    
    UTF8TOSTRING(bytes)
    将UTF8格式的字节数组解码为字符串。
    
    例子如下:CALL UTF8TOSTRING(STRINGTOUTF8(‘This is a test‘))
    
    XMLATTR(nameString, valueString)
    创建XML属性元素,形式为 name="value"。value被编码为XML文本。这个方法返回字符串。
    
    例子如下:CALL XMLNODE(‘a‘, XMLATTR(‘href‘, ‘http://h2database.com‘))
    
    XMLNODE(elementString [, attributesString [, contentString]])
    创建一个XML节点元素,这个方法返回一个字符串。
    
    例子如下:CALL XMLNODE(‘a‘, XMLATTR(‘href‘, ‘http://h2database.com‘), ‘H2‘)
    
    XMLCOMMENT(commentString)
    创建一个XML注释。两个破折号(--)被转换为 - -。这个方法返回字符串。
    
    例子如下:CALL XMLCOMMENT(‘Test‘)
    
    XMLCDATA(valueString)
    创建一个XML的CDATA 元素。如果值内容包含 ‘]]>‘,一个XML文本元素将被替代创建。这个方法返回一个字符串。
    
    例子如下:CALL XMLCDATA(‘data‘)
    
    XMLSTARTDOC()
    字符串 ‘<?xml version="1.0"?>‘ 将被返回。
    
    例子如下:CALL XMLSTARTDOC()
    
    XMLTEXT(valueString)
    创建一个XML文本元素,这个方法返回字符串。
    
    例子如下:CALL XMLTEXT(‘test‘)
    
    ARRAY_GET(arrayExpression, indexExpression)
    返回一个数组元素,这个方法返回一个字符串。
    
    例子如下:CALL ARRAY_GET((‘Hello‘, ‘World‘), 2)
    
    ARRAY_LENGTH(arrayExpression)
    
    返回一个数组的长度。
    
    例子如下:CALL ARRAY_LENGTH((‘Hello‘, ‘World‘))
    
    AUTOCOMMIT()
    如果在这个SESSION上自动提交被打开,将返回TRUE。
    
    例子如下:AUTOCOMMIT()
    
    CANCEL_SESSION(sessionInt)
    取消另外的SESSION正在执行的语句。这个方法仅工作在多线程内核被启动的情况下 (多线程查看 SET MULTI_THREADED)。如果语句被取消返回TRUE,如果SESSION已经关闭或是没有语句正在执行,返回FALSE。
    执行这个语句需要管理员权限。
    
    例子如下:CANCEL_SESSION(3)
    
    CASEWHEN FunctionCASEWHEN(boolean, aValue, bValue)
    如果boolean表达式为真返回aValue,否则返回bValue。返回与输入参数类型相同的数据类型。
    
    例子如下:CASEWHEN(ID=1, ‘A‘, ‘B‘)
    
    CAST(value AS dataType)
    转换一个值为另外一种数据类型。当转换文本为数字时,默认的JAVA转换规则被使用(前缀为 0x 或 # 表示16进制数,前缀为0表示8进制数)。
    
    例子如下:CAST(NAME AS INT)
    
    COALESCE(aValue, bValue [,...])
    返回第一个非空值。
    
    例子如下:COALESCE(A, B, C)
    
    CONVERT(value, dataType)
    转换一个值为另外一种数据类型。
    
    例子如下:CONVERT(NAME, INT)
    
    CURRVAL( [ schemaName, ] sequenceString )
    返回序列的当前(最后)值,不依赖SESSION。如果序列刚创建,方法返回(start - interval)。如果SCHEMA名没有指定,当前SCHEMA被指定。如果SCHEMA名没有被指定,序列名将被转换为大写(为了兼容性)。这个方法返回长整数。
    
    例子如下:CURRVAL(‘TEST_SEQ‘)
    
    CSVREAD(fileNameString [, columnsString [, csvOptions ] ] )
    返回读CSV(逗号分隔字段)文件的结果集。对于每个参数,NULL表示缺省值被提供。
    如果字段名列表被指定(使用字段分隔符分割的字段列表),将使用这些字段名,如果没有被指定(或者它们被设置为NULL),文件的第一行被解释为字段列名,在这种情况下,列名不包含特殊字符(仅包含字母、 ‘_‘、数字;类似于JAVA标识符的规则),并且是区分大小写的。另外,列名都是区分大小写的,这表示你需要使用引用标识符(见下面的说明)。
    缺省的字符集为系统的缺省值,缺省的字段分隔符是逗号。没有加引号的值匹配空串时被解析为NULL,左右的列类型都是 VARCHAR。
    这个方法能被像表一样被使用: SELECT * FROM CSVREAD(...)。也可以使用URL来替代文件使用,如 jar:file:///c:/temp/example.zip!/org/example/nested.zip.
    执行这个语句需要管理员权限。
    
    例子如下:
    CALL CSVREAD(‘test.csv‘);
    -- 如一个包含字段 ID, NAME 的文件
    -- 文件的字符集为 UTF-8 ,管道符 (|) 作为字段分隔符
    CALL CSVREAD(‘test2.csv‘, ‘ID|NAME‘, ‘UTF-8‘, ‘|‘);
    
    --读一个分号分隔的文件
    SELECT * FROM CSVREAD(‘data/test.csv‘, NULL, NULL, ‘;‘);
    SELECT "Last Name" FROM CSVREAD(‘address.csv‘);
    
    CSVWRITE( fileNameString, queryString [, csvOptions [, lineSepString] ] )
    写一个CSV(逗号分隔)文件爱你。如果文件存在就覆盖。对每个参数,使用NULL表示使用缺省值。缺省字符集为系统缺省值,缺省字段分隔符为逗号。
    值将使用缺省的字符串表示法转换为文本。如果需要其他转换方式需要改变选择语句。当参数为NULL时将写入空串(缺省情况下,当NULL出现时什么都不写)。缺省的行分隔符为系统的缺省值(参见系统属性‘line.separator‘ )。
    返回写的行数。执行这个语句需要管理员权限。
    例子如下:
    
    CALL CSVWRITE(‘test.csv‘, ‘SELECT * FROM TEST‘);
    -- 写文件使用 UTF-8 编码,管道符(|)为字段分隔符
    CALL CSVWRITE(‘test2.csv‘, ‘SELECT * FROM TEST‘, ‘UTF-8‘, ‘|‘);
    
    DATABASE()
    返回数据库名
    
    例子如下:CALL DATABASE();
    
    DATABASE_PATH()
    返回数据库文件路径和数据库名,如果不是基于文件的数据库,返回NULL。
    
    例子如下:CALL DATABASE_PATH();
    
    FILE_READ(fileNameString [,encodingString])
    返回文件内容,如果仅一个参数被提供,数据被作为 BLOB返回。如果两个参数被提供,数据被作为 CLOB 文本返回。 第二个参数作为字符集使用,NULL表示使用系统缺省的字符集。文件名和URL被支持。执行这个语句需要管理员权限。
    
    例子如下:
    
    SELECT LENGTH(FILE_READ(‘~/.h2.server.properties‘)) LEN;
    SELECT FILE_READ(‘http://localhost:8182/stylesheet.css‘, NULL) CSS;
    
    GREATEST(aValue, bValue [,...])
    返回最大的非空值,如果所有的值为NULL,将返回NULL。
    
    例子如下:CALL GREATEST(1, 2, 3);
    
    IDENTITY()
    返回当前SESSION最后写入的标识符。当一个新的序列号产生时,这个值都将改变,即使是在触发器或是JAVA方法中,详细参见 SCOPE_IDENTITY()。这个方法返回一个长整数。
    
    例子如下:CALL IDENTITY();
    
    IFNULL(aValue, bValue)
    如果值为非空返回aValue,否则返回bValue。
    
    例子如下:CALL IFNULL(NULL, ‘‘);
    
    LEAST(aValue, bValue [,...])
    返回非空的最小值,如果所有的值都是NULL,将返回NULL。
    
    例子如下:CALL LEAST(1, 2, 3);
    
    LOCK_MODE()
    返回当前所模式。参见SET LOCK_MODE。这个方法返回一个整数。
    
    例子如下:CALL LOCK_MODE();
    
    LOCK_TIMEOUT()
    返回当前SESSION的锁超时时间(毫秒数)。
    
    例子如下:LOCK_TIMEOUT()
    
    LINK_SCHEMA(targetSchemaString, driverString, urlString,
    userString, passwordString, sourceSchemaString)
    在一个SCHEMA创建所有表的表链接。如果同名的表已经存在,将先删除它们。目标SCHEMA在不存在的情况下将被自动创建。驱动如果已经加载了驱动名可以为空。链接表列表作为结果集被返回。执行这个语句需要管理员权限。
    
    例子如下:CALL LINK_SCHEMA(‘TEST2‘, ‘‘, ‘jdbc:h2:test2‘, ‘sa‘, ‘sa‘, ‘PUBLIC‘);
    
    MEMORY_FREE()
    返回空闲内存,单位为 KB (1024 字节为一 KB)。这个方法返回一个整数。在返回这个值前,垃圾收集器将被执行。这行这个语句需要管理员权限。
    
    例子如下:MEMORY_FREE()
    
    MEMORY_USED()
    返回已用的内存,单位为 KB (1024 字节为一 KB)。这个方法返回一个整数。在返回这个值前,垃圾收集器将被执行。这行这个语句需要管理员权限。
    
    例子如下:MEMORY_USED()
    
    NEXTVAL( [ schemaName, ] sequenceString )
    返回序列的下一个值。已经被使用过的值永远也不会再用,即使事务被回滚。如果SCHEMA没有被设置,当前SCHEMA被使用,序列名将被转换为大写(为了兼容性)。这个方法返回一个长整数。
    
    例子如下:NEXTVAL(‘TEST_SEQ‘)
    
    NULLIF(aValue, bValue)
    如果aValue等于bValue返回NULL,否则返回aValue。
    
    例子如下:NULLIF(A, B)
    
    READONLY()
    如果数据库是只读的,返回TRUE。
    
    例子如下:READONLY()
    
    ROWNUM()
    返回当前行数,这个方法返回一个整数。这个方法支持SELECT语句、DELETE语句和UPDATE语句。第一行为行号1,行号在结果集分组和排序前被计算。要获得排序和分组之后的行号,需要使用子查询。
    
    例子如下:
    SELECT ROWNUM(), * FROM TEST;
    SELECT ROWNUM(), * FROM (SELECT * FROM TEST ORDER BY NAME);
    
    SCHEMA()
    返回这个SESSION的缺省SCHEMA名。
    
    例子如下:CALL SCHEMA()
    
    SCOPE_IDENTITY()
    返回当前SESSION当前作用范围的最后插入的标识符值,在触发器和JAVA方法中的改变将被忽略。参见 IDENTITY()。这个方法返回一个长整数。
    
    例子如下:CALL SCOPE_IDENTITY();
    
    SESSION_ID()
    返回当前数据库连接的唯一SESSION标识号。这个标识号在连接打开期间一直存在。这个方法返回一个整数。数据库引擎可以重复使用已经关闭的连接的SESSION标识号。
    
    例子如下:CALL SESSION_ID()
    
    SET(@variableName, value)
    更新指定变量的值。新值将被返回。当使用在查询中时,值将被按读的顺序进行更新。
    
    例子如下:SELECT X, SET(@I, IFNULL(@I, 0)+X) RUNNING_TOTAL FROM SYSTEM_RANGE(1, 10)
    
    TABLE{ TABLE | TABLE_DISTINCT } ( { name dataType = expression } [,...] )
    返回结果集。 TABLE_DISTINCT 删除重复的行。
    
    例子如下:SELECT * FROM TABLE(ID INT=(1, 2), NAME VARCHAR=(‘Hello‘, ‘World‘))
    
    TRANSACTION_ID()
    返回当前SESSION的当前事务ID。如果没有未提交的改变,或是数据不是持久化的,这个方法返回NULL,否则下面形式的值被返回: logFileId-position-sessionId。这个方法返回一个字符串。这个值在数据库重启后也是唯一的值(值不会被重新使用)。
    
    例子如下:CALL TRANSACTION_ID()
    
    USER{ USER | CURRENT_USER } ()
    返回当前SESSION的当前用户的用户名。
    
    例子如下:CURRENT_USER()
    
    CURRENT_DATE{ CURRENT_DATE [ () ] | CURDATE() | SYSDATE | TODAY }
    返回当前日期。
    
    例子如下:CURRENT_DATE()
    
    CURRENT_TIME{ CURRENT_TIME [ () ] | CURTIME() }
    返回当前时间。
    
    例子如下:CURRENT_TIME()
    
    CURRENT_TIMESTAMP{ CURRENT_TIMESTAMP [ ( [ int ] ) ] | NOW( [ int ] ) }
    返回当前时间戳,纳秒精度参数是可选的。
    
    例子如下:CURRENT_TIMESTAMP()
    
    DATEADD(unitString, addInt, timestamp)
    增加一个单元到时间戳中,使用字符串表示这个单元,使用负数来裁剪单元。同样的单元在 EXTRACT 方法中被支持。这个方法返回一个时间戳。
    
    例子如下:DATEADD(MONTH, 1, DATE ‘2001-01-31‘)
    
    DATEDIFF(unitString, aTimestamp, bTimestamp)
    返回两个时间戳的差值。这个方法返回一个长整数。字符串表示这个单元。同样的单元在 EXTRACT 方法中被支持。
    
    例子如下:DATEDIFF(YEAR, T1.CREATED, T2.CREATED)
    
    DAYNAME(date)
    返回日期的名称(英语)。
    
    例子如下:DAYNAME(CREATED)
    
    DAY_OF_MONTH(date)
    返回月份的第几天 (1-31)。
    
    例子如下:DAY_OF_MONTH(CREATED)
    
    DAY_OF_WEEK(date)
    返回星期的第几天 (1 表示星期一).
    
    例子如下:DAY_OF_WEEK(CREATED)
    
    DAY_OF_YEAR(date)
    返回一年中的第几天 (1-366).
    
    例子如下:DAY_OF_YEAR(CREATED)
    
    EXTRACT( { YEAR | YY | MONTH | MM | DAY | DD | DAY_OF_YEAR
    | DOY | HOUR | HH | MINUTE | MI | SECOND | SS | MILLISECOND | MS }
    FROM timestamp )
    返回时间戳里指定的值。这个方法返回一个整数。
    
    例子如下:EXTRACT(SECOND FROM CURRENT_TIMESTAMP)
    
    FORMATDATETIME ( timestamp, formatString , localeString , timeZoneString)
    
    格式化日期、时间或时间戳为字符串。最重要的格式符为: y 年, M 月, d 日, H 小时, m 分钟, s 秒。详细的格式说明参见 java.text.SimpleDateFormat。这个方法返回一个字符串。
    
    例子如下:CALL FORMATDATETIME(TIMESTAMP ‘2001-02-03 04:05:06‘, ‘EEE, d MMM yyyy HH:mm:ss z‘, ‘en‘, ‘GMT‘)
    
    HOUR(timestamp)
    返回时间戳中的小时数(0-23)。
    
    例子如下:HOUR(CREATED)
    
    MINUTE(timestamp)
    返回时间戳中的分钟数(0-59)。
    
    例子如下:MINUTE(CREATED)
    
    MONTH(timestamp)
    返回时间戳中的月份数(1-12)。
    
    例子如下:MONTH(CREATED)
    
    MONTHNAME(date)
    返回指定月的月名(英文)。
    
    例子如下:MONTHNAME(CREATED)
    
    PARSEDATETIME(string, formatString, localeString , timeZoneString)
    解析字符串返回时间戳。最重要的格式符有: y 年, M 月, d 日, H 小时, m 分钟, s 秒。关于格式更多信息,请参考java.text.SimpleDateFormat.
    
    例子如下:CALL PARSEDATETIME(‘Sat, 3 Feb 2001 03:05:06 GMT‘, ‘EEE, d MMM yyyy HH:mm:ss z‘, ‘en‘, ‘GMT‘)
    
    QUARTER(timestamp)
    返回时间戳的季度数 (1-4) 。
    
    例子如下:QUARTER(CREATED)
    
    SECOND(timestamp)
    返回时间戳的秒数(0-59)。
    
    例子如下:SECOND(CREATED)
    
    WEEK(timestamp)
    返回时间戳的星期数(1-53) 。这个方法使用当前系统所在地的时区。
    
    例子如下:WEEK(CREATED)
    
    YEAR(timestamp)
    返回时间戳的年份
    
    例子如下:YEAR(CREATED)

    展开全文
  • 以下只是我针对数据库查询慢这个问题想到的可能的原因和一些解决办法的简单罗列,每一个问题和解决办法都可以详细描述很多,后面的再针对每一个点进行谈论 一、应用的问题 数据库表设计不合理,应该加索引的字段...

    以下只是我针对数据库查询慢这个问题想到的可能的原因和一些解决办法的简单罗列,每一个问题和解决办法都可以详细描述很多,后面的再针对每一个点进行谈论

     

    一、应用的问题

    1. 数据库表设计不合理,应该加索引的字段没有加索引
    2. 查询sql语句是不是编写不合理,查询的时候没有加索引
    3. 查询sql语句的条件加了索引,但是查询的时候没有命中索引,比如:前缀匹配失效、条件字段做了类型转换或者使用了函数、使用了范围查询等;使用 explain 查看索引命中情况 ;参考
    4. join的表太多了???
    5. 数据库中的单表的数据量达到了多少?1000万?5000万?是不是考虑分库分表;参考
      1. 分库分表怎么选取分片键?
      2. 分库分表后怎么查询?
      3. 分库分表的算法?一致性hash环?
      4. 分库分表的节点个数怎么考虑
    6. 程序异常导致大量数据库连接不能释放,一直被占用?

    二、数据库的问题

    1. 参数优化,连接池资源不够用了
    2. 数据库所在的硬件资源情况:当查询慢的时候,内存占了多少?mysql磁盘IO是不是被其它应用共享且占用高?cpu是不是有负载?
      1. 硬件资源本身不够>加资源
      2. 硬件资源因为和其它进程共享,导致资源不够,可以考虑做资源隔离
      3. 硬件资源性能不足,比如磁盘可以考虑换成SSD
    3. 网络资源
      1. 应用连接数据库的网络是不是抖动,延时较高

    三、请求量太大

    1. 如果数据量真的炒鸡大,分库分表已经不能满足查询了,考虑将热点数据在redis做缓存
      1. 应用架构调整,把缓存模块加进去
      2. 如果已经加了缓存还是慢,会不会是缓存雪崩了?击穿了?缓存命中率低?
    2. 缓存任然不能满足查询要求,比如很多字段的查询,可以将查询字段放到ES等大数据组件中,先查ES,ES拿到数据主键id再到MySQL中查询
    3. 用户请求突然增加,导致查询变慢
      1. 上有系统出现bug,导致循环调用接口做查询,这个时候是不是考虑异常情况限流
      2. 用户请求真的是大量增加了,公司发展迅猛

     

     

     

     

     

    展开全文
  • 关系数据库有哪些?_数据库常见的关系型数据库有mysql 、SQL Server、Oracle、Sybase、DB2等。关系型数据库是目前最受欢迎的数据库管理系统,技术比较成熟。MySQL密码加密与解密详解有多种前端加密算法可用于数据...

    关系数据库有哪些?_数据库

    常见的关系型数据库有mysql 、SQL Server、Oracle、Sybase、DB2等。关系型数据库是目前最受欢迎的数据库管理系统,技术比较成熟。MySQL密码加密与解密详解

    有多种前端加密算法可用于数据加密、解密,这是一种简单的数据库级别的数据加密、解密解决方案。

    以MySQL数据库为例,它内建了相应的加密函数(AES_ENCRYPT() )和解密函数(AES_DECRYPT())。

    1.建表:建表时注意数据的类型

    CREATE TABLE users( username VARCHAR(10), PASSWORD VARCHAR(10), testpswd VARBINARY(20) );

    此表有三个字段,'用户名' ,'密码' ,'加密的密码'。redis限制IP访问次数的方法_数据库

    有时候我们需要限制一个api或页面访问的频率,例如单ip或单用户一分钟之内只能访问多少次,类似这样的需求很容易用Redis来实现。

    2.在表中插入数据

    INSERT INTO users (username,PASSWORD,testpswd) VALUES ('sxyu','1233210',AES_ENCRYPT('1233210','key'));

    插入一条记录,AES_ENCRYPT()函数需要一个“key”来协助加密,解密同时也需要它,需要牢记。

    3.从表中查询加密数据(解密):

    SELECT username,PASSWORD,AES_DECRYPT(testpswd,'key') FROM users

    从查询结果可以发现,解密后的密码与原本的密码是相同的。

    推荐:《mysql视频教程》

    展开全文
  • 文章目录最幸福的阶段每日测验昨日内容回顾今日内容概要今日内容详细前期表准备几个重要关键字的执行顺序...你所知道的约束条件有哪些 表与表之间关系有几种,如何判断 创建上述表关系的SQL语法如何书写 昨日内容回顾
  • mnesia是erlang自带的分布式...mnesia数据库有一个schema表,保存着数据库相关的一些信息,例如如何将表保存到磁盘、如何加载这些表、在哪些节点间同步数据。构建集群,关键是处理这个schema表。调用函数mnesia...
  • PHP数据库编程

    2018-12-05 17:35:26
    php三种方式来操作...mysql扩展库是函数集合,用于操作数据库简单案例 搭建环境 查看php现支持哪些扩展库:使用语句&amp;amp;lt;?php phpinfo() ?&amp;amp;gt; 若未启动mysql数据库,在php....
  • java面向对象面向对象都有哪些特性,以及你对这些特性的理解?继承:继承是从已有类得到的类的信息创建新类的过程。提供继承信息的被成为父类(基类),得到继承信息的被称为子类封装:通常认为封装是吧数据和操作数据...
  • 桌面数据库

    2012-08-01 08:17:27
    1、自由创建、修改、管理、操作表:详细的使用介绍,生手亦可很快入门。数据库管理,是本软件的主要部分。 2、简捷易用的表格制作、打印:功能清晰,最傻瓜型操作,不会用Excel的人,也能很快上手。可以编辑当前...
  • 可以查询数据库中的有哪些表,表有哪些字段,字段的属性等等。MetaData中通过一系列getXXX函数,将这些信息存放到ResultSet里面,然后返回给用户。关于MetaData的说明网上也有不少,这里我只是从我自身学习的角度来...
  • 面试专题-数据库

    2019-11-21 16:30:19
    1.三大范式通俗解释 1)简单归纳: 第一范式(1NF):字段不可分; 第二范式(2NF):有主键,非主键字段依赖主键; 第三范式(3NF):非主键字段不能相互...有哪些优缺点? 存储过程就像是编程语言中的函数...
  • 可以查询数据库中的有哪些表,表有哪些字段,字段的属性等等。MetaData中通过一系列getXXX函数,将这些信息存放到ResultSet里面,然后返回给用户。关于MetaData的说明网上也有不少,这里我只是从我自身学习的角度来...
  • 目录(?...可以查询数据库中的有哪些表,表有哪些字段,字段的属性等等。MetaData中通过一系列getXXX函数,将这些信息存放到ResultSet里面,然后返回给用户。关于MetaData的说明网上也有不少,这里我
  • 简单回答下!...如果要提高性能,除非多个 IO 同时出现在一个处理函数里,并且它们之间没有依赖关系。比如同时请求数据库和 RPC 服务。一个简单示例。var wg sync.WaitGroupwg.Add(2)go func() {...
  • 5.4 简单的Oracle数据库事务 153 5.5 提交和回滚 154 5.5.1 提交一个事务 154 5.5.2 回滚一个事务 155 5.6 数据一致性和数据并发性 155 5.6.1 数据库写入器和写前协议 155 5.6.2 SCN 156 5.6.3 撤销...
  • 可以查询数据库中的有哪些表,表有哪些字段,字段的属性等等。MetaData中通过一系列getXXX函数,将这些信息存放到ResultSet里面,然后返回给用户。关于MetaData的说明网上也有不少,这里我只是从我自身学习的角度来...
  • 其他自动计算如:宾馆入住结算、学分计算、餐饮结算、即时销售(销售专用窗口)、财务……均可有效处理。 6、强劲的事项提醒: 想要提醒的事项,任意指定。 7、图片、文本的自动对号批量导入: 这对于一些需要...
  • SQLite是ios数据储存中经常用到的,关于SQLite有哪些常用的函数以及SQLite编码,这里做了一个详细的总结。   SQLite常用的函数  一、简单说明 1.打开数据库  int sqlite3_open(   const char *filename /...
  • 最近几个月学习了Oracle 10g ...我用MSSQL 2000数据库有两年多了,并一直从事数据库开发工作,个人认为MSSQL 2000数据库是一个功能强大,语法句式相对简单,对于初学者比较容易上手,通过短时间内学习可以担任工作.MSS
  • 最近几个月学习了Oracle 10g PL/...我用MSSQL 2000数据库有两年多了,并一直从事数据库开发工作,个人认为MSSQL 2000数据库是一个功能强大,语法句式相对简单,对于初学者比较容易上手,通过短时间内学习可以担任工作.M
  • 创建只有一个执行语句的触发器 较为简单 易于理解比如说有两个图书表t_book和t_bookType,一个存放各图书的信息,都有哪些图书;一个存放图书的类别,各个类别下都有多少本书,记录着各个类别图书的数量。如下图现在...
  • VB是一门编程语言,所以能用VB做的很多很多,基本上除了底层开发(系统软件),VB都能做,而且在数据库应用方面VB也他独到的一面。 3.如何学好VB(请详细说明) 这不是一句两句可以说清楚的。给你一个学习的过程:...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 171
精华内容 68
关键字:

数据库有哪些简单函数