MySQL_04之常用函数、聚合函数以及合并(union&union all)

本文详细介绍了MySQL中的查询操作,包括笛卡尔集的避免、等值连接、连接查询的分类和实例,以及JOIN连接的使用。此外,还讲解了MySQL的常用函数,如字符函数、数学函数和日期函数的使用示例。
摘要由CSDN通过智能技术生成

一、查询

一、笛卡尔集
    笛卡尔集会在下面条件下产生
         省略连接条件
         连接条件无效
        所有表中的所有行互相连接
        为了避免笛卡尔集, 可以在 WHERE 加入有 效的连接条件。
        
        含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询
        笛卡尔乘积现象:表1 有m行,表2有n行,结果=m*n行
            发生原因:没有有效的连接条件
            如何避免:添加有效的连接条件

分类:
按年代分类:
sql92标准:仅仅支持内连接
sql99标准【推荐】:支持内连接+外连接(左外和右外)+交叉连接
按功能分类:
内连接:

*等值连接
非等值连接
自连接
外连接:
*左外连接:左外连接是取左表的全部,左表有的、右表也有,若左表没有,那右表的就不用了
*右外连接:与左外连接相反
全外连接
交叉连接

    

二、等值/连接连接
    使用连接在多个表中查询数据
        在 WHERE 子句中写入连接条件。
        在表中有相同列时,在列名之前加上表名前缀    
        
        
表的别名        
    提高语句的简洁度
    区分多个重名的字段
    注意:如果为表起了别名,则查询的字段就不能使用原来的表名去限定
   
案例:查询员工名、工种号、工种名
SELECT e.last_name,e.job_id,j.job_title FROM t_mysql_employees e,jobs j
WHERE e.`job_id`=j.`job_id`;

   
连接多个表   
    连接 n个表,至少需要 n-1个连接条件。 例如:连接
    三个表,至少需要两个连接条件。
    
案例1:查询女生名和对应的男生名
SELECT NAME,boyName
FROM boys,beauty
WHERE beauty.boyfriend_id= boys.id;


案例2:自连接
查询 员工名和上级的名称
SELECT e.employee_id,e.last_name,m.employee_id,m.last_name
FROM t_mysql_employees e,t_mysql_employees m
WHERE e.`manager_id`=m.`employee_id`;
 
 
案例3:两个表的顺序是否可以调换(是)
查询员工名、工种号、工种名
SELECT e.last_name,e.job_id,j.job_title
FROM t_mysql_jobs j,t_mysql_employees e
WHERE e.`job_id`=j.`job_id`;


案例4:可以加筛选条件
查询 有奖金 的员工名、部门名
SELECT last_name,department_name,commission_pct
FROM t_mysql_employees e,t_mysql_departments d
WHERE e.`department_id`=d.`department_id`
AND e.`commission_pct` IS NOT NULL;


案例5:可以加分组
查询 每个城市 的部门个数
SELECT COUNT(*) 个数,city
FROM t_mysql_departments d,t_mysql_locations l
WHERE d.`location_id`=l.`location_id`
GROUP BY city;


案例6:可以加排序
查询 每个工种 的 工种名和员工的个数,并且 按员工个数降序
SELECT job_title,COUNT(*)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值