Lệnh SQL Server

download Lệnh SQL Server

of 141

description

Lệnh trong SQL server - rất hay

Transcript of Lệnh SQL Server

Semantics of Web Services

Chng 5SQLC s d liu2Ni dung chi titGii thiunh ngha d liu Truy vn d liu Cp nht d liu Khung nhn (view)Ch mc (index)

2C s d liu3Gii thiuNgn ng SQH Cch thc truy vn d liuKh khn cho ngi s dngSQL (Structured Query Language)Ngn ng cp caoNgi s dng ch cn a ra ni dung cn truy vnc pht trin bi IBM (1970s)c gi l SEQUELc ANSI cng nhn v pht trin thnh chunSQL-86SQL-92SQL-993SEQUEL: Structured English Query LanguageANSI: American National Standards InstituteC s d liu4Gii thiu (tt)SQL gmnh ngha d liu (DDL)Thao tc d liu (DML)nh ngha khung nhnRng buc ton vn Phn quyn v bo mtiu khin giao tcSQL s dng thut ngBng ~ quan hCt ~ thuc tnhDng ~ bL thuyt : Chun SQL-92V d : SQL Server 4C s d liu5Ni dung chi titGii thiunh ngha d liuKiu d liuCc lnh nh ngha d liuTruy vn d liu Cp nht d liu Khung nhn (view)Ch mc (index)5C s d liu6nh ngha d liuL ngn ng m tLc cho mi quan hMin gi tr tng ng ca tng thuc tnhRng buc ton vnCh mc trn mi quan h GmCREATE TABLE (to bng)DROP TABLE (xa bng)ALTER TABLE (sa bng)CREATE DOMAIN (to min gi tr)CREATE DATABASE6C s d liu7Kiu d liuS (numeric)INTEGERSMALLINTNUMERIC, NUMERIC(p), NUMERIC(p,s)DECIMAL, DECIMAL(p), DECIMAL(p,s)REALDOUBLE PRECISIONFLOAT, FLOAT(p)7H thng SQL h tr kiu d liu l kiu d liu c s (Atomic)C s d liu8Kiu d liu (tt)Chui k t (character string)CHARACTER, CHARACTER(n)CHARACTER VARYING(x)

Chui bit (bit string)BIT, BIT(x)BIT VARYING(x)

Ngy gi (datetime)DATE gm ngy, thng v nmTIME gm gi, pht v giyTIMESTAMP gm ngy v gi8C s d liu9Lnh to bng nh ngha mt bngTn bngCc thuc tnhTn thuc tnhKiu d liuCc RBTV trn thuc tnhC phpCREATE TABLE ( [], [],[])9C s d liu10V d - To bngCREATE TABLE KHACHHANG (MAKH CHAR(4),HOTEN VARCHAR(40),DCHI VARCHAR(50),SODT VARCHAR(20),NGSINH SMALLDATETIME,DOANHSO MONEY,NGDK SMALLDATETIME)10C s d liu11Lnh to bng (tt) NOT NULLNULLUNIQUEDEFAULTPRIMARY KEYFOREIGN KEY / REFERENCESCHECK

t tn cho RBTV

CONSTRAINT 11C s d liu12V d - RBTVCREATE TABLE KHACHHANG (MAKH CHAR(4) PRIMARY KEY,HOTEN VARCHAR(40) NOT NULL,DCHI VARCHAR(50),SODT VARCHAR(20) NOT NULL,NGSINH SMALLDATETIME CHECK (NGSINH > 01-01-1900),DOANHSO MONEY DEFAULT (10000),NGDK SMALLDATETIME)12C s d liu13V d - RBTVCREATE TABLE NHANVIEN (MANV CHAR(4) PRIMARY KEY,HOTEN VARCHAR(40) NOT NULL,SODT VARCHAR(20) UNIQUE,NGVL SMALLDATETIME DEFAULT (GETDATE()))CREATE TABLE HOADON (SOHD INT PRIMARY KEY,NGHD SMALLDATETIME,MAKH CHAR(4) REFERENCES KHACHHANG(MAKH),MANV CHAR(4) FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV),TRIGIA MONEY)13C s d liu14V d - t tn cho RBTVCREATE TABLE KHACHHANG (MAKH CHAR(4) CONSTRAINT KH_MAKH_PK PRIMARY KEY,HOTEN VARCHAR(40) CONSTRAINT KH_HOTEN_NN NOT NULL,DCHI VARCHAR(50),SODT VARCHAR(20) NOT NULL,NGSINH SMALLDATETIME CONSTRAINT KH_NGSINH_CK CHECK (NGSINH > 01-01-1900),DOANHSO MONEY CONSTRAINT KH_DOANHSO_DF DEFAULT (10000),NGDK SMALLDATETIME)14C s d liu15V d - t tn cho RBTVCREATE TABLE CTHD (SOHD INT,MASP CHAR(4),SL INT,CONSTRAINT CTHD_SOHD_MASP_PK PRIMARY KEY (SOHD, MASP),CONSTRAINT CTHD_SOHD_FK FOREIGN KEY (SOHD) REFERENCES HOADON(SOHD),CONSTRAINT CTHD_MASP_FK FOREIGN KEY (MASP)REFERENCES SANPHAM(MASP))15C s d liu16Lnh sa bngc dng Thay i cu trc bng Thay i RBTV

Thm ct

Xa ct

M rng ctALTER TABLE ADD COLUMN []ALTER TABLE DROP COLUMN ALTER TABLE ALTER COLUMN 16C s d liu17Lnh sa bng (tt)Thm RBTV

Xa RBTV

ALTER TABLE ADDCONSTRAINT ,CONSTRAINT ,ALTER TABLE DROP 17C s d liu18V d - Thay i cu trc bngALTER TABLE SANPHAM ADDGHICHU VARCHAR(20)ALTER TABLE SANPHAM DROP COLUMN GHICHUALTER TABLE SANPHAM ALTER COLUMN GHICHU VARCHAR(50)18C s d liu19V d - Thay i RBTVALTER TABLE HOADON ADDCONSTRAINT HD_SOHD_PK PRIMARY KEY (SOHD),CONSTRAINT HD_MAKH_FK FOREIGN KEY (MAKH) REFERENCES KHACHHANG(MAKH),CONSTRAINT HD_MANV_FK FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV),CONSTRAINT HD_NGHD_DF DEFAULT (GETDATE()) FOR (NGHD)CREATE TABLE HOADON (SOHD INT,NGHD SMALLDATETIME,MAKH CHAR(4),MANV CHAR(4),TRIGIA MONEY)19C s d liu20Lnh xa bngc dng xa cu trc bngTt c d liu ca bng cng b xa

C php

V d

DROP TABLE DROP TABLE KHACHHANGDROP TABLE HOADONDROP TABLE SANPHAM20C s d liu21Lnh xa bng (tt)GIAOVIENHOCHAMHOTENHOCVIMAGVGIOITINHNGSINHNGVLHESOMUCLUONGMAKHOAKHOATRGKHOATENKHOAMAKHOANGTLAP21C s d liu22Lnh to min gi trTo ra mt kiu d liu mi k tha nhng kiu d liu c snC php

V dCREATE DOMAIN AS CREATE DOMAIN Kieu_Ten AS VARCHAR(30)22C s d liu23Ni dung chi titGii thiunh ngha d liuTruy vn d liuTruy vn c bnTp hp, so snh tp hp v truy vn lngHm kt hp v gom nhmMt s kiu truy vn khcCp nht d liu Khung nhn (view)Ch mc (index)23C s d liu24Truy vn d liuL ngn ng rt trch d liu tha mt s iu kin no Da trn

Cho php 1 bng c nhiu dng trng nhauBng l bag quan h l setPhp ton SQHMt s b sung24C s d liu25Truy vn c bnGm 3 mnh

Tn cc ct cn c hin th trong kt qu truy vn

Tn cc bng lin quan n cu truy vn

Biu thc boolean xc nh dng no s c rt trchNi cc biu thc: AND, OR, v NOT Php ton: , , , , , , LIKE v BETWEENSELECT FROM WHERE 25C s d liu26Truy vn c bn (tt)SELECT FROM WHERE SELECT LFROM RWHERE CL (C (R))SQL v SQH

26C s d liu27V dSELECT *FROM KHACHHANGWHERE DOANHSO>1000000Ly tt c cc ct ca quan h kt quDOANHSO>1000000 (KHACHHANG)MAKHHOTENDCHISODTNGSINHDOANHSONGDKKH01Nguyen Van A731 Tran Hung Dao, Q5, TpHCM0882345122/10/196013,060,00022/07/2006KH03Tran Ngoc Linh45 Nguyen Canh Chan, Q1, TpHCM093877626612/6/19803,860,00005/08/200627C s d liu28Mnh SELECTSELECT MAKH, HOTEN, DCHIFROM KHACHHANGWHERE DOANHSO>1000000 AND YEAR(NGDK)=2006MAKH, HOTEN, DCHI (DOANHSO>1000000 YEAR(NGDK)=2006 (KHACHHANG))MAKHHOTENDCHIKH01Nguyen Van A731 Tran Hung Dao, Q5, TpHCMKH03Tran Ngoc Linh45 Nguyen Canh Chan, Q1, TpHCM28C s d liu29Mnh SELECT (tt)SELECT MANV, HOTEN AS TEN, NGVL AS NGAY VAO LAMFROM NHANVIENWHERE NGVL > 01/06/2006MANV,TEN,NGAY VAO LAM(MANV,HOTEN,NGVL(NGVL > 01/06/2006(NHANVIEN)))Tn b danhMANVTENNGAY VAO LAMNV04Ngo Thanh Tuan24/6/2006NV05Nguyen Thi Truc Thanh20/7/200629C s d liu30Mnh SELECT (tt)SELECT MASP, TENSP + + NUOCSX AS TEN SAN PHAMFROM SANPHAMWHERE GIA >= 55000MASP,TEN SAN PHAM(MASP,TENSP+NUOCSX(GIA >= 55000 (SANPHAM)))M rngMASPTEN SAN PHAMBB03But bi Thai LanST02So tay loai 1 Viet NamST04So tay Thai Lan30C s d liu31Mnh SELECT (tt)SELECT MASP, GIA*1.1 AS GIA10%FROM GIAWHERE GIA >= 55000MASP,GIA10%(MASP,GIA*1.1(GIA >= 55000(SANPHAM)))M rngMASPGIA10%BB03110.000ST0260.500ST0460.50031C s d liu32Mnh SELECT (tt)SELECT GIAFROM SANPHAMWHERE GIA > 50000Loi b cc dng trng nhau Tn chi ph Ngi dng mun thyGIA100000550005500053000GIA1000005500053000SELECT DISTINCT GIAFROM SANPHAMWHERE GIA > 5000032C s d liu33V dSELECT FROMWHERECho bit MANV v HOTEN lp nhng ha n trn 3.500.000R1 NHANVIEN MANV=MANV HOADONKQ MANV, HOTEN (TRIGIA > 3500000(R1))NHANVIEN.MANV, HOTEN NHANVIEN, HOADONTRIGIA > 3500000NHANVIEN.MANV=HOADON.MANVAND33C s d liu34Mnh WHERESELECT NHANVIEN.MANV, HOTEN FROM NHANVIEN, HOADONWHERE TRIGIA > 3500000 AND NHANVIEN.MANV=HOADON.MANVBiu thc lun lTRUETRUE34C s d liu35Mnh WHERE (tt)SELECT NHANVIEN.MANV, TENNV FROM NHANVIEN, HOADONWHERE (GIA>3500000 OR GIA20000 AND GIA ANY (SELECT TRIGIAFROM HOADONWHERE MANV=NV01)Tm nhng ha n c tr gi ln hn tr gi ca t nht mt ha n do nhn vin c m NV01 lpSELECT HD1.*FROM HOADON HD1, HOADON HD2WHERE HD1.TRIGIA > HD2.TRIGIA AND HD2.MANV=NV0164C s d liu65V d 9SELECT *FROM HOADON WHERE TRIGIA > ALL (SELECT TRIGIAFROM HOADONWHERE MANV=NV01)Tm nhng ha n c tr gi ln hn tr gi ca tt c ha n do nhn vin c m NV01 lp65C s d liu66V d 10Tm nhng sn phm c trong ti thiu mt ha nSELECT * FROM SANPHAMWHERE MASP IN (SELECT MASP FROM CTHD)66SELECT MANV, HOTENFROM NHANVIEN NVWHERE EXISTS (SELECT *FROM HOADON HDWHERE MAKH=KH01 AND HD.MANV=NV.MANV)C s d liu67V d - Lng tng quanSELECT NV.MANV, HOTENFROM NHANVIEN NV, HOADON HDWHERE MAKH=KH01 AND HD.MANV=NV.MANV67C s d liu68V d 6SELECT *FROM HOADON HDWHERE EXISTS (SELECT *FROM KHACHHANG KHWHERE KH.MAKH=HD.MAKHAND KH.NGDK=HD.NGHDAND KH.DOANHSO=HD.TRIGIA)Tm ha n ca khch hng c ngy ng k trng vi ngy ha n v doanh s khch hng bng vi tr gi ha n 68C s d liu69V d 7SELECT *FROM NHANVIEN NVWHERE NOT EXISTS (SELECT *FROM HOADON HDWHERE HD.MANV=NV.MANV)Tm nhng nhn vin khng lp ha n no69C s d liu70V d 8SELECT *FROM HOADON HD1WHERE EXISTS (SELECT *FROM HOADON HD2WHERE MANV=NV01 AND HD1.TRIGIA>HD2.TRIGIA)Tm nhng ha n c tr gi ln hn tr gi ca t nht mt ha n do NV01 lp70C s d liu71V d 10SELECT *FROM HOADON HDWHERE EXISTS (SELECT *FROM CTHD CTWHERE HD.SOHD=CT.SOHD AND EXISTS (SELECT *FROM SANPHAM SPWHERE CT.MASP=SP.MASP AND NUOCSX=Viet Nam))Tm nhng ha n mua ti thiu mt sn phm do Viet Nam sn xut71C s d liu72Nhn xt IN v EXISTSIN IN Thuc tnh mnh SELECT ca truy vn con phi c cng kiu d liu vi thuc tnh mnh WHERE ca truy vn chaEXISTSKhng cn c thuc tnh, hng s hay biu thc no khc ng trcKhng nht thit lit k tn thuc tnh mnh SELECT ca truy vn conNhng cu truy vn c = ANY hay IN u c th chuyn thnh cu truy vn c EXISTS72C s d liu73Php chia trong SQLRS l tp cc gi tr ai trong R sao cho khng c gi tr bi no trong S lm cho b (ai, bi) khng tn ti trong RABaaaaaaaaCDabaababbE13111111RDEaSb11ABCaaRSaibi73C s d liu74Php chia trong SQL (tt)S dng NOT EXISTS biu dinSELECT R1.A, R1.B, R1.CFROM R R1WHERE NOT EXISTS (SELECT *FROM SWHERE NOT EXISTS (SELECT * FROM R R2WHERE R2.D=S.D AND R2.E=S.E AND R1.A=R2.A AND R1.B=R2.B AND R1.C=R2.C ))74C s d liu75V d 11Tm tr gi ha n mua tt c cc sn phm

Tm tr gi cc ha n m khng c sn phm no l khng muaTp b chia: CTHD(MASP, SOHD)Tp chia: SANPHAM(MASP)Tp kt qu: KQ(SOHD)Kt KQ vi HOADON ly ra TRIGIA

75C s d liu76V d 11 (tt)SELECT HD.TRIGIAFROM HOADON HDWHERE NOT EXISTS (SELECT *FROM SANPHAM SPWHERE NOT EXISTS (SELECT * FROM CTHD CTWHERE CTHD.MASP=SP.MASPAND CTHD.SOHD=HD.SOHD))76C s d liu77Ni dung chi titGii thiunh ngha d liuTruy vn d liuTruy vn c bnTp hp, so snh tp hp v truy vn lngHm kt hp v gom nhmMt s dng truy vn khcCp nht d liu Khung nhn (view)Ch mc (index)77C s d liu78Hm kt hpCOUNTCOUNT(*) m s dngCOUNT() m s gi tr khc NULL ca thuc tnhCOUNT(DISTINCT ) m s gi tr khc nhau v khc NULL ca thuc tnhMINMAXSUMAVG

Cc hm kt hp c t mnh SELECT78C s d liu79V d 12Tm tng tr gi, tr gi cao nht, tr gi thp nht v tr gi trung bnh ca cc ha n

SELECT SUM(TRIGIA), MAX(TRIGIA), MIN(TRIGIA), AVG(TRIGIA)FROM HOADON79C s d liu80V d 13Cho bit s lng ha n ca nhn vin Nguyen Van B

SELECT COUNT(*) AS SL_HDFROM HOADON HD, NHANVIEN NVWHERE HD.MANV=NV.MANV AND HOTEN=Nguyen Van B80C s d liu81V d 14Cho bit s lng sn phm ca tng nc.

SL_SPSingaporeViet Nam23NUOCSXTrung Quoc1MASPTENSPDVTNUOCSXGIABC01But chicaySingapore3,000BC02But chicaySingapore5,000BC03But chicayViet Nam3,500BC04But chihopViet Nam30,000BB01But bicayViet Nam5,000BB02But bicayTrung Quoc7,00081C s d liu82Gom nhmC php

Sau khi gom nhmMi nhm cc b s c cng gi tr ti cc thuc tnh gom nhmSELECT FROM WHERE GROUP BY 82C s d liu83V d 14Cho bit s lng ha n lp ca tng nhn vin

SELECT MANV, COUNT(*) AS SL_HDFROM HOADONGROUP BY MANVSELECT HOTEN, COUNT(*) AS SL_HDFROM HOADON HD, NHANVIEN NVWHERE HD.MANV=NV.MANVGROUP BY HOTEN83C s d liu84V d 15Vi mi nhn vin cho bit m s, h tn, s lng ha n v tng tr gi ha n m h lpSELECT MANV, COUNT(*) AS SL_HD, SUM(TRIGIA) AS TONG_TGFROM HOADONGROUP BY MANVSELECT HD.MANV, HOTEN, COUNT(*) AS SL_HD, SUM(TRIGIA) AS TONG_TGFROM HOADON HD, NHANVIEN NVWHERE HD.MANV=NV.MANVGROUP BY HD.MANV, HOTENMANVSOHDTRIGIANV011004180,000NV0110105,200,000NV021002840,000NV0210053,800,000NV0210143,150,000NV0310062,430,000NV041009200,000NV04102070,000NV051021230,000NV0510031,050,000NV061031420,000NV061011150,00084C s d liu85V d 16Cho bit nhng nhn vin lp t 2 ha n tr lnMANVSOHDTRIGIANV011004180,000NV0110105,200,000NV021002840,000NV0210053,800,000NV0210143,150,000NV0310062,430,000NV041009200,000NV04102070,000NV051021230,000NV0510031,050,000NV061031420,000NV061011150,000b loi ra85C s d liu86iu kin trn nhmC phpSELECT FROM WHERE GROUP BY HAVING 86C s d liu87V d 16Cho bit nhng nhn vin lp t 2 ha n tr lnSELECT MANVFROM HOADONGROUP BY MANVHAVING COUNT(*) >= 287C s d liu88V d 17Cho bit nhng nhn vin (HOTEN) c tr gi ha n lp trung bnh ln ln 1.000.000SELECT MANV, AVG(TRIGIA) AS TRIGIA_TBFROM HOADONGROUP BY MANVHAVING AVG(TRIGIA) > 1000000SELECT HOTEN, AVG(TRIGIA) AS TRIGIA_TBFROM HOADON HD, NHANVIEN NVWHERE HD.MANV=NV.MANVGROUP BY HOTENHAVING AVG(TRIGIA) > 100000088C s d liu89Nhn xtMnh GROUP BY Cc thuc tnh trong mnh SELECT (tr nhng thuc tnh trong cc hm kt hp) phi xut hin trong mnh GROUP BYMnh HAVINGS dng cc hm kt hp trong mnh SELECT kim tra mt s iu kin no Ch kim tra iu kin trn nhm, khng l iu kin lc trn tng bSau khi gom nhm iu kin trn nhm mi c thc hin 89C s d liu90Nhn xt (tt)Th t thc hin cu truy vn c mnh GROUP BY v HAVING (1) Chn ra nhng dng tha iu kin trong mnh WHERE(2) Nhng dng ny s c gom thnh nhiu nhm tng ng vi mnh GROUP BY(3) p dng cc hm kt hp cho mi nhm(4) B qua nhng nhm khng tha iu kin trong mnh HAVING(5) Rt trch cc gi tr ca cc ct v hm kt hp trong mnh SELECT90C s d liu91V d 18Tm nhng nhn vin c tr gi ha n lp trung bnh cao nhtSELECT MANV, AVG(TRIGIA) AS TRIGIA_TBFROM HOADONGROUP BY MANVHAVING MAX(AVG(TRIGIA))SELECT MANV, AVG(TRIGIA) AS TRIGIA_TBFROM HOADONGROUP BY MANVHAVING AVG(TRIGIA) >= ALL (SELECT AVG(TRIGIA)FROM HOADONGROUP BY MANV)91C s d liu92V d 19SELECT SOHDFROM HOADON HD1WHERE 2 >= (SELECT COUNT(*)FROM HOADON HD2WHERE HD2.TRIGIA>HD1.TRIGIA )Tm 3 ha n c tr gi cao nht92C s d liu93V d 12Tm tn nhn vin lp tt c cc ha nSELECT NV.MANV, HOTENFROM NHANVIEN NV, HOADON HDWHERE NV.MANV=HD.MANVGROUP BY NV.MANV, HOTENHAVING COUNT(*) = (SELECT COUNT(*)FROM HOADON )93C s d liu94Ni dung chi titGii thiunh ngha d liuTruy vn d liuTruy vn c bnTp hp, so snh tp hp v truy vn lngHm kt hp v gom nhmMt s dng truy vn khcCp nht d liu Khung nhn (view)Ch mc (index)94C s d liu95Mt s dng truy vn khcTruy vn con mnh FROM

iu kin kt mnh FROMPhp kt t nhin Php kt ngoI

Cu trc CASE95C s d liu96Truy vn con mnh FROMKt qu tr v ca mt cu truy vn ph l mt bngBng trung gian trong qu trnh truy vnKhng c lu tr tht s

C phpSELECT FROM R1, R2, () AS tn_bngWHERE 96C s d liu97V d 18Cho bit nhng khch hng (HOTEN) c tr gi trung bnh ca cc ha n ln hn 500.000SELECT MAKH, AVG(TRIGIA) AS TRIGIA_TBFROM HOADONGROUP BY MAKHHAVING AVG(TRIGIA) > 500000SELECT MAKH, HOTEN, AVG(TRIGIA) AS TRIGIA_TBFROM HOADON HD, KHACHHANG KHWHERE HD.MAKH=KH.MAKHGROUP BY MAKH, HOTENHAVING AVG(TRIGIA) > 500000SELECT HOTEN, TEMP.TRIGIA_TBFROM KHACHHANG KH, (SELECT MAKH, AVG(TRIGIA) AS TRIGIA_TB FROM HOADON GROUP BY MAKH HAVING AVG(TRIGIA)> 500000 ) AS TEMPWHERE KH.MAKH=TEMP.MAKH97C s d liu98iu kin kt mnh FROMKt bng

Kt ngoiSELECT FROM R1 [INNER] JOIN R2 ON WHERE SELECT FROM R1 LEFT|RIGHT [OUTER] JOIN R2 ON WHERE 98C s d liu99V d 20SELECT MANV, HOTENFROM NHANVIEN NV, HOADON HDWHERE MAKH=KH01 AND NV.MANV=HD.MANVSELECT MANV, HOTENFROM NHANVIEN NV INNER JOIN HOADON HD ON NV.MANV=HD.MANVWHERE MAKH=KH01Tm m v tn cc nhn vin lp ha n cho khch hng KH0199C s d liu100V d 21Cho bit s ha n v h tn khch hng nu cSELECT SOHD, HOTENFROM HOADON HD, KHACHHANG KHWHERE HD.MAKH=KH.MAKHSOHDHOTEN1020Le Ha Vinh1021Ha Duy Lap1022Null1023Null100C s d liu101V d 21 (tt)SELECT SOHD, HOTENFROM HOADON HD LEFT JOIN KHACHHANG KH ON HD.MAKH=KH.MAKHM rng d liu cho bng HOADONKHACHHANGHOADONjoinMAKH=MAKHHOADONKHACHHANGjoinMAKH=MAKHSELECT SOHD, HOTENFROM KHACHHANG KH RIGHT JOIN HOADON HD ON KH.MAKH=HD.MAKHSOHDHOTEN1020Le Ha Vinh1021Ha Duy Lap1022Null1023Null101C s d liu102V d 22SELECT HD.SOHD, KH.HOTENFROM (HOADON HD JOIN NHANVIEN NV ON HD.MANV=NV.MANV) RIGHT JOIN KHACHHANG KH ON HD.MAKH=KH.MAKHTm s ha n v tn cc khch hng m nhn vin lp ha n nu cKHACHHANGHOADON join NHANVIENMAKH=MAKHjoin102C s d liu103Cu trc CASECho php kim tra iu kin v xut thng tin theo tng trng hp

C phpCASE WHEN THEN WHEN THEN [ELSE ]END103C s d liu104V d 23Cho bit m v tn ca sn phm c gi ln hn 50.000 nu nc sn xut l Viet Nam v ln hn 200.000 nu nc sn xut l SingaporeSELECT MASP, TENSPFROM SANPHAMWHERE GIA >= ( CASE NUOCSXWHEN Viet Nam' THEN 50000WHEN Singapore' THEN 200000END )104C s d liu105V d 24Cho bit m v gi sn phm sau khi tng vi t l 5% nu sn xut ti Viet Nam v 10% nu sn xut ti Singapore SELECT MASP,(CASE NUOCSXWHEN Viet Nam THEN GIA*1.05WHEN Singapore THEN GIA*1.1END ) AS GIASAUKHITANGFROM SANPHAM105C s d liu106Kt lunSELECT FROM [WHERE ][GROUP BY ][HAVING ][ORDER BY ]106C s d liu107Ni dung chi titGii thiunh ngha d liuTruy vn d liuCp nht d liu Thm (insert)Xa (delete)Sa (update)Khung nhn (view)Ch mc (index)107C s d liu108Lnh INSERTDng thm 1 hay nhiu dng vo bng

thm d liuTn quan hDanh sch cc thuc tnh cn thm d liuDanh sch cc gi tr tng ng

108C s d liu109Lnh INSERT (tt)C php (thm 1 dng)INSERT INTO ()VALUES ()109C s d liu110V dINSERT INTO NHANVIEN(MANV, HOTEN, DTHOAI)VALUES (NV01, Nguyen Nhu Nhut, 0927345678)INSERT INTO NHANVIENVALUES (NV01, Nguyen Nhu Nhut, 0927345678, 2006-04-13)INSERT INTO NHANVIEN(MANV, HOTEN, DTHOAI, NGVL)VALUES (NV01, Nguyen Nhu Nhut, 0927345678, NULL)110C s d liu111Lnh INSERT (tt)Nhn xtTh t cc gi tr phi trng vi th t cc ct

C th thm gi tr NULL nhng thuc tnh khng l kha chnh v NOT NULL

Cu lnh INSERT s gp li nu vi phm RBTVKha chnhTham chiuNOT NULL - cc thuc tnh c rng buc NOT NULL bt buc phi c gi tr111C s d liu112Lnh INSERT (tt)C php (thm nhiu dng)INSERT INTO ()112C s d liu113V dCREATE TABLE THONGKE_NV (HOTEN VARCHAR(40),SL_HD INT,TRIGIAHD_TC MONEY)INSERT INTO THONGKE_NV(HOTEN, SL_HD, TRIGIAHD_TC)SELECT HOTEN, COUNT(SOHD), SUM(TRIGIA)FROM HOADON HD, NHANVIEN NVWHERE HD.MANV=NV.MANVGROUP BY HOTEN113C s d liu114Lnh DELETE Dng xa cc dng ca bng

C phpDELETE FROM [WHERE ]114C s d liu115V dDELETE FROM NHANVIENWHERE HOTEN LIKE Tran%DELETE FROM NHANVIENWHERE MANV=NV04DELETE FROM NHANVIEN115C s d liu116V d 25DELETE FROM NHANVIENWHERE MANV NOT IN (SELECT MANVFROM HOADON )Xa i nhng nhn vin khng lp ha n116C s d liu117Lnh DELETE (tt) Nhn xtS lng s dng b xa ph thuc vo iu kin mnh WHERE

Nu khng ch nh iu kin mnh WHERE, tt c cc dng trong bng s b xa

Lnh DELETE c th gy ra vi phm RB tham chiuKhng cho xaXa lun nhng dng c gi tr ang tham chiu nCASCADEt NULL cho nhng gi tr tham chiu117C s d liu118Lnh DELETE (tt) SOHDNGHDMAKHMANVTRIGIA100123/07/2006KH01NV01320,000100323/08/2006KH02NV01100,000100401/09/2006KH02NV01180,000100616/10/2006KH01NV032,430,000100212/08/2006KH01NV02840,000100520/10/2006KH01NV023,800,000SOHDMASPSL1001TV02101001ST08101003BB03101004TV01201006TV07201002 BC04 201002 BB01 201005TV0550118C s d liu119Lnh DELETE (tt) MANVHOTENDTHOAINGVLNV01Nguyen Nhu Nhut092734567813/4/2006NV02Le Thi Phi Yen098756739021/4/2006NV04Ngo Thanh Tuan091375849824/6/2006NV05Nguyen Thi Truc Thanh091859038720/7/2006NV03Nguyen Van B099704738227/4/2006SOHDNGHDMAKHMANVTRIGIA100123/07/2006KH01NV01320,000100212/08/2006KH01NV02840,000100616/10/2006KH012,430,000100728/10/2006KH03510,000100828/10/2006KH01440,000100928/10/2006KH03NV04200,000102014/01/2007KH09NV0470,000NV03NV03NV03NULLNULLNULL119C s d liu120Lnh UPDATE Dng thay i gi tr ca thuc tnh cho cc dng ca bng

C phpUPDATE SET =, =, [WHERE ]120C s d liu121V dUPDATE NHANVIENSET NGVL=08/12/2014WHERE MANV=NV05UPDATE SANPHAMSET GIA=GIA*1.05121C s d liu122V d 26Vi sn phm c m s ST10, hy thay i nc sn xut thnh Viet Nam v gi bn l 15.000UPDATE SANPHAMSET NUOCSX=Viet Nam, GIA=15000WHERE MASP=ST10122C s d liu123Lnh UPDATE Nhn xtNhng dng tha iu kin ti mnh WHERE s c cp nht gi tr mi

Nu khng ch nh iu kin mnh WHERE, tt c cc dng trong bng s b cp nht

Lnh UPDATE c th gy ra vi phm RB tham chiuKhng cho saSa lun nhng dng c gi tr ang tham chiu nCASCADE123C s d liu124Ni dung chi titGii thiunh ngha d liuTruy vn d liuCp nht d liu Khung nhnnh nghaTruy vnCp nhtCh mc 124C s d liu125Khung nhnBng l mt quan h c t chc lu tr vt l trong CSDL

Khung nhn cng l mt quan hKhng c lu tr vt l (bng o)Khng cha d liu c nh ngha t nhng bng khcC th truy vn hay cp nht thng qua khung nhn

125C s d liu126Khung nhn (tt)Ti sao phi s dng khung nhn?Che du tnh phc tp ca d liun gin ha cc cu truy vnHin th d liu di dng tin dng nhtAn ton d liu

126C s d liu127nh ngha khung nhnC php

Bng o ny cDanh sch thuc tnh trng vi cc thuc tnh trong mnh SELECTS dng ph thuc vo iu kin mnh WHERED liu c ly t cc bng mnh FROMCREATE VIEW AS DROP VIEW 127C s d liu128V dCREATE VIEW NV_2006 ASSELECT MANV, HOTEN, NGVLFROM NHANVIENWHERE YEAR(NGVL)=2006CREATE VIEW TONGTG_SLHD_NV ASSELECT NV.MANV, HOTEN, COUNT(*) AS SLHD, SUM(TRIGIA) AS TONGTGFROM NHANVIEN NV, HOADON HDWHERE NV.MANV=HD.MANVGROUP BY NV.MANV, HOTEN128C s d liu129Truy vn trn khung nhnTuy khng cha d liu nhng c th thc hin cc cu truy vn trn khung nhn

SELECT MANVFROM NV_2006WHERE HOTEN = Nguyen Nhu NhutNV_2006 MANV,HOTEN,NGVL (YEAR(NGVL)=2006 (NHANVIEN)) MANV (HOTEN=Nguyen Nhu Nhut (NV_2006))129C s d liu130Truy vn trn khung nhn (tt)C th vit cu truy vn d liu t khung nhn v bngSELECT HOTEN, SOHD, NGHDFROM NV_2006 NV, HOADON HDWHERE NV.MANV=HD.MANVNV_2006 MANV,HOTEN (YEAR(NGVL)=2006 (NHANVIEN))TMP NV_2006 NV_2006.MANV=HOADON.MANV HOADONHOTEN,SOHD,NGHD (TMP)130C s d liu131Cp nht trn khung nhnC th dng cc cu lnh INSERT, DELETE v UPDATE cho cc khung nhn n ginKhung nhn c xy dng trn 1 bng v c kha chnh ca bng

Khng th cp nht d liu nuKhung nhn c dng t kha DISTINCTKhung nhn c s dng cc hm kt hp Khung nhn c mnh SELECT m rngKhung nhn c xy dng t bng c RB trn ctKhung nhn c xy dng t nhiu bng131C s d liu132Cp nht trn khung nhn (tt)Sa li h tn nhn vin m NV03 vo lm nm 2006 l Phan Nhat AnhUPDATE NV_2006SET HOTEN=Phan Nhat AnhWHERE MANV= NV03132C s d liu133Ni dung chi titGii thiunh ngha d liuTruy vn d liuCp nht d liu Khung nhn (view)Ch mc (index)133C s d liu134Ch mcCh mc trn thuc tnh A l mt cu trc d liu lm cho vic tm kim mu tin c cha A hiu qu hnSELECT *FROM SANPHAMWHERE GIA>50000 AND DVT=CayBng SANPHAM c 10.000 bC 200 sn phm c gi ln hn 50.000c 10.000 bc 200 bc 70 b134C s d liu135Ch mc (tt)C php

V dCREATE INDEX ON ()CREATE INDEX GIA_IND ON SANPHAM(GIA)CREATE INDEX GIA_DVT_IND ON SANPHAM(GIA, DVT)DROP INDEX 135C s d liu136Ch mc (tt)Nhn xtTm kim nhanh trong trng hp so snh vi hng s v php ktLm chm i cc thao tc thm, xa v sa Tn chi ph Lu tr ch mcTruy xut a nhiu

Chn la ci t ch mc hp l???136C s d liu137V dXt quan h CTHD(SOHD, MASP, SL)Gi sCTHD c lu tr trong 10 blockChi ph c ton b d liu ca CTHD l 10Trung bnh mt ha n c 3 sn phm v mt sn phm nm trong trong 3 chi tit ha n.D liu c tri u trong 10 blockChi ph tm mt sn phm hay mt ha n l 3Khi s dng ch mc Chi ph c hay cp nht ch mcThao tc thm cn 2 ln truy xut a137C s d liu138V d (tt)Gi s c 3 thao tc c thc hin thng xuynQ1

Q2

Q3SELECT MASP, SLFROM CTHDWHERE SOHD=1011SELECT SOHDFROM CTHDWHERE MASP=BB01 AND SL=20INSERT INTO CTHDVALUES ( 1024, TV03, 32)138C s d liu139V d (tt)Bng so snh chi phThao tcKhng c ch mc Ch mc trn SOHD Ch mc trn MASP Ch mc trn c 2 thuc tnhQ1Q2Q310102410410444462 + 8p1 + 8p24 + 6p24 + 6p16 - 2p1 2p2Ch ph TBKhong thi gian thc hin Q1 l p1Khong thi gian thc hin Q2 l p2Khong thi gian thc hin Q3 l 1 - p1 - p2 139C s d liu140Bi tp v nhBi tp6.1.1 n 6.1.4 / 252 - 2536.2.1 n 6.2.3 / 262 - 2636.3.1 n 6.3.3 / 274 - 2756.3.7 n 6.3.10 / 275 - 2766.4.1, 6.4.2, 6.4.6, 6.4.7 / 284 - 2856.5.1, 6.5.2 / 290 - 2916.7.1 n 6.7.6 / 311 -312140C s d liu141141