0
点赞
收藏
分享

微信扫一扫

桶排序 — 计数排序和基数排序

zhaoxj0217 2023-05-31 阅读 27
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
举报

相关推荐

0 条评论