MySQLの-DQL(クエリ1に参加)

クラス6は、クエリに参加します

意味:複数のテーブルのクエリからマルチテーブルクエリのフィールド
デカルト積現象:表1、表2のm行を、行、M * N行結果Nが存在します

その理由が発生しました:有効な接続条件はありません
有効な接続を追加します。回避する方法

カテゴリー:

   按年代:
   sq192
   sq199 推荐:支持内连接+外连接(左外和右外)+交叉连接
   按功能分类:
       内连接:
             等值连接
             非等值连接
             自连接
       外连接:
             左外连接
             右外连接
             全外连接
       交叉连接:

、SQL92標準

1.等価結合

マルチ接続テーブルの交差部にマルチテーブル同等の結果
n-1個の接続状態にN接続テーブルニーズ
順位テーブルを下降は必要としない
テーブルエイリアス一般
以前のすべての句で使用することができ

#1、案例:查询员工名和对应的部门名
 SELECT
  last_name,
  department_name
FROM
  employees,
  departments
WHERE employees.department_id = departments.department_id;
#2、为表起别名
#案例 员工号、工种号、工种名
 SELECT
  last_name,
  e.job_id,
  job_title
FROM
  employees AS e,#因为是先执行from所以如果select哪里再用原始表表名就无法识别
  jobs AS j
WHERE e.`job_id`=j.`job_id`;
#3、二个表的顺序可以调换
#案例 员工号、工种号、工种名
 SELECT
  last_name,
  e.job_id,
  job_title
FROM
  employees AS e,
  jobs AS j
WHERE j.`job_id`=e.`job_id`;
#4.可以加筛选
#查询有奖金的员工名,部门名
 SELECT
  last_name,
  department_name
FROM
  employees AS e,
  departments AS d
WHERE e.`commission_pct` IS NOT NULL
  AND e.`department_id` = d.`department_id` 
#5、可以加分组
 #查询每个城市的部门个数
 SELECT
  COUNT(*),
  city
FROM
  locations AS l,
  departments AS d
WHERE l.`location_id` = d.`location_id`
GROUP BY l.`city` 
#6、加排序
#查询每个工种的工种名和员工的个数,并且按员工个数降序
SELECT COUNT(*),job_title 
FROM employees AS e,jobs AS j 
WHERE e.`job_id`=j.`job_id` 
GROUP BY job_title 
ORDER BY COUNT(*) DESC;
#7、三表连接
#查询员工名,部门名和所在城市
 SELECT
  last_name,
  department_name,
  city
FROM
  employees AS e,
  departments AS d,
  locations AS l
WHERE e.`department_id` = d.`department_id`
  AND l.`location_id`=d.`location_id`;

## 2、非等価な接続

#案例 查询每个员工的工资和工资等级
SELECT salary,grade_level
 FROM employees AS e,job_grades AS g 
 WHERE salary 
 BETWEEN g.`lowest_sal` AND g.`highest_sal`;

図3に示すように、接続以来

#案例查询员工名和上级的名称
 SELECT
  e.last_name,
  e.employee_id,
  m.`last_name`,
  m.`employee_id`
FROM
  employees AS e,
  employees AS m
WHERE e.`manager_id` = m.`employee_id`;

おすすめ

転載: blog.csdn.net/qq_42193790/article/details/104355053