读一读

自连接

select a.label as parent_label,b.label as child_label from menu as a,menu as b where a.id=b.parent

把表当成a,b,表,其实都是自己


select * from 表1,表2;  //交叉连接
select * from 表1 cross join 表2;

键个数相加,条数相乘组合新表


date_format(now(),"%W %D %M %Y %r");
time_format(时间,"%h %i %p");
inet_aton();#ip地址转化为数字
inet_ntoa();#数字转ip
cast("99" as signed);
convert("23",signed);
convert("aa" using utf8);#还可以转换字符集

if(条件,true,false);
if 条件 then  else  end if;
ifnull(1,2)  ##1为空就返回2
nullif(1,1)  ##两个相同返回null
case when 条件 then 值 else  值  end
case ##可以限制条件,像switch

password(str)  密码加密(不可逆)

encrypt(串,钥匙)   不可逆

str = encode(串,钥匙)   decode(str,钥匙)

ase_encrypt(串,钥匙)  加密

ase_decrypt(str,钥匙)  解密

MD5()     SHA()   


NOW() 取现在的时间

current_time()  只取时间

current_date()    只取日期

year(time)    取字符串年份

month(time) 取字符串的月份

monthname(time) 取月份的名称


length()   长度

lcase()   取小写

ucase()    取大写

strcmp()   对比字符串0相等1左边大

position(c1 in c2)   位置

replace()   替换

insert()   插入或替换


数学函数 - 1

ABS   取绝对值

CEILING  比它大的整数

FLOOR   比它小的整数

GREATEST   最大值为

LEAST   最小值为

MOD     除余

PI    返回π

RAND   随机0-1

ROUND   四舍五入


DATE  4个字节   年月日

TIME  4字节     小时 分钟  秒

YEAR   年

DATETIME   两个结合

TIMESTAMP   时间戳


DATETIME(2) 往下再精确两位


CHAR   定长的字符串

VARCHAR  变长的字符串

TEXT

BLOB 二进制

TINYTEXT

LONGBLOB

ENUM   枚举  规定只能是那些数据

SET  多值枚举,用,隔开,可以选择多个值


加上BINARY为存储方式为二进制,则区分大小写