【正文】
的關(guān)聯(lián)條件。 SELECT * FROM emp JOIN dept ON ( = )。 左(外)連接 left OUTER JOIN SELECT * FROM emp LEFT OUTER JOIN dept ON ( = )。 右(外)連接 right OUTER JOIN SELECT * FROM emp RIGHT OUTER JOIN dept ON ( = )。 全外連接 FULL OUTER JOIN 把兩張表沒(méi)有顯示的數(shù)據(jù)都顯示出來(lái)。 除了Oracle之外的數(shù)據(jù)庫(kù)都用SQL1999語(yǔ)法。 多表查詢(xún)的效率不高。大數(shù)據(jù)量會(huì)很慢,一般不這么用。2222 統(tǒng)計(jì)函數(shù)和分組查詢(xún):統(tǒng)計(jì)函數(shù):COUNT() AVG() MAX() MIN() SUM() 分組統(tǒng)計(jì):當(dāng)數(shù)據(jù)重疊的時(shí)候才有分組查詢(xún)語(yǔ)句。 想要分組用:GROUP BY 按照部門(mén)分組列出薪水等 SELECT DEPTNO, COUNT(*), SUM(SA) , AVG(SAL)FROM EMP group by deptno。 前面的DEPTNO, 最好不要去掉,否則就那張表而言就看不出按什么分的組了。 22 一旦出現(xiàn)分組后,就對(duì)語(yǔ)法產(chǎn)生新的限制:統(tǒng)計(jì)函數(shù)可以在沒(méi)有分組的情況下單獨(dú)使用,但是不能再出現(xiàn)其他字段。一旦出 現(xiàn)分組后,select后面。 22 Where子句主要是從全部數(shù)據(jù)中取出部分?jǐn)?shù)據(jù),是對(duì)group by之前的過(guò)濾。如果要對(duì)數(shù)據(jù)再次過(guò)濾就要用到HAVING 例如在group by之后的 過(guò)濾。22 顯示非銷(xiāo)售人員的工作名稱(chēng)以及從事同一工作的工資的總和,并滿(mǎn)足同一工作雇員的月工資總和大于5000,輸出結(jié)果按照月工資的合計(jì)升 序排序 SELECT JOB,SUM(SAL) FROM emp WHERE JOB!=39。SALESMAN39。 GROUP BY JOB HAVING SUM(SAL)5000。22 子查詢(xún):等于簡(jiǎn)單查詢(xún)+限定查詢(xún)+統(tǒng)計(jì)查詢(xún) 的綜合體。 在一個(gè)查詢(xún)語(yǔ)句中嵌套若干其他查詢(xún)22 Where子句:?jiǎn)涡袉瘟?、單行多列、多行單列? 多行單列:需要用到 IN ALL ANY IN: SELECT * FROM EMP WHERE SAL IN (SELECT SAL FROM EMP WHERE JOB=39。MANAGER39。) 。//因?yàn)镴OB=39。MANAGER39。的工資可能不是一種,所以前面不能用等號(hào) 用in Any比子查詢(xún)的返回值的最小值大SELECT * FROM EMP WHERE SALANY(SELECT SAL FROM EMP WHERE JOB=39。MANAGER39。) 。,最大值小SELECT * FROM EMP WHERE SALANY(SELECT SAL FROM EMP WHERE JOB=39。MANAGER39。) 。 ALL ALL比子查詢(xún)返回值的最大值大 SELECT * FROM emp WHERE sal ALL (SELECT sal FROM emp WHERE job = 39。MANAGER39。)。 ALL比子查詢(xún)返回值的最小值小 SELECT * FROM emp WHERE sal ALL (SELECT sal FROM emp WHERE job = 39。MANAGER39。)。2 FROM 返回值是多行多列 23 SELECT , FROM dept d ,(SELECT deptno,COUNT(empno) count,AVG(sal)avg FROM emp GROUP BY deptno) temp WHERE =(+)。23 數(shù)據(jù)庫(kù)的更新操作:主要指添加、刪除、修改 23 復(fù)制表的操作:CREATE TABLE MYEMP AS SELECT * FROM EMP。 顯示自己的表:SELECT * FROM MYEMP。23 增加數(shù)據(jù):INSERT INTO 表名(字段1,字段2....) VALUES(值1,值2.....) INSERT INTO MYEMP(EMPNO, ENAME, JOB, MGR, HIREDATE,SAL, COMM, DEPTNO)VALUES(8888,39。張三39。,39。清潔工 39。,7839,TO_DATE(39。201303339。,39。YYYYMMDD39。),300,322,23)。 23 修改:UPDATE 表名 SET ename=’李四’ where empno=8888。 UPDATE MYEMP SET ENAME=39。張三39。WHERE EMPNO=7369。 如果沒(méi)有where的話(huà)就會(huì)將所有的名字全部改為張三23 刪除:DELETE FROM 表名 where 條件 DELETE FROM MYEMP WHERE EMPNO=7369。 如果沒(méi)有where的話(huà)就會(huì)全部刪除。23 事物回滾:ROLLBACK23 事務(wù)提交:COMMIT23 如果某一個(gè)session在更新數(shù)據(jù)庫(kù)之后沒(méi)有提交事物Day 222 表的創(chuàng)建和管理: 對(duì)于數(shù)據(jù)庫(kù)而言每一張表都是一個(gè)數(shù)據(jù)庫(kù)對(duì)象,而數(shù)據(jù)庫(kù)對(duì)象指的就是DDL定義的所有操作對(duì)象。例如:表、試圖、引、 序列、約束、等,都屬于對(duì)象的操作。 24 所以表的建立就是對(duì)象的建立,而對(duì)對(duì)象的操作主要分為以下三類(lèi)語(yǔ)法:創(chuàng)建對(duì)象 CREATE 刪除對(duì)象DROP 修改對(duì)象ALTER24 表是由:表名、字段名、類(lèi)型24 常用數(shù)據(jù)字段:每一張表都是由若干字段組成而每一個(gè)字段都有其對(duì)應(yīng)的數(shù)據(jù)類(lèi)型24編號(hào)數(shù)據(jù)類(lèi)型關(guān)鍵字描述1字符串Varchar2(n)N表示字符串的長(zhǎng)度2整數(shù)Number(n)N表示n位數(shù)3小數(shù)Number(n,m)M表示小數(shù)位數(shù),nm表示整數(shù)位數(shù)4日期date存放日期5大文本clob存放大量文本(4g)6大對(duì)象blob存放的是二進(jìn)制數(shù)據(jù)24 前五個(gè)較常用,最后一個(gè)怎么用。24 創(chuàng)建表:CREATE TABLE 表名{ }24 例子:CREATE TABLE person( name VARCHAR2(50) DEFAULT 39。ERFGF39。, age NUMBER(3), birthday DATE DEFAULT SYSDATE, content CLOB )。24復(fù)制表 CREATE TABLE emp20 AS select * from emp WHERE deptno=20。 復(fù)制出的表名 被復(fù)制的表24表的重命名: RENAME 舊表名 TO 新表名250、表的截?cái)啵合胍獜氐揍尫乓粋€(gè)表格資源,就要用截?cái)唷RUNCATE TABLE 表名 執(zhí)行這一步后就算是rollback也回不去了。25 表的刪除: drop table 表名25 表的修改: 增加列: alter table 表名 add(birthday DATE DEFAULT SYSDATE, content CLOB ) 列修改: alter table 表名 RENAME column 舊列名 TO 新列名 改類(lèi)型: alter table 表名 modify(列名,數(shù)據(jù)類(lèi)型 [default 默認(rèn)值],列名,數(shù) 據(jù)類(lèi)型 [default 默認(rèn)值]) 25 約束:目的是保證表中的數(shù)據(jù)的合法性。一般可以分為五種:非空約束、唯一約束、主鍵約束、檢查約束、外鍵約束。25 非空約束:not null 例子:CREATE TABLE person( name VARCHAR2(50) DEFAULT 39。ERFGF39。, age NUMBER(3), birthday DATE DEFAULT SYSDATE not null, content CLOB not null )。25 唯一約束:UNIQUE 和null的用法基本一樣,目的是使得某一項(xiàng)數(shù)據(jù)在表中只能出現(xiàn)一次。CONSTRAINT constraint CREATE TABLE person( birthday DATE DEFAULT SYSDATE unique, content CLOB )。 //第二種寫(xiě)法的優(yōu)點(diǎn)在于當(dāng)你輸錯(cuò)的時(shí)候就可以知道是在哪導(dǎo)致錯(cuò)誤的 (會(huì)返回設(shè)置了唯一約束的地方) CREATE TABLE person( birthday DATE DEFAULT SYSDATE , content CLOB, CONSTRAINT UK_birthday unique(birthday) )。 25 主鍵約束:primary key 等于非空約束加唯一約束 CREATE TABLE person( birthday DATE DEFAULT SYSDATE primary key , content CLOB )。 //第二種寫(xiě)法的優(yōu)點(diǎn)在于當(dāng)你輸錯(cuò)的時(shí)候就可以知道是在哪導(dǎo)致錯(cuò)誤的 (會(huì)返回設(shè)置了主鍵約束的地方) CREATE TABLE person( birthday DATE DEFAULT SYSDATE , content CLOB, CONSTRAINT PK_birthday primary