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) |
说明 | 自联结不会经常出现 |
例1 | SELECT 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’ |
例2 | SELECT 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不会取消重复的行。 |
例1 | SELECT 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’ |
例2 | SELECT 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) |
例1 | INSERT INTO Customers VALUES(‘100000006’,‘Toy Land’,‘123 Any Street’) |
例2 | INSERT INTO Customers(cust_id,cust_name,cust_address) VALUES(‘100000006’,‘Toy Land’,‘123 Any Street’) |
例3 | INSERT INTO Customers(cust_id,cust_name,cust_address) VALUES SELECT cust_id,cust_name,cust_address FROM CustNew |
例4 | SELECT * INTO CustCopy FROM Customers |
例5 | INSERT 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 |
例1 | UPDATE Customers SET cust_email=‘safe@163.com’ WHERE cust_id=‘10000005’ |
例2 | UPDATE Customers SET cust_contact=‘Sam Roberts’,cust_email=‘safe@163.com’ WHERE cust_id=‘10000005’ |
例3 | update 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’) ) |
例4 | update (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
定义 | 说明 |
---|---|
定义 | 删除记录 |
例1 | DELETE FROM Customers WHERE cust_id=‘100000006’ |
例2 | DELETE FROM TABname1 T where T.id in (SELECT A.ID FROM TABname2 A FETCH FIRST 10 ROWS ONLY |
13.4 truncate
定义 | 说明 |
---|---|
定义 | 数据库清空数据表清理 |
例1 | db2 truncate table tbname immediate — DB2命令行 |
例2 | truncate table tbname immediate — DB2窗口程序 |
例3 | truncate table tbname — 其他DBMS |
文章来源地址https://www.toymoban.com/news/detail-457641.html
文章来源:https://www.toymoban.com/news/detail-457641.html
到了这里,关于<SQL>《SQL命令(含例句)精心整理版(3)》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!