Mysql常见函数学习及多表查询实例
首先说明一一上在ubuntu上如何安装Mysql:
//查找之前的安装文件 sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install libmysqlclient-dev
在安装过程中,会提示为ROOT设置密码,注意不要忘了,安装成功后:
//登录检查: mysql -uroot -proot
redhat安装:
查找之前的安装文件并删除: $ rpm -aq | grep MySQL MySQL-server-advanced-5.6.20-1.el6.x86_64 MySQL-devel-advanced-5.6.20-1.el6.x86_64 MySQL-python-1.2.3-0.3.c1.1.el6.x86_64 MySQL-client-advanced-5.6.20-1.el6.x86_64 perl-DBD-MySQL-4.013-3.el6.x86_64
在root下删除命令:
#rpm -e MySQL-server-advanced-5.6.20-1.el6.x86_64 --nodeps --allmatches
老版本需要手动删除的文件:
#rm -f /etc/my.cnf #rm -rf /var/lib/mysql #rm -rf /var/share/mysql
下面是安装命令:
#rpm -ivh MySQL-client-advanced-5.6.20-1.el6.x86_64.rpm #rpm -ivh MySQL-server-advanced-5.6.20-1.el6.x86_64.rpm #rpm -ivh MySQL-devel-advanced-5.6.20-1.el6.x86_64.rpm
安装的时候,会默认创建root用户,密码初始在文件:
/root/.mysql_secret
安装好后第一件事就是改密码,可以登录后,使用如下命令修改:
mysql> set password=password('123456'); Query OK, 0 rows affected (0.00 sec)
MYsql函数使用:
1,没有sysdate,但提供now()函数:
select now() from dual;
2,求昨天,今天,明天:
select date_add(now(),interval -1 day),now(),date_add(now(),interval 1 day) from dual;
3,求明年的今天:
select date_add(now(),interval 1 year) from dual;
4,加1分10秒:
select addtime(now(),'0:1:10') from dual;
5,字符连接函数 concat 支持多列:
select concat('11','22','33','44') from dual;
6,length求字节数,中文一个占3个字节:
select length('hello中国') from dual;
7,转换函数 yyyy-mm-dd语法支持,但功能不支持,需要使用:
select date_format(now(),'%y-%m-%d') from dual;
8,数值转换函数 conv:
selecct conv(10,10,2),conv(10,10,16) from dual; 即将10从10进制,转换成2进制,和10转16进制
MYsql多表查询
oracle写法,显示员工号,姓名,部门编号,部门名称:
select e.empno,e.ename,e.deptno,d.dname from emp e,dept d where e.deptno = d.deptno;
sql99标准写法:
select e.empno,e.ename,e.deptno,d.dname from emp e inner join dept d on e.deptno = d.deptno;
内连接写法口诀:1,改为inner join ;2,where 改为 on
(+) 在mysql不可用,左外连接口诀:1, ,改为 left outer join 2, where 改为 on
select d.deptno,d.dname,count(e.empno) from dept d left outer join emp e on d.deptno=e.deptno group by d.deptno,d.dname;
右外连接口诀:1, ,改为right outer join 2,where 改为 on
select d.deptno,d.dname,count(e.empno) from emp e right outer join dept d on d.deptno=e.deptno group by d.deptno,d.dname;
使用自连接,显示 xxx's boss is yyy
select concat(e.ename,'''s boss is ',ifnull(b.ename,'his wife!')) from emp e left outer join emp b on e.mgr = b.empno;
要注意,mysql不能使用nvl函数,最后,inner 和 outer 都可以省。