1、系统函数:

数据库名:database()
数据库版本: version()
数据库用户: user()
操作系统: @@version_compile_os
系统用户名: system_user()
当前用户名: current_user
连接数据库的用户名:session_user()
读取数据库路径:@@datadir
MYSQL安装路径:@@basedir
储存所有表名信息的表 : information_schema.tables
mysql中存储元数据的数据库:Information_schema:
表名 : table_name
数据库名: table_schema
列名 : column_name
储存所有列名信息的表 : information_schema.columns

2、字符串连接函数:

  • concat(str,str,…) 无分隔符连接函数
  • concat_ws(separator,str,str,…) 含分隔符连接函数

第一个参数指定分隔符。分隔符不能为null,如果为null,则返回结果为null
eg:select concat_ws(’,’,‘username’,‘password’); username,password 连接后以逗号分隔

  • group_concat(str1,str2,…) 连接一个组的所有字符串,并以逗号分隔每一条数据

3、关于优先级:

在SQL语句中and的优先级高于or

4、数据存储结构:

desc users 可以查看users表的结构,包括字段名,类型等等

5、关于字符串截取函数:

从(左/右)开始截取字符串

left(str, len),即:left(被截取字符串, 截取长度)

select left(database(),1);         截取左边第一位
select left(database(),1)='s';   判断 截取左边第一位是否是s        正确返回1 ,错误返回 0

right(str, len),即:right(被截取字符串, 截取长度)

select right(database(),1);        截取右边第一位
select right(database(),1)='y';   判断 截取的右边第一位是否是y        正确返回1 ,错误返回 0
截取特定长度的字符串,注意mysql下表从1开始

substr(str, pos),即:substr(被截取字符串, 从第几位开始截取)

select substr(database(),2);                  从数据库第二个字符开始截取到最后
select substr(database(),2)='ecurity';    判断 从数据库第二个字符开始截取到最后是否为ecurity  正确返回1 ,错误返回 0

substr(str, pos, len),即:substr(被截取字符串,从第几位开始截取,截取长度)

select substr(database(),1,1);        截取数据库第一个字符是什么
select substr(database(),1,1)='s';   判断截取数据库第一个字符是否为s   正确返回1,错误返回0

mid(str,pos),即:mid(被截取字符串, 从第几位开始截取)
mid(str,pos,len),即:mid(被截取字符串,从第几位开始截取,截取长度)

按关键字进行读取
substring_index(str, delim, count),即:substring_index(被截取字符串,关键字,关键字出现的次数)
搜索匹配位置
instr(str,substr) 在一个字符串str中搜索指定的字符substr,返回发现指定的字符的位置index

附加

regexp函数
select database() regexp 'e';   database()结果是security, regexp为匹配security的正则表达式 
select database() regexp 'sec';   返回 1
select database() regexp 'curit';  返回 1 
select database() regexp 'sc';     返回 0
like函数
select database() like 's%';         匹配第一个字符是不是s
select database() like '%ec%';    匹配字符中间一部分是不是ec
select database() like '%y';         匹配是不是y结尾
length 函数

select length
查询的时候,利用length函数的时候可以灵活使用大于小于符号

ascii()函数
select ascii('s');     将某个字符串转换为acsii值
要看a的ASCII码,sql语句 select ascii(a);
要看ASCII码为56的字符  select char(56);

select ascii(substr(database(),1,1));

ascii() --函数返回字符表达式最左端字符的ASCII 码值
char() --函数用于将ASCII 码转换为字符
如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值

if 判断函数

if(condition,A,B)   如果条件为 true,则执行语句A,否则 执行B
例子:(在security 数据库中 第一位字母s的ascii为115)
select if(ascii(substr(database(),1,1)) > 100,2,3);    # 意思 是当前数据库 第一个字母的ascii码大于100返回2,否则返回3

sleep函数

sleep(s) 静止s秒、数字类型,可自定义
例子

select if(length(database())=8,1,sleep(5)) --+   意思是如果数据库长度为8,直接返回结果,如果不是延迟5s返回;

补充:

LOWER() --函数把字符串全部转换为小写
UPPER() --函数把字符串全部转换为大写
STR() --函数把数值型数据转换为字符型数据
LTRIM() --函数把字符串头部的空格去掉
RTRIM() --函数把字符串尾部的空格去掉

tips:
查询列数:group by
查询内容 union 查询前后字段数必须相同
从第0行开始截取到第一行:limit 0,1
注释:–+ 或 --’ (–加空格也行) 或 #(http请求改成url的编码%23) 通常跟在语句的后面注释掉输入框后的内容
在sql当中 – 是一种注释的功能,我们将写入-- 是用来把$id后面的’或者)给注释掉的,防止影响前面的闭合