1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng chương 5 SQL

14 236 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 479,15 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

C s d li u 13Ví d - RBTV CREATE TABLE NHANVIEN MANV CHAR4 PRIMARY KEY, HOTEN VARCHAR40 NOT NULL, SODT VARCHAR20 UNIQUE, NGVL SMALLDATETIME DEFAULT GETDATE CREATE TABLE HOADON SOHD INT

Trang 1

Ch ng 5 SQL

N i dung chi ti t

Gi i thi u

nh ngh a d li u Truy v n d li u

C p nh t d li u Khung nhìn (view)

Ch m c (index)

Gi i thi u

Ngôn ng SQH

- Cách th c truy v n d li u

- Khó kh n cho ng i s d ng

SQL (Structured Query Language)

- Ngôn ng c p cao

- Ng i s d ng ch c n a ra n i dung c n truy v n

- c phát tri n b i IBM (1970s)

- c g i là SEQUEL

- c ANSI công nh n và phát tri n thành chu n

SQL-86

SQL-92

SQL-99

Gi i thi u (tt)

SQL g m

- nh ngh a d li u (DDL)

- Thao tác d li u (DML)

- nh ngh a khung nhìn

- Ràng bu c toàn v n

- Phân quy n và b o m t

- i u khi n giao tác

SQL s d ng thu t ng

- B ng ~ quan h

- C t ~ thu c tính

- Dòng ~ b

Lý thuy t : Chu n SQL-92

Ví d : SQL Server

Trang 2

C s d li u 5

N i dung chi ti t

Gi i thi u

nh ngh a d li u

- Ki u d li u

- Các l nh nh ngh a d li u

Truy v n d li u

C p nh t d li u

Khung nhìn (view)

Ch m c (index)

nh ngh a d li u

Là ngôn ng mô t

- L c cho m i quan h

- Mi n giá tr t ng ng c a t ng thu c tính

- Ràng bu c toàn v n

- Ch m c trên m i quan h

G m

- CREATE TABLE (t o b ng)

- DROP TABLE (xóa b ng)

- ALTER TABLE (s a b ng)

- CREATE DOMAIN (t o mi n giá tr )

- CREATE DATABASE

- …

Ki u d li u

S (numeric)

- INTEGER

- SMALLINT

- NUMERIC, NUMERIC(p), NUMERIC(p,s)

- DECIMAL, DECIMAL(p), DECIMAL(p,s)

- REAL

- DOUBLE PRECISION

- FLOAT, FLOAT(p)

Ki u d li u (tt)

Chu i ký t (character string)

- CHARACTER, CHARACTER(n)

- CHARACTER VARYING(x)

Chu i bit (bit string)

- BIT, BIT(x)

- BIT VARYING(x)

Ngày gi (datetime)

- DATE g m ngày, tháng và n m

- TIME g m gi , phút và giây

- TIMESTAMP g m ngày và gi

Trang 3

C s d li u 9

L nh t o b ng

nh ngh a m t b ng

- Tên b ng

- Các thu c tính

Tên thu c tính

Ki u d li u

Các RBTV trên thu c tính

Cú pháp

CREATE TABLE <Tên_b ng> (

<Tên_c t> <Ki u_d _li u> [<RBTV>],

<Tên_c t> <Ki u_d _li u> [<RBTV>],

[<RBTV>]

)

Ví d - T o b ng

CREATE TABLE KHACHHANG ( MAKH CHAR(4),

HOTEN VARCHAR(40), DCHI VARCHAR(50), SODT VARCHAR(20), NGSINH SMALLDATETIME, DOANHSO MONEY, NGDK SMALLDATETIME )

L nh t o b ng (tt)

<RBTV>

- NOT NULL

- NULL

- UNIQUE

- DEFAULT

- PRIMARY KEY

- FOREIGN KEY / REFERENCES

- CHECK

t tên cho RBTV

CONSTRAINT <Ten_RBTV> <RBTV>

Ví d - RBTV

CREATE 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 )

Trang 4

C s d li u 13

Ví d - RBTV

CREATE 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

)

CREATE 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

)

CREATE 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) )

L nh s a b ng

c dùng

- Thay i c u trúc b ng

- Thay i RBTV

Thêm c t

Xóa c t

M r ng c t

ALTER TABLE <Tên_b ng> ADD COLUMN

<Tên_c t> <Ki u_d _li u> [<RBTV>]

ALTER TABLE <Tên_b ng> DROP COLUMN

<Tên_c t>

ALTER TABLE <Tên_b ng> ALTER COLUMN

<Tên_c t> <Ki u_d _li u_m i>

Trang 5

C s d li u 17

L nh s a b ng (tt)

Thêm RBTV

Xóa RBTV

ALTER TABLE <Tên_b ng> ADD

CONSTRAINT <Ten_RBTV> <RBTV>,

CONSTRAINT <Ten_RBTV> <RBTV>,

ALTER TABLE <Tên_b ng> DROP <Tên_RBTV>

ALTER TABLE SANPHAM ADD

GHICHU VARCHAR(20)

ALTER TABLE SANPHAM DROP COLUMN GHICHU

ALTER TABLE SANPHAM ALTER COLUMN

GHICHU VARCHAR(50)

ALTER TABLE HOADON ADD

CONSTRAINT 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

)

L nh xóa b ng

c dùng xóa c u trúc b ng

- T t c d li u c a b ng c ng b xóa

Cú pháp

Ví d

DROP TABLE <Tên_b ng>

DROP TABLE KHACHHANG

DROP TABLE HOADON

DROP TABLE SANPHAM

Trang 6

C s d li u 21

L nh xóa b ng (tt)

GIAOVIEN

HOCHAM

HOTEN HOCVI MAGV GIOITINH NGSINH NGVL HESO MUCLUONG MAKHOA

KHOA

TRGKHOA TENKHOA MAKHOA NGTLAP

L nh t o mi n giá tr

T o ra m t ki u d li u m i k th a nh ng ki u d

li u có s n

Cú pháp

Ví d

CREATE DOMAIN <Tên_kdl_m i> AS <Ki u_d _li u>

CREATE DOMAIN Kieu_Ten AS VARCHAR(30)

N i dung chi ti t

Gi i thi u

nh ngh a d li u

Truy v n d li u

- Truy v n c b n

- T p h p, so sánh t p h p và truy v n l ng

- Hàm k t h p và gom nhóm

- M t s ki u truy v n khác

C p nh t d li u

Khung nhìn (view)

Ch m c (index)

Truy v n d li u

Là ngôn ng rút trích d li u th a m t s i u ki n nào ó

D a trên

- Cho phép 1 b ng có nhi u dòng trùng nhau

- B ng là bag quan h là set

Phép toán SQH M t s b sung

Trang 7

C s d li u 25

Truy v n c b n

G m 3 m nh

- <danh sách các c t>

Tên các c t c n c hi n th trong k t qu truy v n

- <danh sách các b ng>

Tên các b ng liên quan n câu truy v n

- < i u ki n>

Bi u th c boolean xác nh dòng nào s c rút trích

N i các bi u th c: AND, OR, và NOT

Phép toán: , , , , , , LIKE và BETWEEN

SELECT <danh sách các c t>

FROM <danh sách các b ng>

WHERE < i u ki n>

Truy v n c b n (tt)

SELECT <danh sách các c t>

FROM <danh sách các b ng>

WHERE < i u ki n>

SELECT L FROM R WHERE C

L ( C (R))

SQL và SQH

Ví d

SELECT * FROM KHACHHANG WHERE DOANHSO>1000000

L y t t c các c t

c a quan h k t qu

DOANHSO>1000000 (KHACHHANG)

KH01 Nguyen Van A 731 Tran Hung Dao, Q5, TpHCM 08823451 22/10/1960 13,060,000 22/07/2006

KH03 Tran Ngoc Linh 45 Nguyen Canh Chan, Q1, TpHCM 0938776266 12/6/1980 3,860,000 05/08/2006

SELECT MAKH, HOTEN, DCHI FROM KHACHHANG

WHERE DOANHSO>1000000 AND YEAR(NGDK)=2006

MAKH, HOTEN, DCHI ( DOANHSO>1000000 YEAR(NGDK)=2006 (KHACHHANG))

KH01 Nguyen Van A 731 Tran Hung Dao, Q5, TpHCM KH03 Tran Ngoc Linh 45 Nguyen Canh Chan, Q1, TpHCM

Trang 8

C s d li u 29

SELECT MANV, HOTEN AS TEN, NGVL AS ‘NGAY VAO LAM’

FROM NHANVIEN

WHERE NGVL > 01/06/2006

MANV,TEN,NGAY VAO LAM( MANV,HOTEN,NGVL( NGVL > 01/06/2006(NHANVIEN)))

Tên bí danh

NV05 Nguyen Thi Truc Thanh 20/7/2006

SELECT MASP, TENSP + ‘ ’ + NUOCSX AS ‘TEN SAN PHAM’

FROM SANPHAM WHERE GIA >= 55000

MASP,TEN SAN PHAM( MASP,TENSP+NUOCSX( GIA >= 55000 (SANPHAM)))

M r ng

BB03 But bi Thai Lan ST02 So tay loai 1 Viet Nam ST04 So tay Thai Lan

SELECT MASP, GIA*1.1 AS ‘GIA10%’

FROM GIA

WHERE GIA >= 55000

MASP,GIA10%( MASP,GIA*1.1( GIA >= 55000(SANPHAM)))

M r ng

BB03 110.000 ST02 60.500 ST04 60.500

SELECT GIA FROM SANPHAM WHERE GIA > 50000

Lo i b các dòng trùng nhau

- T n chi phí

- Ng i dùng mu n th y

GIA 100000 55000 55000 53000

GIA 100000 55000 53000

SELECT DISTINCT GIA FROM SANPHAM WHERE GIA > 50000

Trang 9

C s d li u 33

Ví d

SELECT

FROM

WHERE

Cho bi t MANV và HOTEN l p nh ng hóa n trên

3.500.000

KQ MANV, HOTEN ( TRIGIA > 3500000(R1))

NHANVIEN.MANV, HOTEN

NHANVIEN, HOADON

TRIGIA > 3500000 AND NHANVIEN.MANV=HOADON.MANV

SELECT NHANVIEN.MANV, HOTEN FROM NHANVIEN, HOADON WHERE TRIGIA > 3500000 AND NHANVIEN.MANV=HOADON.MANV

Bi u th c lu n lý

SELECT NHANVIEN.MANV, TENNV

FROM NHANVIEN, HOADON

WHERE (GIA>3500000 OR GIA<1000000)

AND NHANVIEN.MANV=HOADON.MANV

u tiên

SELECT MASP, TENSP FROM SANPHAM WHERE GIA>20000 AND GIA<30000

BETWEEN

SELECT MASP, TENSP FROM SANPHAM WHERE GIA BETWEEN 20000 AND 30000

Trang 10

C s d li u 37

NOT BETWEEN

SELECT MASP, TENSP

FROM SANPHAM

WHERE GIA NOT BETWEEN 20000 AND 30000

SELECT MAKH, HOTEN FROM KHACHHANG WHERE DCHI LIKE ‘Nguyen _ _ _ _’

LIKE

SELECT MAKH, HOTEN FROM KHACHHANG WHERE DCHI LIKE ‘Nguyen %’

Chu i b t k

Ký t b t k

SELECT MASP, TENSP

FROM SANPHAM

WHERE DVT LIKE ‘CAY’

NOT LIKE

SELECT MASP, TENSP

FROM SANPHAM

WHERE DVT NOT LIKE ‘CAY’

SELECT MAKH, HOTEN FROM KHACHHANG

WHERE DCHI LIKE ‘% Nguyens_%’ ESCAPE ‘s’

ESCAPE

‘Nguyen_’

Trang 11

C s d li u 41

Ngày gi

SELECT MANV, TENNV

FROM NHANVIEN

WHERE NGVL BETWEEN ‘2006-12-08’ AND ‘2014-07-19’

YYYY-MM-DD MM/DD/YYYY

‘2006-12-08’

’12/08/2006’

‘December 8, 2006’

HH:MI:SS

’17:30:00’

’05:30 PM’

‘2006-12-08 17:30:00’

NULL

- S d ng trong tr ng h p

Không bi t (value unknown) Không th áp d ng (value inapplicable) Không t n t i (value withheld)

- Nh ng bi u th c tính toán có liên quan n giá tr NULL

s cho ra k t qu là NULL

x có giá tr là NULL

x + 3 cho ra k t qu là NULL

x + 3 là m t bi u th c không h p l trong SQL

- Nh ng bi u th c so sánh có liên quan n giá tr NULL

s cho ra k t qu là UNKNOWN

x = 3 cho ra k t qu là UNKNOWN

x = 3 là m t so sánh không h p l trong SQL

NULL

SELECT MANV, HOTEN FROM NHANVIEN WHERE SODT IS NULL

SELECT MANV, HOTEN FROM NHANVIEN WHERE SODT IS NOT NULL

WHERE TRUE

SELECT MANV, SOHD FROM NHANVIEN, HOADON

Không s d ng m nh WHERE

SOHD 1 4 333445555 333445555 MANV

5 1 987987987 987987987 333445555

4 5 987987987

Trang 12

C s d li u 45

SELECT SOHD, HOTEN

FROM HOADON, NHANVIEN

WHERE MANV=MANV

Tên bí danh

SELECT SOHD, HOTEN

FROM HOADON AS HD, NHANVIEN AS NV

WHERE HD.MANV=NV.MANV

SELECT MANV, HOTEN, SOHD

FROM NHANVIEN, HOADON

WHERE MANV=MANV

SELECT NV.MANV, HOTEN, SOHD

FROM NHANVIEN NV, HOADON HD

WHERE NV.MANV=HD.MANV

Ví d 1

V i nh ng chi ti t hóa n mua trên 50 s n ph m, cho bi t s hóa n, tr giá hóa n, mã nhân viên

l p hóa n, h tên cùng v i ngày sinh và a ch

c a ng i y

Ví d 2

Tìm hóa n c a kh ách hàng ‘Nguyen Van A ’ do

nhân viên có mã s ‘NV03’ l p và mua h n 3 lo i

s n ph m khác nhau.

Ví d 3

In ra tr giá c a t ng hóa n và h tên ng i l p hóa n ó.

Trang 13

C s d li u 49

Ví d 4

Tìm t t c các hóa n c a khách hàng ‘Nguyen

Van A’

Dùng hi n th k t qu câu truy v n theo m t th

t nào ó

Cú pháp

- ASC: t ng (m c nh)

- DESC: gi m

SELECT <danh sách các c t>

FROM <danh sách các b ng>

WHERE < i u ki n>

ORDER BY <danh sách các c t>

Ví d

SELECT NGDK, DOANHSO

FROM KHACHHANG

ORDER BY NGDK DESC, DOANHSO

DOANHSO 1.000.000 3.350.000 11/07/2012

11/07/2012 NGDK

2.490.000 3.210.000 23/12/2013

10/09/2014 23/12/2013

100.000 2.040.000 10/09/2014

5.300.000 10/09/2014

N i dung chi ti t

Gi i thi u

nh ngh a d li u Truy v n d li u

- Truy v n c b n

- T p h p, so sánh t p h p và truy v n l ng

- Hàm k t h p và gom nhóm

- M t s d ng truy v n khác

C p nh t d li u Khung nhìn (view)

Ch m c (index)

Trang 14

C s d li u 53

Phép toán t p h p trong SQL

SQL có cài t các phép toán

- H i (UNION)

- Giao (INTERSECT)

- Tr (EXCEPT)

K t qu tr v là t p h p

- Lo i b các b trùng nhau

- gi l i các b trùng nhau

UNION ALL

INTERSECT ALL

EXCEPT ALL

Phép toán t p h p trong SQL (tt)

Cú pháp

SELECT <ds c t> FROM <ds b ng> WHERE < i u ki n>

UNION [ALL]

SELECT <ds c t> FROM <ds b ng> WHERE < i u ki n>

SELECT <ds c t> FROM <ds b ng> WHERE < i u ki n>

INTERSECT [ALL]

SELECT <ds c t> FROM <ds b ng> WHERE < i u ki n>

SELECT <ds c t> FROM <ds b ng> WHERE < i u ki n>

EXCEPT [ALL]

SELECT <ds c t> FROM <ds b ng> WHERE < i u ki n>

Ví d 5

Cho bi t các s hóa n có

- Nhân viên l p hóa n có h là ‘Nguyen’ ho c,

- Khách hàng mua hàng có h là ‘Nguyen’

SELECT SOHD

FROM HOADON HD, NHANVIEN NV

WHERE HD.MANV=NV.MANV AND HOTEN LIKE ‘Nguyen %’

UNION

SELECT SOHD

FROM HOADON HD, KHACHHANG KH

WHERE HD.MAKH=KH.MAKH AND HOTEN LIKE ‘Nguyen %’

Ngày đăng: 03/12/2015, 03:00

TỪ KHÓA LIÊN QUAN

w