1.加密函数:
USER() 可以查看登录到mysql的有哪些用户,以及登录的IP
SELECT USER() FROM DUAL;
DATABASE() 查询当前使用数据库名称
SELECT DATABASE() FROM DUAL;
MD5(str) 为字符串算出一个 MD5 32的字符串,(用户密码)加密
SELECT LENGTH(MD5('mima')) FROM DUAL;
PASSWORD(str) 加密函数,MySQL数据库的用户密码就是 PASSWORD函数加密
SELECT PASSWORD('mima') FROM DUAL;
2.流程控制语句:判断是否为null,要使用 is null,判断不为空,使用 is not null。
IF(表达式1,表达式2,表达式3) 如果表达式1为true,则返回表达式2,否则返回表达式3
SELECT IF(TRUE,'北京','上海') FROM DUAL;
IFNULL(表达式1,表达式2) 如果表达式1不为null,则返回表达式1,否则返回表达式2
SELECT IFNULL(NULL,'hi') FROM DUAL;
SELECT CASE WHEN 表达式1 THEN 表达式2 WHEN 表达式3 THEN 表达式4 ELSE 表达式5 END;
如果表达式1为true,则返回表达式2,如果表达式2为true,返回表达式4,否则返回表达式5。
SELECT CASE
WHEN TRUE THEN 'hi'
WHEN FALSE THEN 'hello'
ELSE 'nihao' END;
3.分页查询:
基本语法:select...limit start,rows 表示从start+1 行开始取,取出rows行,start从0开始计算limit 每页显示记录数 * (第几页-1),每页显示记录数。
SELECT * FROM emp
ORDER BY empno
LIMIT 0,3;
SELECT * FROM emp
ORDER BY empno
LIMIT 3,3;
SELECT * FROM emp
ORDER BY empno
LIMIT 6,3;
4.多表查询是指基于两个和两个以上的表查询。
笛卡尔集的列数为每个表的列数之和,笛卡尔集的行数为每个表的行数相乘。当我们需要指定显示某个表的列时,需要 表.列名 多表查询的条件不能少于 表的个数-1,否则会出现笛卡尔集。
SELECT ename,sal,dname,emp.deptno
FROM emp,dept
WHERE emp.deptno = dept.deptno AND emp.deptno=10
5.自连接是指在同一张表的连接查询,把同一张表当做两张表使用,需要给表取别名(别名取名方法:表名 表别名)。
SELECT worker.ename AS '职员名',boss.ename AS '上级名'
FROM emp worker,emp boss
WHERE worker.mar =boss.empno;