前言 cross join ,是笛卡爾積;nature join 是自然連接。 正文 內(nèi)外連接 inner join inner join 的inner可以省略。 內(nèi)連接 在一個表中能夠找到在另一個表中與之對應(yīng)的記錄,來組成新的記錄顯示出來,舍棄表中在另一個表中沒有對應(yīng)記錄的記錄。 等值連接 一
cross join ,是笛卡爾積;nature join 是自然連接。
inner join 的inner可以省略。
在一個表中能夠找到在另一個表中與之對應(yīng)的記錄,來組成新的記錄顯示出來,舍棄表中在另一個表中沒有對應(yīng)記錄的記錄。
一個表中的某個字段是另一個表的外鍵
例如。emp表和dept表存在多對一的關(guān)聯(lián)關(guān)系,由外鍵字段deptno來維護(hù),即emp表來主動維護(hù)這一關(guān)系。
between and 來實現(xiàn)非等值連接;
select e.ename,e.sal,s.grade from emp e join salgrades on e.sal between s.losal and s.hisal;
表中的字段之間尋在引用關(guān)系,通過得同一個表取不同別名來實現(xiàn)自身連接。
select e.empno,m.name from emp e join emp m on m.empno=e.mgr;
外連接【陪陪時會將驅(qū)動表中所有記錄顯示
左外連接會將主表對應(yīng)的所有信息顯示,從表與之匹配的記錄顯示。
select * from emp join dept on emp.deptno=dept.deptno(+); --加號在join 右邊的表的屬性上位左連接
select * from emp left join dept on emp.deptno=dept.deptno;
加號在join 左邊的表的屬性上位右連接
將兩表中所有匹配和不匹配記錄顯示出來。
多行函數(shù),輸入一組記錄,輸出一行記錄。max、min、avg、sum和count函數(shù)。
1.如果在select之后有某個字段名稱,那么此字段必須作為分組的條件之一。
select deptno,max(sal) from emp group by deptno;--在分組查詢中,select 之后除了組函數(shù)以外,查詢的字段名稱和個數(shù)最好和group by 之后的字段名稱和個數(shù)一致。
2.過濾分組查詢可以使用having關(guān)鍵字,having用于過濾分組之后的結(jié)果
select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;--having不能單獨使用,它必須出現(xiàn)在group by 之后。
3.where 不可接分組函數(shù)
4.分組查詢的執(zhí)行順序
先執(zhí)行from,在執(zhí)行where,或在分組,最好才執(zhí)行select。
查詢中含有查詢
查詢結(jié)果是一行一列
單行子查詢可以使用比較運算符(<,>,=,!=,<>)
select enamel ,sal rom emp where sal>(select sal from emp where ename='SOTT');
子查詢的結(jié)果是一行多列
select enamel,sal。deptno from emp where (deptno,sal) in(select deptno,max(sal) from emp group by deptno having deptno=10);
子查詢的結(jié)果是多行一列
select * from emp where deptno in(select deptno from emp where job='CLERK');
注:
=any 跟in的效果一樣,匹配子查詢的所有值
>any 大于最小的
子查詢的結(jié)果是多行多列
select enamel,sal。deptno from emp where (deptno,sal) in(select deptno,max(sal) from emp group by deptno );
子查詢和主查詢進(jìn)行關(guān)聯(lián)查詢
select * from emp out where sal>(select avg(sal) from emp where out.deptno=deptno group by deptno);--先將主表out的第一條記錄的deptno傳到子查詢,并將查詢結(jié)果返回到主查詢,主查詢將符合條件的記錄放入到結(jié)果集中,依次循環(huán)該過程,直到循環(huán)到主表的最后一條記錄。
例子
select * from emp out where empno in(select mgr from emp);;--查詢出所有的領(lǐng)導(dǎo)
select * from emp out where exists(select 'x' from emp where mgr=out.empno);--exists,假如存在,子查返回的是true,并不關(guān)注子查詢返回的具體的結(jié)果。
集合查詢中的字段個數(shù)和類型要一致,這稱為select的同構(gòu)。
select job from emp deptno=10 union all select job from emp deptno=20;
注:
union all 并集,并且不去除重復(fù)
union 并集,去除重復(fù)
intersect 交集
minus 差集
number 數(shù)字類型
varchar2字符串類型;可變長
char 字符串類型,固定長度,占用空間不變,執(zhí)行效率高
date日期類型
clob 字符型大數(shù)據(jù)類型
blob 字節(jié)型大數(shù)據(jù)類型
create table 表名(字段名 數(shù)據(jù)類型 約束,字段名 數(shù)據(jù)類型 約束);
復(fù)制表只能復(fù)制表結(jié)構(gòu)和數(shù)據(jù),復(fù)制不了約束。
create table 表名1 as select * from emp where empno=10000;---如果where條件不成立,查不到任何東西時,該語句只復(fù)制了表結(jié)構(gòu);
注:user_constraints 存儲當(dāng)前用戶的相關(guān)信息的數(shù)據(jù)字典
drop table 表名
rename 舊表名 to 新表名
alter table 表名 rename column 舊字段名 to 新字段名;
修改字段類型的前提是當(dāng)前的字段值是空的,即修改的列為空。
alter table 表名 modify(字段名稱 字段類型(長度));
alter table 表名 add(字段名稱 字段類型(長度));
alter table 表名 drop (字段名稱);
alter table 表名 drop column(字段名稱);
刪除表中的所有記錄,效率比delete更高
字段的值與表中字段的類型和長度要匹配
insert into 表名(字段名稱1,字段名稱2) value(字段1的值,字段2的值);
1.一次插入多條記錄
insert into emp(empno,ename) select empno,ename from emp;
update 表名 set 被修改的字段名1=新值,被被修改的字段名2=新值
delete 【from 】 表名;
數(shù)據(jù)庫運行的最小單元,是一系列的數(shù)據(jù)操作,是數(shù)據(jù)庫應(yīng)用程序的基本邏輯單元。事務(wù)是恢復(fù)和并發(fā)控制的基本單元。
1.在sql中,定義事務(wù)的預(yù)計有3條
begin transaction
commit
rollback
通常事務(wù)以begin transaction 開始,以commit或rollback結(jié)束。
注:
1.rollback 回滾事務(wù),事務(wù)恢復(fù)到上一個事務(wù)結(jié)束之前的狀態(tài)。
2.dml執(zhí)行會開啟一個事務(wù)。
3.commit 提交事務(wù),當(dāng)前操作會執(zhí)行應(yīng)用到數(shù)據(jù)庫
4.commit和rollback會顯式的提交事務(wù)
5.savepoint 事務(wù)點名;設(shè)置事務(wù)點
rollback to 事務(wù)點名;--在事務(wù)點之后的其他dml操作都會被取消
6.ddl語句隱式的提交事務(wù)
事務(wù)是數(shù)據(jù)庫的邏輯工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。
事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。
一個事務(wù)的執(zhí)行不能被其他事務(wù)干撓。
也稱永久性,值一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該使永久性的。
1.表和行級別的鎖不會釋放
2.當(dāng)前會話的操作在其他會話中查不到
3.當(dāng)前事務(wù)可以回滾
4.當(dāng)前事務(wù)回滾段的資源不會釋放
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com