资源描述:
《oracle9i第5章sql基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章SQL基础SELECT语句SELECT的简单语法:SELECT[DISTINCT
2、ALL]{*
3、column1[,column2]...}FROM{table_1
4、(subquery)}[alias][,{table_2
5、(subquery)}[alias]]...[WHEREcondition][CONNECTBYcondition[STARTWITHcondition][GROUPBYexpn][HAVINGexpn][{UNION[ALL]
6、INTERSECT
7、MINUS}SELECT...][ORDERBY[expn][AS
8、C
9、DESC][FORUPDATE[OF[user.]table
10、view]column][NOWAIT]简单SELECT查询selectdeptno,dname,locfromdept;selectdeptno,dname,locfromdeptorderbydname;select*fromdeptorderbydeptnodesc,dname;select*fromdeptorderbydname,deptnoasc;select*fromdeptwherednamelike'%SA%'orderbydeptnodesc,dname
11、;注意:在SQL语句中,引用的字符串必须在单引号内,而不是双引号。如果需要在字符串内放“‘”号,应该写两次。比如语句“select*fromdeptwheredname='SA''ES'”中的“SA''ES”字符就是如此。要注意空值的表示方法是ISNULL或ISNOTNULL。在Oracle中使用‘%’来匹配任何字符串使用‘_’来匹配任何字符。汇总数据selectcount(*)fromdept;selectdeptno,count(*)fromempgroupbydeptno;将返回工资总额小于10000的部门和实际工资总额select
12、deptno,sum(sal)fromempgroupbydeptnohavingsum(sal)<10000;selectcount(distinctdeptno)fromemp;内连接selecta.empno,a.ename,a.job,b.dnamefromempa,deptbwherea.deptno=b.deptno;外连接外部关联关联了两个表并使得即使第二个表没有与第一个表符合的记录也能返回结果。selectdept.deptno,emp.ename,bonus.sal,bonus.commfromemp,dept,bonu
13、swhereemp.deptno(+)=dept.deptnoandbonus.ename(+)=emp.ename;注意:表可以外部连接到至多一个其它的表Oracle是使用的是’(+)’号作为外连接标识交叉连接交叉连接不带WHERE子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。在表中有数据的情况下:selectycit.*,ycit1.*fromycit,ycit1;selectdeptno,enamefromempwheredeptn
14、oin(selectdeptnofromdept);selectdeptno,enamefromempawhereexists(selectlocfromdeptbwherea.deptno=b.deptno);连接查询比如有两张表emp和log_emp,其中emp中保存的是现行编制员工的编号和姓名,log_emp中保存着已经退休员工的编号和姓名。如果要查询所有员工信息,可以执行下面的操作:selectempno,enamefromempunionselectempno,enamefromlog_emp;使用空值空值是三值逻辑,以下列语句
15、为例:select*fromempwheredeptno=10anddeptno<>10等同于select*fromempwheredeptnoisnotnull插入新数据向表中插入行的一般用法:insertintotablename(column1,column2,column3,……)values(value1,value2,value3,……);注意:只要值的列表和表的列名精确匹配,就可以省略列全部列表。如,如果向dept表中增加一个新的部门,可以通过下面语句:insertintodept(deptno,dname,loc)valu
16、es(50,'System','Nanjing');插入一个查询结果insertintotablename(column1,column2,column3,……)subquery;insert