MySql学习笔记(1)

MySql与Oracle语法上的差异

1、mysql 查询条件不区分大小写 例:

SELECT *FROM EMPLOYEESWHENE LAST NAME 'King';

  可以查询出Name='king'、='KING'的数据,Oracle是区分大小写的,只能查出name=‘King’的。

2、分页方式不一样,mysql使用limit分页,oracle 用rownum加子查询进行分页。

笛卡尔积怎么产生的?

  集合A、集合B 组合的所有可能,组合的个数是两个集合个数的乘积。以前经常用,但搞不清这个概念是什么。

    1、省略多表连接条件(或关联条件)

    2、连接条件无效

    3、所有表中的所有行互相连接

外连接分类

1、左外连接

      左边的表全部数据,右边展示满足条件的数据。

2、右外连接

      右边的表数据全部要,左边展示满足条件的数据。

3、满外连接

     mysql不支持FULL OUTER JOIN,UNION 和UNIONALL的使用
     #UNION:会执行去重操作
     # UNION ALL:不会执行去重操作

七种join的实现

   

两种SQL函数

     1、单行函数:只对一行进行变换,每行返回一个结果

             进制转换函数比较少用:BIN(10),HEX(10),OCT(10),CONV(10,10,8)、字符串函数

     2、多行函数:

           count(*)计算指定字段在查询结果的个数、方差、标准差、中位数 用得很少。

      官网查询函数帮助文档MySQL :: MySQL 8.0 参考手册 :: 14 个函数和运算符

HAVING的使用

     1、 如果过滤条件中使用了聚合函数,则必须使用HAVING来替换WHERE。否则,报错。

      2、HAVING 必须声明在GROUP BY的后面

      我单知道 having count(*)>2 的用法,其他没用过。

SELEcT department id,MAX(salary)
FROM employees
GROUP BY department idHAVING MAX(salary)>10000;

  多行子查询条件不止IN 

     除了In 关键字 还有ANY、ALL 可用

#返回其它job id中比job id为'IT PROG'部门任一工资低的员工的员工号、#姓名、job id 以及salary
SELECT employee id,last name,job id,salary from employees
WHERE job id <> 'IT_PROG' 
AND salary < ANY( SELECT salary FROM employees WHERE job_id = 'IT_PROG');

#返回其它job id中比job id为'IT PROG'部门所有工资低的员工的员工号、#姓名、job id 以及salary
select department_id  from employees GROUP BY department_id having avg(salary))<= all 
(SELECT AVG(salary) avg_sal from employees GROUP BY department_id);

关联子查询案例

#题目:查询员工中工资大于本部门平均工资的员工的last name,salary和其department id
SELECT last name,salary,department id  from employees el 
WHERE salary > (SELECT AVG(salary) from employees e2 WHERE department id=el.`department_id`);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值