Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 64 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
64
Dung lượng
1,19 MB
Nội dung
1 NgDucThuan-@2004-2005-DHTS Cơ Cơ sơ sơ û û d d ư ư õ õ lie lie ä ä u u 1 1 Ngôn Ngôn ng ng ư ư õ õ SQL SQL NGUYỄN ĐỨC THUẦN BộMônHệThốngThôngTin ĐH ThuỷSản NgDucThuan-@2004-2005-DHTS Ta Ta ø ø i i lie lie ä ä u u tham tham kha kha û û o o * SQL & PL/SQL Oracle @ * RELATIONAL DATABASES and SQL PROGRAMMING Christopher Allen Simon Chatwin Catherine A. Creary * Database System Design/Building I JIPDEC * Giáotrìnhlýthuyết& thựchànhORACLE TrầnTiếnDũng(Chủbiên) NgDucThuan-@2004-2005-DHTS NGÔN NGỮ SQL (Oracle) NgDucThuan-@2004-2005-DHTS Giơ Giơ ù ù i i thie thie ä ä u u SQL SQL NgônngữSQL ? SQL ( Structure Query Language) làngônngữtruyvấncó cấutrúc. SQL là1 ngônngữchuẩnđểthaotáctrêndữliệu lưutrữtrongCSDL quanhệ. SQL baogồm3 ngônngữsau: -Ngônngữđònhnghóadữliệu(DDL) Data Definition Language Đònhnghóa1 đốitượngCSDL như1 tênTable, kiểudữliệu, -Ngônngữđiềukhiểndữliệu(DCL) Data Control Language ĐiềukhiểnquyềntruyxuấtCSDL củangườisửdụng -Ngônngữthaotácdữliệu(DML) Data Manipulation Language ThaotácCSDL bằngcách: Chọn(tìmkiếm), Cậpnhật, Xoádữliệu… NgDucThuan-@2004-2005-DHTS Ngôn Ngôn ng ng ư ư õ õ SQL ( SQL ( tt tt ) ) SQL cóthểphânthành2 mứctheoquyềntruyxuất: Select <têntrường> From <têntable> Insert into <têntable> < dsgiátrò> Update <têntable> SET tên_trg=dliệu Delete from <têntable> Where <đk> DML Ngườisửdụng Grant <tênquyền> to <tênngườisd> DCL Create table <têntable> Drop table <têntable> Alter table <têntable> DDL QuảntròCSDL CáclệnhmẫuKiểuSQLMứcngườis.dụng NgDucThuan-@2004-2005-DHTS Ca Ca ù ù c c kie kie å å u u d d ư ư õ õ lie lie ä ä u u trong trong SQL (oracle) SQL (oracle) Chứadữliệunhòphânđến2 gigabyteLONG RAW KiểudữliệuhỗtrợmãhàngảokếthợpmỗibảngROWID ChứadữliệuTEXT đến2 gigabyteLONG Chứadữliệunhòphânđến2000 byteRAW Chứadữliệungày(‘dd-MMM-yy’)DATE ChứadữliệusốNUMBER(p[,s]) ChứachuỗiTEXT đến255 byteCHAR(size) ChứachuỗiTEXT đến2000 byteVARCHAR2(size) ÝnghiãTênkiểu Ng Duc Thuan 2 NgDucThuan-@2004-2005-DHTS Chu Chu ù ù y y ù ù : : ?Char(n) ≠ varchar2(n) ? Number(n) ? Number(n,m) ? Date : khuôndạng‘dd-MMM-yy’, lưugiátròngày thángdướidạngsốthậpphân( tínhtừngày 31/12/4713 trướcCN) ? Trong1 sốtàiliệucònkiểu: CLOB: dữliệukýtựtốiđa4 GB BLOB: dữliệunhòphântốiđa4 GB BFILE:dữliệunhòphântốiđa4 GB, lưutrữởthiết bònhớngoài NgDucThuan-@2004-2005-DHTS Cáiphútban đầulưuluyếnấy Nghìnnămchưadễmấyaiquên NgDucThuan-@2004-2005-DHTS Ngôn Ngôn ng ng ư ư õ õ đ đ ònh ònh ngh ngh ó ó a a d d ư ư õ õ lie lie ä ä u u (DDL) (DDL) Ta Ta ï ï o o Table & Table & Qua Qua û û n n ly ly ù ù Table Table NgDucThuan-@2004-2005-DHTS * * Ta Ta ï ï o o ca ca á á u u tru tru ù ù c c Table Table TạocấutrúcTable: Create table <têntable> (<tên_cột_1 kiểu_dliệu_1>[,<tên_cột_i kiểu_dliệu_i> ]); Vídụ: create table vidu( EMP_IDnumber (5) PRIMARY KEY, Emp_Namevarchar2(30), Emp_Addressvarchar2(60), Emp_birthdate); NgDucThuan-@2004-2005-DHTS * * Ta Ta ï ï o o ca ca á á u u tru tru ù ù c c Table Table XemcácTable đãtạolập: Select * from user_tables; NgDucThuan-@2004-2005-DHTS * * Ta Ta ï ï o o ca ca á á u u tru tru ù ù c c Table Table l Qui đònhtênTable: - Phảibắtđầubởi1 chữcái - Chỉchứacáckýtự: A-Z, a-z, 0-9, _,$, # - KhôngtrùngvớitênTable đãcó - KhônglàtừkhoácủaOracle Ng Duc Thuan 3 NgDucThuan-@2004-2005-DHTS Ta Ta ï ï o o ca ca á á u u tru tru ù ù c c Table Table TạocấutrúcTable bằngcáchsửdụng Subquery: Create table <têntable> as SUBquery Vídụ: create table viduas select empno, ename, sal*12 From Emp Where deptno= 30; NgDucThuan-@2004-2005-DHTS * * Thêm Thêm 1 1 co co ä ä t t va va ø ø o o ca ca á á u u tru tru ù ù c c Table Table Thêm1 cộtvàocấutrúcTable Alter table <têntable> ADD (<tên_cộtkiểu_dữ_liệu_cột>) Vídụ: Alter table VIDU Add (Job VARCHAR2(30)); job Emp_birth Emp_Address Emp_Name EMP_ID NgDucThuan-@2004-2005-DHTS * * Hie Hie ä ä u u ch ch ỉ ỉ nh nh 1 1 co co ä ä t t Cóthểthaổikiểudữliệu, kíchthước, vàgiátrò mặcđònh1 cột: Alter table <têntable> MODIFY (<tên_cột kiểu_dữ_liệu_cột>); Vídụ: Alter table VIDU MODIFY (Emp_Name VARCHAR2(15)); NgDucThuan-@2004-2005-DHTS * * Xoa Xoa ù ù 1 1 co co ä ä t t Cóthểxoácáccột: Alter table <têntable> DROP (<tên_cột>); Vídụ: Alter table VIDU DROP Emp_Name; NgDucThuan-@2004-2005-DHTS * * Thie Thie á á t t la la ä ä p p mu mu ï ï c c cho cho ï ï n n UNUSED UNUSED O SửdụngmụcchọnSET UNUSED đểđánh dấunhiềucột(khôngchosửdụng). O SửdụngmụcchọnDROP UNUSED COLUMNS đểxoácáccộtđãđánhdấu bởiUNUSED Alter table <têntable> SET UNUSED (<tên_cột>); Alter table <têntable> DROP UNUSED COLUMNS; NgDucThuan-@2004-2005-DHTS * * Ca Ca é é t t ( ( Truncating)bơ Truncating)bơ ù ù t t Table Table LệnhTRUNCATE TABLE: - Xoátấtcảcácdòngtừ1 Table - XoáKhônggianlưutrữđượcdùngbởi Table Truncate table <têntable> ; * Khôngthểroll back cácdòngsaukhixoá Ng Duc Thuan 4 NgDucThuan-@2004-2005-DHTS * * The The å å hie hie ä ä n n ca ca ù ù c c ra ra ø ø ng ng buo buo ä ä c c ( ( contraints contraints ) ) l Cácràngbuộclàgì? – Làcácqui tắccóhiệulựcởmứcTable – Ràngbuộcngăncảnviệcxoá1 Table nếucó sựphụthuộc – CácràngbuộcsaulàcóhiệulựctrongOracle Ràngbuộcđượctạora: -KhitạoTable -SaukhiTable đượctạo NgDucThuan-@2004-2005-DHTS * * Đ Đ ònh ònh ngh ngh ó ó a a ca ca ù ù c c ra ra ø ø ng ng buo buo ä ä c c CREATE TABLE <tên_table> ( <têncột> <Kiểudữliệu> [gtròmặcđònh] [<ràng_buộc_cột>], ……… [<ràng_buộc_Table>][….]; Vídụ: create table vidu( EMP_IDnumber (5), Emp_Namevarchar2(30) NOT NULL, Emp_Addressvarchar2(60), Emp_birthdate, CONSTRAINT EMP_ID_PK PRIMARY KEY (EMP_ID)); NgDucThuan-@2004-2005-DHTS * * Đ Đ ònh ònh ngh ngh ó ó a a ca ca ù ù c c ra ra ø ø ng ng buo buo ä ä c c l Có2 mức Mứcràngbuộccột: <tên_cột> [CONSTRAINT constraint_name] <kiểuràngbuộc> MứcràngbuộcTable: <tên_cột>,… [CONSTRAINT constraint_name <kiểuràngbuộc> (<tên_cột>,… ) NgDucThuan-@2004-2005-DHTS * * ra ra ø ø ng ng buo buo ä ä c c NOT NULL NOT NULL l Đảmbảocộtphảichứùagiátrò, đnởmức cột Vídụ: create table vidu( EMP_IDnumber (5), Emp_Namevarchar2(30) NOT NULL, Emp_Addressvarchar2(60), Emp_birthdate); NgDucThuan-@2004-2005-DHTS * * ra ra ø ø ng ng buo buo ä ä c c UNIQUE KEY UNIQUE KEY BostonOperations40 ChicagoSales30 DallasResearch20 New YorkAccounting10 LOCDNAMEDEPTNO Boston60 DetroitSales50 Khôngchophép (TênSales đãcó) Chophép NgDucThuan-@2004-2005-DHTS * * ra ra ø ø ng ng buo buo ä ä c c UNIQUE KEY UNIQUE KEY ĐònhnghóacóthểtrênmứcTable hoặctrênmức Cột Vídụ: create table Dept( deptnonumber (2), dnamevarchar2(14), Locvarchar2(13), CONSTRAINT dept_dname_uk UNIQUE (dname)); Ng Duc Thuan 5 NgDucThuan-@2004-2005-DHTS * * ra ra ø ø ng ng buo buo ä ä c c PRIMARY KEY PRIMARY KEY BostonOperations40 ChicagoSales30 DallasResearch20 New YorkAccounting10 LOCDNAMEDEPTNO Boston60 DetroitSales20 Khôngchophép (DEPTNO 20 đãcó) KhôngChophép (DEPTNO rỗng) NgDucThuan-@2004-2005-DHTS * * ra ra ø ø ng ng buo buo ä ä c c PRIMARY KEY PRIMARY KEY ĐònhnghóacóthểtrênmứcTable hoặctrênmức Cột Vídụ: create table Dept( deptnonumber (2), dnamevarchar2(14), Locvarchar2(13), CONSTRAINT dept_dname_uk UNIQUE (dname), CONSTRAINT dept_deptno_pk PRIMARY KEY (deptno)); NgDucThuan-@2004-2005-DHTS * * ra ra ø ø ng ng buo buo ä ä c c FOREIGN KEY FOREIGN KEY DallasResearch20 … New YorkAccounting10 LOCDNAMEDEPTNO 30MANAGERBLAKE7698 10PRESIDENTKING7839 DEPTNOCOMM…JOBENAMEEMPNO DEPT PRIMARY KEY EMP FOREIGN KEY 20200MANAGERFORD7571 9200MANAGERFORD2571 Khôngcho phép (DEPTNO 9 chưacótrong DEPT Chophép NgDucThuan-@2004-2005-DHTS * * ra ra ø ø ng ng buo buo ä ä c c FOREIGN KEY FOREIGN KEY ĐònhnghóacóthểtrênmứcTable hoặctrênmức cột Vídụ: create table emp( empnonumber (4), enamevarchar2(10) NOT NULL, … deptnonumber(7,2) NOT NULL, CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES dept (deptno)); NgDucThuan-@2004-2005-DHTS * * ra ra ø ø ng ng buo buo ä ä c c FOREIGN KEY FOREIGN KEY l FOREIGN KEY : Đònhnghóatrêncộttại Table con, nơithiếtlậpmứcràngbuộc l REFERENCES : ĐònhdanhTable, cột trongTable mẹ. l ON DELETE CASCADE : Khixoádữliệu trongTable mẹthìdữliệutrongTable con tươngứngcũngbòxoá. NgDucThuan-@2004-2005-DHTS * * ra ra ø ø ng ng buo buo ä ä c c CHECK CHECK l Đònh nghóa1 điềukiệnmàmỗidòngphảithoả l Cácbiểuthứckhôngchophép: -ThamchiếếnCURRVAL, NEXTVAL, LEVEL, vàROWNUM -GọiđếnSYSDATE, UID, USER vàcáchàmUSERENV - Truyvấnthamkhảếncácgiátròtrongcáchàngkhác …,deptnoNUMBER(2), CONSTRAINT emp_deptno_ck CHECK (DEPTNO BETWEEN 10 AND 99)… Ng Duc Thuan 6 NgDucThuan-@2004-2005-DHTS * * thêm thêm 1 1 ra ra ø ø ng ng buo buo ä ä c c ALTER TABLE <tên_Table> ADD CONSTRAINT <ràngbuộc> kiểu(tên_cột); ?Thêm hoặcxoá, nhưngkhônghiệuchỉnhđược1 ràngbuộc ?Thêm 1 ràngbuộcNOT NULL bằngcáchsửdụng mệnhđề MODIFY NgDucThuan-@2004-2005-DHTS * * xoa xoa ù ù 1 1 ra ra ø ø ng ng buo buo ä ä c c ALTER TABLE <tên_Table> DROP CONSTRAINT <tên_ràng_buôc>; Vídụ: ALTER TABLE emp DROP CONSTRAINT emp_mgr_fk; NgDucThuan-@2004-2005-DHTS * * vô vô hie hie ä ä u u hoa hoa ù ù ra ra ø ø ng ng buo buo ä ä c c ALTER TABLE <tên_Table> DISABLE CONSTRAINT <tên_ràng_buộc>; * CóthểsửdụngmụcchọnCASCADE đểvôhiệuhoácác ràngbuộctoànvẹnphụthuộc Vídụ: ALTER TABLE <tên_Table> DISABLE CONSTRAINT emp_mgr_fk CASCADE; NgDucThuan-@2004-2005-DHTS * * k k í í ch ch hoa hoa ï ï t t ra ra ø ø ng ng buo buo ä ä c c * Kíchhoạtcácràngbuộctoànvẹnđãvôhiệuhoá trướcđóbằngDISABLE ALTER TABLE <tên_Table> ENABLE CONSTRAINT<tên_ràng_buộc>; * MộtchỉmụcUNIQUE hay PRIMARY KEY tự độngđượctạolậpnếukíchhoạtràngbuộc UNIQUE hay PRIMARY KEY NgDucThuan-@2004-2005-DHTS * * ra ra ø ø ng ng buo buo ä ä c c tha tha ù ù c c n n ư ư ơ ơ ù ù c c ? SửdụngmệnhđềCASCADE CONSTRAINT theosaumệnhđềDROP COLUMN ? MệnhđềCASCADE CONSTRAINT xoátấtcả cácràngbuộctoànvẹnthamchiếuliênquan đếncộtbòxoá. NgDucThuan-@2004-2005-DHTS * * Xem Xem ca ca ù ù c c ra ra ø ø ng ng buo buo ä ä c c ? TruyvấnTable USER_CONSTRAINTS để xemtấtcảcácđònhnghóavàtêncácràngbuộc. SELECT constraint_name, constraint_type, search_condition FROM USER_CONSTRAINTS; Ng Duc Thuan 7 NgDucThuan-@2004-2005-DHTS * * Xoa Xoa ù ù Table Table Drop Table <tênTable>; Vídụ: Drop table vidu; NgDucThuan-@2004-2005-DHTS Ngôn Ngôn ng ng ư ư õ õ thao thao ta ta ù ù c c d d ư ư õ õ lie lie ä ä u u (DML) (DML) Thao Thao ta ta ù ù c c trên trên Table Table NgDucThuan-@2004-2005-DHTS * * Che Che ø ø n n d d ư ư õ õ lie lie ä ä u u INSERT INTO <Têntable> (<DS Cột>) VALUES (< DS GIÁ TRỊ>); * Chèndòngdữliệu Vídụ: Insert into Don_vi (mdv, ten_dv) values (’01’,’Day la 1 vi du’); -Giátròchuỗikýtựhay ngàyphảiđặttrong2 dấunháy NgDucThuan-@2004-2005-DHTS * * Che Che ø ø n n d d ư ư õ õ lie lie ä ä u u ChèncácdòngvớigiátròNull * Phươngphápkhôngtườngminh: Bỏqua cộttrong danhsáchcột Vídụ: Insert into Don_vi(mdv) values (’01’); * Phươngpháptườngminh: SửdụngtừkhoáNULL Vídụ: Insert into Don_vi(mdv,Ten_don_vi) values (’01’, null); NgDucThuan-@2004-2005-DHTS * * Che Che ø ø n n d d ư ư õ õ lie lie ä ä u u : : Ta Ta ï ï o o 1 1 kòch kòch ba ba û û n n vơ vơ ù ù i i ca ca ù ù c c da da á á u u nha nha é é c c tuy tuy ø ø bie bie á á n n * ACCEPT lưugiátròvào1 biến * PROMT hiểnthòvănbảntuỳýcủabạn Vídụ: ACCEPT msnv_id PROMPT ‘Duavaoma so nhanvien: ’ ACCEPT Ten_nv_id PROMPT ‘Duavaoten nhanvien: ’ Insert into Nhan_vien (msnv,Ten_nv, ngayhd) values (msnv_id, Ten_nv_id,SYSDATE); NgDucThuan-@2004-2005-DHTS * Sao * Sao che che ù ù p p ca ca ù ù c c do do ø ø ng ng d d ư ư õ õ lie lie ä ä u u t t ừ ừ 1 1 Table Table kha kha ù ù c c ViếtcâulệnhINSERT vớiSubquery Vídụ: Insert into Nhan_vien(msnv,Ten_nv, ngayhd) Select ms_nv,Ten_nv1, ngayhd From NV Where job = ‘thaygiao’; * KhôngdùngtừkhoáVALUES Ng Duc Thuan 8 NgDucThuan-@2004-2005-DHTS * * Thay Thay đ đ o o å å i i d d ư ư õ õ lie lie ä ä u u t t ừ ừ 1 Table 1 Table CâulệnhUPDATE Tusửacácdòngđãcó UPDATE <tênTable> SET <cột> = <giátrò> [, <cột> = <giátrò> , ] [where <điềukiện>]; Vídụ: Update Nhan_vien SET ngayhd= ’12-DEC-04’ Where msnv= ‘12345’; NgDucThuan-@2004-2005-DHTS * * Ca Ca ä ä p p nha nha ä ä t t vơ vơ ù ù i i subquery subquery nhie nhie à à u u co co ä ä t t Vídụ: Update Nhan_vien SET (mpx,pcap) = (Select mpx,pcap From Nhan_vien Where msnv=‘7899’) Where msnv= ‘12345’; NgDucThuan-@2004-2005-DHTS * * Ca Ca ä ä p p nha nha ä ä t t ca ca ù ù c c do do ø ø ng ng d d ự ự a a trên trên cơ cơ sơ sơ û û ø ø 1 Table 1 Table kha kha ù ù c c *Sửdụngtruyvấncon trongcâulệnhUPDATE đểcập nhậtcáchàngtrong1 Table dựatrêncơsởcácgiátròtừ 1 Table khác UPPDATE employee SETdeptno= (SELECT deptno FROMemp WHEREempno= 7788) WHERE job =(SELECT job FROMemp WHEREempno= 7788); NgDucThuan-@2004-2005-DHTS Ca Ca ä ä p p nha nha ä ä t t ca ca ù ù c c do do ø ø ng ng Lỗi Lỗi ra ra ø ø ng ng buo buo ä ä c c toa toa ø ø n n ve ve ï ï n n UPPDATEemp SETdeptno= 55 WHEREdeptno= 10; UPPDATEemp * ERROR at line 1: ORA-02291: integrity constraint (USR.EMP_DEPTNO_FK) Violate – parent key not found M a õ p h a ân x ư ơ û n g s o á 5 5 k h o ân g t o à n t a ï i NgDucThuan-@2004-2005-DHTS * * Xoa Xoa ù ù ca ca ù ù c c do do ø ø ng ng t t ừ ừ 1 Table 1 Table SửdụngcâulệnhDELETE DELETE [FROM] <têntable> [where <điềukiện>]; Vídụ: Delete From Nhan_vien Where msnv=‘7899’); * Khikhôngcómệnhđề where, tấtcảcácdòng củaTable đượcchỉrềubòxoá. NgDucThuan-@2004-2005-DHTS * * Xoa Xoa ù ù ca ca ù ù c c do do ø ø ng ng d d ự ự a a trên trên 1 Table 1 Table kha kha ù ù c c l Dựatrêntruyvấncon tronglệnhDELETE để xoácácdòngtừ1 Table dựatrêncơsở1 table khác DELETE FROM employee WHEREdeptno= (SELECT deptno FROM dept WHERE dname=‘SALES’); Ng Duc Thuan 9 NgDucThuan-@2004-2005-DHTS Xoa Xoa ù ù ca ca ù ù c c do do ø ø ng ng : : Lỗi Lỗi ra ra ø ø ng ng buo buo ä ä c c toa toa ø ø n n ve ve ï ï n n DELETE FROM dept WHEREdeptno= 10; DELETE FROM dept * ERROR at line 1: ORA – 02292 : integrity constraint (USR.EMP_DEPTNO_FK) Violated – child record found B a ïn k h o â n g t h e å x o a ù 1 d o ø n g c h ư ù a 1 k h o a ù c h í n h đ ư ơ ï c s ư û d u ï n g n h ư 1 k h o a ù k h o a ù n g o a ï i t r o n g 1 T a b l e k h a ù c NgDucThuan-@2004-2005-DHTS * * Ca Ca ù ù c c giao giao dòch dòch Cơ Cơ sơ sơ û û d d ư ư õ õ lie lie ä ä u u l Baogồmcáclệnhsau: 1. CáclệnhDML làmthaổidữliệu 2. MộtlệnhDDL 3. MộtlệnhDCL NgDucThuan-@2004-2005-DHTS * * Ca Ca ù ù c c giao giao dòch dòch Cơ Cơ sơ sơ û û d d ư ư õ õ lie lie ä ä u u l Bắtđầukhilệnhthihànhđượclầnđầutiên đượcthựchiện l Kếtthúcvới1 trongnhữngsựkiệnsau: – -COMMIT hay ROLLBACK đượcđưara – -LệnhDDL hay DCL thựchiện(tựđộng commit) – -Ngườisửdụngthoát – -Hệthốngvỡ(crash) NgDucThuan-@2004-2005-DHTS * * Ca Ca ù ù c c le le ä ä nh nh COMMIT COMMIT va va ø ø ROLLBACK ROLLBACK nâng nâng cao cao lĐảmbảoràngbuộctoànvẹndữliệu lXemxétcácthaổitrướckhithực hiệnnhữngthaổithườngxuyên lCácphéptoánliênquanđếnnhóm logic NgDucThuan-@2004-2005-DHTS * * Ca Ca ù ù c c đ đ ie ie à à u u khie khie å å n n giao giao dòch dòch Giaodòch INSERT UPDATE INSERT DELETE COMMIT SavepointA SavepointB ROLLBACK to SavepointB ROLLBACK to SavepointA ROLLBACK NgDucThuan-@2004-2005-DHTS * * Cơ Cơ che che á á x x ử ử ly ly ù ù giao giao dòch dòch 1. MộtCOMMIT tựđộngsinhratrongcáctình huốngsau: – MộtlệnhDDL đượcthihành – MộtlệnhDCL đượcthihành – ThoátbìnhthườngtừSQL*PLUS, khôngnhấtthiết phảisửdụngCOMMIT hay ROLLBACK 2. MộtROLLBACK tựđộngsinhrakhikếtthúc SQL*Plus khôngbìnhthườnghay hệthốnghỏng. Ng Duc Thuan 10 NgDucThuan-@2004-2005-DHTS Tra Tra ï ï ng ng tha tha ù ù i i cu cu û û a a d d ư ư õ õ lie lie ä ä u u tr tr ư ư ơ ơ ù ù c c COMMIT hay ROLLBACK COMMIT hay ROLLBACK l Trạngtháitrướcđócủadữliệượcphụchồi l Ngườisửdụnghiệnhànhcóthểxemlạicáckết quảcủacácthaotácDML bằngcáchdùnglệnh SELECT l Nhữngngườisửdụngkháckhôngthểxemcáckết quảcáclệnhDML l Nhữngdònggỉalậpbòkhoá; nhữngngườisửdụng kháckhôngthểthaổidữliệucácdònggiảlập NgDucThuan-@2004-2005-DHTS Tra Tra ï ï ng ng tha tha ù ù i i cu cu û û a a d d ư ư õ õ lie lie ä ä u u sau sau COMMIT COMMIT l Dữliệuthaổiđượclưuthườngxuyêntrong CSDL l Trạngtháitrướcđócủadữliệulàbòmất l Tấtcảngườisửdụngcóthểxemcáckếtquả l Cáckhoátrêncácdònggiảlập(affected) bòxoá; nhữngdòngnàycókhảnăngnhữngngườisử dụngkhácxửlý l Tấtcảcácđiểmlưubòxoábỏ NgDucThuan-@2004-2005-DHTS * COMMIT Data * COMMIT Data l Thựchiệncácthaổi UPDATE Emp SET deptno= 10 WHERE empno= 7782 COMMIT cácthaổi SQL> COMMIT Commit complete NgDucThuan-@2004-2005-DHTS Tra Tra ï ï ng ng tha tha ù ù i i cu cu û û a a d d ư ư õ õ lie lie ä ä u u sau sau ROLLBACK ROLLBACK l Loạibỏnhữngthaổichưaquyếtđònhbằngcáchdùng lệnhROLLBACK l Dữliệuthaổibòxoábỏthaổi l Trạngtháitrướcđócủadữliệïcphụchồi l Cáckhoátrêncácdònggiảlập(affected) đượcloạibỏ DELETE FROM Employee; 14 rows deleted SQL> ROLLBACK Rollback Complete NgDucThuan-@2004-2005-DHTS ROLLING BACK ROLLING BACK thay thay đ đ o o å å i i đ đ e e á á n n 1 1 đ đ a a ù ù nh nh da da á á u u l Tạolập1 đánhdấutronggiaodòchhiệnhànhbằngcách dùnglệnhSAVEPOINT. l ROLLBACK đến1 đánhdấusửdụnglệnh ROLLBACK TO SAVEPOINT SQL> UPDATE SQL> SAVEPOINT update_done; SavepointCreated SQL> INSERT SQL> ROLLBACK TO update_done; Rollback complete NgDucThuan-@2004-2005-DHTS Ca Ca ù ù c c m m ứ ứ c c le le ä ä nh nh ROLLBACK ROLLBACK l NếumộtlệnhDML đơnlỗitrongquátrìnhthực hiện, chỉ1 lệnhđượcROLLBACK l MáychủOracle càiđặt1 savepointẩn. l Tấtcảnhữngthaổikhácđượcgiữlại l Ngườisửdụngnênkếtthúccácgiaodòchbằng cáchthựchiệncáclệnhCOMMIT hay ROLLBACK Ng Duc Thuan [...]... NgDucThuan- @200 4- 2005-DHTS * Sử dụïng cáùc hàøm ngàøy tháùng dung ca ha nga thang MONTHS_BETWEEN(’ 0 1- SEP-95’, 11 -JAN-94’) 19 .677 419 4’ ADD_MONTHS( 11 -JAN-94’,6) 11 -JUN-94’ NEXT_DAY(’ 0 1- SEP-95’, ‘FRIDAY’ ‘08-SEP-95’ LAST_DAY (’ 0 1- SEP-95’) ‘30-SEP-95’ ROUND(’25-JUL-95’,’MONTH’) 0 1- AUG-95 ROUND(’25-JUL-95’,’ YEAR’) 0 1- JAN-96 TRUNC(’25-JUL-95’,’MONTH’) 0 1- JUN-95 TRUNC(’25-JUL-95’,’ YEAR’) 0 1- JAN-95 NgDucThuan-... NgDucThuan- @200 4- 2005-DHTS EMP DEPTNO -1 0 10 10 20 20 20 20 20 30 30 30 30 30 30 SAL 2450 5000 13 00 800 11 00 3000 3000 2975 16 00 2850 12 50 950 15 00 12 50 2 916 .6667 DEPTNO 217 5 Mức lương trong EMP Theo mỗi Phân xưởng AVG(SAL) -1 0 2 916 .6667 20 217 5 30 15 66.6667 15 66.6667 NgDucThuan- @200 4- 2005-DHTS 21 Ng Duc Thuan Tạïo nhóùm dữ liệäu: Ta nho lie Mệänh đề GROUP BY Menh Tạïo nhóùm dữ liệäu:... From emp; DEPTNO 10 30 20 … DEPTNO 10 30 10 20 … NgDucThuan- @200 4- 2005-DHTS NgDucThuan- @200 4- 2005-DHTS * Tương táùc giữa SQL & SQL Plus ta giư SQL Statements * Tìm hiểåu thêm SQL Plus hie SQL Statements * Các lệnh SQL* PLUS soạn thảo * Các lệnh SQL* PLUS xử lý File: Buffer Server SQL* PLUS SQL* PLUS Commands Query Results Formatted Report NgDucThuan- @200 4- 2005-DHTS * Hiểån thò cấáu... -1 0 2 916 .6667 20 217 5 30 15 66.6667 NgDucThuan- @200 4- 2005-DHTS NgDucThuan- @200 4- 2005-DHTS Gộäp nhóùm nhiềàu hơn 1 cộät Go nho nhie co Gộäp nhóùm nhiềàu hơn 1 cộät Go nho nhie co EMP DEPTNO -1 0 10 10 20 20 20 20 20 30 30 30 30 30 30 JOB -MANAGER PRESIDENT CLERK CLERK CLERK ANALYST ANALYST MANAGER SALESMAN MANAGER SALESMAN CLERK SALESMAN SALESMAN SAL 2450 5000 13 00 800 11 00 3000... hàng NgDucThuan- @200 4- 2005-DHTS * Gộäp dữ liệäu sử dụïng hàøm GROUP Go lie dung ha Các hàm GROUP ? Các hàm GROUP thao tác trên tập các dòng để cho ra kết quả trên mỗi nhóm EMP DEPTNO SAL -1 0 2450 10 5000 10 13 00 20 800 20 11 00 20 3000 20 3000 20 2975 30 16 00 30 2850 30 12 50 30 950 30 15 00 30 12 50 Lương lớn nhất trong Table EMP MAX(SAL) -5 000 NgDucThuan- @200 4- 2005-DHTS 20 Ng... dữ liệu phải phù hợp NVL(comm,0) NVL(hiredate,’ 0 1- JAN-97’) NVL(job,’Giao vien’) NgDucThuan- @200 4- 2005-DHTS NgDucThuan- @200 4- 2005-DHTS * Hàøm DECODE Ha Xử lý mệnh đề điều kiện, bằøng cách sử dụng tương tự câu lệnh CASE hay IFTHEN-ELSE DEDCODE (/, , < kquả 1> , [/, , < kquả i>] [, ] Select job, sal, DECODE(job, ‘Thay’, sal *1. 1, ‘Quan ly, sal *1. 15,... Trước NgDucThuan- @200 4- 2005-DHTS NgDucThuan- @200 4- 2005-DHTS * Kếát nốái dữ liệäu Ke no lie * Kếát nốái không bằèng (Non – Ke no bang Equijoins) Equijoins) EMPNO ENAME SAL -7 348 KING 5000 7698 BLAKE 2850 7782 CLARK 2450 7844 ALLEN 16 00 7900 JACK 15 00 7653 BIN 900 7888 LENA 12 00 GRADE LOSAL HISAL 1 700 12 00 2 12 01 1400 3 14 01 2000 4 20 01 3000 ………………... WARD 1 Salary $1, 100.00 $950.00 $1, 300.00 $800.00 $2,850.00 $2,450.00 $2,975.00 $1, 600.00 $1, 250.00 $1, 500.00 $1, 250.00 Confidential NgDucThuan- @200 4- 2005-DHTS NgDucThuan- @200 4- 2005-DHTS 30 Ng Duc Thuan Đường đi khó, không phải vì ngăn sông cách núi Nhưng khó vì lòng người ngại núi e sông… Tạïo lậäp khung nhìn Ta la nhì (Creating Views) NgDucThuan- @200 4- 2005-DHTS NgDucThuan- @200 4-. .. CHECK OPTION NgDucThuan- @200 4- 2005-DHTS * Xoáù 1 khung nhìn Xoa nhì Xoá 1 khung nhìn không làm mất dữ liệu bởi vì khung nhìn là được dựa trên cơ sở các Table trong CSDL DROP VIEW < Tên khung nhìn> l Mọi NgDucThuan- @200 4- 2005-DHTS SQL> DROP VIEW empvu10; NgDucThuan- @200 4- 2005-DHTS 33 Ng Duc Thuan * Cáùc dòøng trong khung nhìn Ca dong nhì dòng khung nhìn là 1 truy vấn con với 1 bí danh ( quan hệ với... ] [ORDER BY ] NgDucThuan- @200 4- 2005-DHTS * Sử dụïng hàøm dung ha AVG,SUM,MIN,MAX Có thể sử dụng - hàm AVG và SUM cho dữ liệu số - hàm MIN, MAX cho kiểu dữ liệu bất kỳ SELECT AVG[SAL] , MAX(SAL), MIN(SAL), SUM(SAL) FROM emp WHERE Job LIKE ‘SALES%’; AVG (SAL) -1 4 00 MAX(SAL) -1 6 00 MIN(SAL) -1 2 50 SUM(SAL) 5600 NgDucThuan- @200 4- 2005-DHTS * Sử dụïng hàøm COUNT dung ha . S S ử ử du du ï ï ng ng ca ca ù ù c c ha ha ø ø m m nga nga ø ø y y tha tha ù ù ng ng MONTHS_BETWEEN(’ 0 1- SEP-95’, 11 -JAN-94’) 19 .677 419 4’ ADD_MONTHS( 11 -JAN-94’,6) 11 -JUN-94’ NEXT_DAY(’ 0 1- SEP-95’, ‘FRIDAY’‘08-SEP-95’ LAST_DAY (’ 0 1- SEP-95’)‘30-SEP-95’ ROUND(’25-JUL-95’,’MONTH’) 0 1- AUG-95 ROUND(’25-JUL-95’,’YEAR’) 0 1- JAN-96 TRUNC(’25-JUL-95’,’MONTH’) 0 1- JUN-95 TRUNC(’25-JUL-95’,’YEAR’) 0 1- JAN-95 NgDucThuan-@200 4-2 005-DHTS * * Chuye Chuye å å n n đ đ o o å å i i kie kie å å u u d d ư ư õ õ lie lie ä ä u u t t ư ư ơ ơ ø ø ng ng minh minh NUMBERCHARACTER DATE TO_NUMBERTO_DATE TO_CHARTO_CHAR NgDucThuan-@200 4-2 005-DHTS * * Ha Ha ø ø m m TO_CHAR. thựchànhORACLE TrầnTiếnDũng(Chủbiên) NgDucThuan-@200 4-2 005-DHTS NGÔN NGỮ SQL (Oracle) NgDucThuan-@200 4-2 005-DHTS Giơ Giơ ù ù i i thie thie ä ä u u SQL SQL Ngônng SQL ? SQL ( Structure Query Language) làngônngữtruyvấncó cấutrúc. SQL l 1 ngônngữchuẩnđểthaotáctrênd liệu lưutrữtrongCSDL. nghóaHàm NgDucThuan-@200 4-2 005-DHTS * * S S ử ử du du ï ï ng ng ca ca ù ù c c ha ha ø ø m m nga nga ø ø y y tha tha ù ù ng ng MONTHS_BETWEEN(’ 0 1- SEP-95’, 11 -JAN-94’) 19 .677 419 4’ ADD_MONTHS( 11 -JAN-94’,6) 11 -JUN-94’ NEXT_DAY(’ 0 1- SEP-95’,