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函数,最后,innerouter 都可以省。

posted @ 2017-11-13 20:25  *平凡*随风舞  阅读(986)  评论(0编辑  收藏  举报