• <SQL>《SQL命令(含例句)精心整理版(3)》


    10 联结

    10.1 联结

    定义说明
    定义笛卡尔积(cartesian product)由没有联结条件的表关系返回的结果为笛卡尔积。检索的数目等于第一个表行数乘以第二个表行数。返回笛卡尔积的联结称为叉联结(cross join)。
    说明性能–DBMS在运行时关联指定的每个表以处理联结。这种处理非常耗费资源。

    10.2 高级联

    定义说明
    定义自联结(self-join)示例1,多次引用相同的表,被引用列在相同的表中;自然联结(natural join)示例2,不止一列出现在一个表中;外联结(outer join),包括没有关联行的行,包含左关联(left join)、右关联(right join)和全外关联(full outer join)
    说明自联结不会经常出现
    例1SELECT A.cust_id,A.cust_name,A.cust_contact FROM Customer A,Customer B WHERE A.cust_name=B.cust_name AND B.cust_contact=‘Jim Jones’
    例2SELECT C.* ,A.order_num,A.order_date,B.prod_id,B.quantity,B.item_price FROM Customers C,Orders A,OrderItems B WHERE C.cust_id=A.cust_id AND B.order_num=A.order_num and A.prod_id=‘RGAN01’

    10.3 带聚集函数的联结

    定义说明
    定义聚集函数用来汇总数据。
    例句SELECT Customers.cust_id COUNT(Orders.order_num) AS num_ord FROM Customers INNER JOIN Orders ON Customers.cust_id=Orders.cust_id GROUP BY Customers.cust_id;

    11 组合查询

    定义说明
    定义关键字UNION,组合两条语句。
    说明UNION必须有两条以上的SELECT语句组成,语句间用关键字UNION分隔;UNION中的每个查询必须包含相同的列、表达式或聚集函数(各个列不需要以相同的次序列出);列数据类型必须兼容;UNION ALL不会取消重复的行。
    例1SELECT cust_name,cust_contact,cust_email FROM Customers WHERE cust_state IN (‘IL’,‘IN’,‘MI’)
    UNION
    SELECT cust_name,cust_contact,cust_email FROM Customers WHERE cust_state=‘Fun4All’
    例2SELECT cust_name,cust_contact,cust_email FROM Customers WHERE cust_state IN (‘IL’,‘IN’,‘MI’)
    UNION ALL
    SELECT cust_name,cust_contact,cust_email FROM Customers WHERE cust_state=‘Fun4All’

    13 更新

    13.1 INSERT

    定义说明
    定义用来插入数据。
    说明INSERT通常只插入一行。要插入多行必须执行多条INSERT语句;INSERT SELECT 是个例外,它可以用一条INSERT插入多行,不管SELECT返回多少行,都被INSERT插入。
    说明支持从一个表复制到另一个表,但DB2不支持。见例4–
    格式INSERT INTO TABname1(COLUMN1,COLUMN2) VALUES (VALUES1,VALUES2)
    例1INSERT INTO Customers VALUES(‘100000006’,‘Toy Land’,‘123 Any Street’)
    例2INSERT INTO Customers(cust_id,cust_name,cust_address) VALUES(‘100000006’,‘Toy Land’,‘123 Any Street’)
    例3INSERT INTO Customers(cust_id,cust_name,cust_address) VALUES SELECT cust_id,cust_name,cust_address FROM CustNew
    例4SELECT * INTO CustCopy FROM Customers
    例5INSERT INTO tbl_userrole(ROLECODE,APPCODE,CREATOR,CREATETIME,USERCODE,ORGCODE,ORGTYPE,BATCHNO) select DISTINCT B.ROLECODE,B.APPCODE,A.USERCODE,B.CREATETIME,‘jcweihu’,‘100000’,1,1 from tbl_role B,TBL_SAFEASSIGN A where A.appcode=B.appcode AND B.ORGTYPE=‘Z’ and B.appcode in (‘ZJTZ’,‘ZHLY’,‘TMIS’,‘XTWH’,‘FXCP’,‘IECS’,‘ISYD’,‘INFO’,‘KJJC’,‘WHJC’,‘JCDC’,‘IMRZ’,‘KHPF’,‘WHAJ’,‘CFAS’,‘BKKH’,‘YGCG’,‘IDWJ’,‘CMIS’,‘CDWH’,‘EFMS’,‘JCFX’,‘JCGL’,‘RWDD’)

    13.2 UPDATE

    定义说明
    定义更新记录
    格式UPDATE TABname1 A SET A. COLUMN1=‘VALUES1’,A. COLUMN2=‘VALUES2’ WHERE 条件1
    or
    UPDATE TABname1 A SET (A. COLUMN1,A. COLUMN2)=(‘VALUES1’,‘VALUES2’) WHERE 条件1
    例1UPDATE Customers SET cust_email=‘safe@163.com’ WHERE cust_id=‘10000005’
    例2UPDATE Customers SET cust_contact=‘Sam Roberts’,cust_email=‘safe@163.com’ WHERE cust_id=‘10000005’
    例3update TBL_CODEBANK set (BASEMAINTAINTYPE,BASEEFFECTDATE,REPORTMAINTAINTYPE,REPORTEFFECTDATE,batchno)=(‘2’,‘2017-04-06 12:11:21’,‘2’,‘2017-04-06 12:11:21’,(SELECT BATCHNO FROM db2inst1.TBL_DATAFILE_MAKE_BATCHNO)) where bankcode In ( select bankcode from TBL_codebranch where BRANCHCODE in (‘532532034201’,‘533102035701’,‘532823041001’,‘532823041002’,‘532823041003’) )
    例4update (select * from TBL_BIZCHECK_INCOME where BATCHNO=‘975’ fetch first 310000 rows only ) set BATCHNO=‘979’
    实践update SYS_ADMITORGS a set a.ORGNAME=(select b.branchname from tbl_codebranch b where a.orgcode=b.BRANCHCODE and b.BRANCHNAME is not null and trim(b.branchname) <>‘’) where exists (select 1 from tbl_codebranch b where a.orgcode=b.BRANCHCODE and b.BRANCHNAME is not null and trim(b.branchname) <>‘’)

    13.3 DELETE

    定义说明
    定义删除记录
    例1DELETE FROM Customers WHERE cust_id=‘100000006’
    例2DELETE FROM TABname1 T where T.id in (SELECT A.ID FROM TABname2 A FETCH FIRST 10 ROWS ONLY

    13.4 truncate

    定义说明
    定义数据库清空数据表清理
    例1db2 truncate table tbname immediate — DB2命令行
    例2truncate table tbname immediate — DB2窗口程序
    例3truncate table tbname — 其他DBMS
  • 相关阅读:
    【C++】函数指针 ② ( 数组类型基本语法 | 数组语法 | 数组首元素地址 和 数组地址 | 定义数组类型 | 定义指针数组类型语法 | 直接定义指针数组类型变量语法 )
    HTML 基础知识
    linux开放端口命令
    设计模式- 策略模式(Strategy Pattern)结构|原理|优缺点|场景|示例
    了解一下,我是如何用Python在业余时间赚5千外快的
    mybatisPlus
    从零开始搭建React+TypeScript+webpack开发环境-集成antd ProComponents
    最强Java面试八股文秋招offer召唤术
    11-3 Iterator迭代器接口
    C++---多态
  • 原文地址:https://blog.csdn.net/tangcoolcole/article/details/130809817