SQL基础之子查询,多表插入,合并语句,跟踪一段时间数据变化(二)十

使用子查询处理数据

可以使用子查询中的数据操纵语言(DML)语句:

使用内嵌视图检索数据

从一张表向另一张表复制数据

基于另一张表的值更新表中数据

基于另一张表的值删除表中的行


选择department_name,城市部门

自然加入(选择l。location_id l。城市,l。country_id从loc l

加入国家c

(l。country_id=c.country_id)

加入地区使用(region_id) region_name=芭分蕖?;


插入(选择l。location_id l。城市,l。从位置country_id l

加入国家c

(l。country_id=c.country_id)

加入地区使用(region_id)

region_name=芭分蕖?

值(3300年,“卡迪夫”,“英国”);



<李>

使用默认关键字设置字段默认值。

<李>

允许用户控制什么时候使用默认值应用到数据

<李>

可以在插入和更新语句中显式使用缺省值


插入与默认值:


插入deptm3 (department_id, department_name manager_id)值(“工程”,300年),


更新与默认值:

更新deptm3设置manager_id=默认department_id=10;


<李>

插入语句的子查询:

插入sales_reps (id、名称、工资、commission_pct)

选择employee_id last_name、工资、commission_pct

从员工那里job_id像%代表%的;

<李>

不使用值子句

<李>

插入子句与子查询的列数,类型相匹配


——无条件插入

——旋转插入

——有条件插入所有的

——有条件插入第一个


所有插入target_a值(…,……,…)

target_b值(…,……,…)

target_c值(…,……,…)

选择……从sourcetab

…;


多表查询示意图:

 SQL基础之子查询,多表插入,合并语句,跟踪一段时间数据变化(二十)


<李>

使用INSERT…SELECT语句插入行到多个表中,作为一个单一的DML语句。

<李>

数据仓库系统中使用的多表插入语句将一个或多个操作的源数据写入到一组目标表中。

<李>

它们提供显着的性能改善:

,,,——单个DML语句与多表插入…选择语句

,,,——单个DML语句与使用,如果……然后语法完成多表插入


以下是不同类型的多表插入语句:

<李>

,无条件插入

<李>

,旋转插入

<李>

,有条件插入所有

<李>

,有条件插入第一个


多表插入语法

插入[conditional_insert_clause]

[insert_into_clause values_clause](子查询)


有条件插入子句:

(所有|)

[当条件][insert_into_clause values_clause]

[其他][insert_into_clause values_clause]



所有插入sal_history值(empid, hiredate, sal)

到mgr_history值(empid,下,萨尔)

选择employee_id empid hire_date hiredate,

工资sal, manager_id mgr_home_dir_t

从员工那里employee_id祝辞200;


 SQL基础之子查询,多表插入,合并语句,跟踪一段时间数据变化(二十)


插入所有

当hiredate & lt;,“01 - 1月- 95”然后

emp_history值(EMPID, HIREDATE, SAL)

当通讯不空然后

emp_sales值(EMPID,通讯,SAL)

选择employee_id EMPID hire_date HIREDATE,

工资SAL, commission_pct通讯从员工

 SQL基础之子查询,多表插入,合并语句,跟踪一段时间数据变化(二十)

插入第一个

当工资& lt;null

SQL基础之子查询,多表插入,合并语句,跟踪一段时间数据变化(二)十