第四周 任务名称:数据库系统功能相关学习
- 学习数据库自带函数的功能与用法(思考在什么情况下可以执行命令)
- 将所有涉及的函数进行测试并举例说明其用法并形成报告
- 扩展学习:针对自己所选数据库,尝试执行系统命令,自己构造所需环境
0x00 mysql的自带函数
1. 字符串连接函数
1.1. 字符串连接函数concat(s1,s2,s3,...,sN)
concat()将多个字符串连接起来形成一个长字符串。它会尝试将字符全部转换为字符型,如果存在null,则直接返回null。
concat_ws(sep,s1,s2,...,sN)
函数是concat()函数的特殊格式,它的第一个参数sep是用于连接s1,s2,…,sN的分隔符。分隔符可以是一个字符或一个字符串,只要合理即可。如果分隔符sep为null,则返回结果null,如果s1,s2,…,sN之间出现了null,则忽略null。
1.2. lower(string)
、upper(string)
、left(string,x)
、right(string,x)
函数的功能分别为小写、变大写、从左取x长度字符、从右取x长度字符。
1.3. 填充函数 lpad(string,n,pad)
和rpad(string,n,pad)
1.4. trim(string)
、ltrim(string)
、rtrim(sting)
及trim(substring from string)
函数功能分别为消除string行首和行尾、行首、行尾的空格以及行首行尾指定的字符串。可以从字符串长度看出有两个空格的字符串长6,trim去除了左右两边的空格后长度变为4,ltrim和rtrim的分别去除左右两边的空格后长度就变为5。
1.5. 重复字符串repeat(string,x)
1.6. 字符串替换函数replace(string,a,b)
1.7. 字符串插入替换函数insert(string,p1,len,instead_string)
将string从位置p1开始,len个长度的字符替换为instead_string。
1.8. 字符串提取substring(string,x,y)
将string从位置X开启往后截取y个字符。
1.9. 字符串长度函数length(string)
和char_length(string)
length()返回字符串的字节数,注意不是字符数,char_length()返回的才是字符数
1.10. 字符串反转函数reverse(str)
反转字符串str的字符顺序。
1.11. 字符串位置函数locate(sub_str,string)
、position(sub_str in string)
和instr(str,sub_str)
三个函数的作用相同,都是返回sub_str在string中的开始位置
1.12. 字符串位置函数find_in_set(sub_string,str_set)
返回子字符串sub_string在str_set中的位置,其中str_set是一个由逗号隔开的多个字符串集合。如果找不到位置(sub_str不在str_set中或者str_set为空串)则返回0,如果任意一个为null,则返回null。
1.13. 字符串位置函数field(s,str1,str2,...,strN)
返回字符串s在字符串集合str1,str2,…,strN中的位置。如果找不到或者字符串s为null,则返回0,因为null无法进行比较,也就是找不到。
1.14. 指定位置的字符串函数elt(n,str1,str2,…,strN)
elt表示从str中提取需要的东西。n是位置,n=1则返回str1,n=2则返回str2,依次类推。当n<1或者大于字符串的数量,则返回null。
2.实用函数
2.1. sleep(N)
延迟N秒后执行后面的语句。
2.2. 返回当前数据库名database()
,返回当前数据库版本version()
, 返回当前登录用户名user()
2.3. 返回加密字符串password(str),返回字符串的MD5值md5(str)
2.4. group_concat(str1,str2,...)
连接一个组的所有字符串 以逗号分隔每一条数据
2.5. connection_id()
返回当前mysql的连接数
2.6. current_user()、session_user()和system_user()
返回当前用户
2.6. 加解密 hex(str)和unhex(str),to_base64(str)和from_base64(str),
2.7. @@datadir MySQL 的数据库文件存放路径和@@basedir MySQL 的安装路径
0x01 mysql执行系统命令
syetem 系统命令