SlideShare a Scribd company logo
CHƯƠNG 5

    Ngôn ngữ SQL
  (Structured Query
      Language)

                      1
Giới thiệu SQL
   Là ngôn ngữ chuẩn để truy vấn và thao tác
    trên CSDL quan hệ
   Là ngôn ngữ phi thủ tục
   Khởi nguồn của SQL là SEQUEL - Structured
    English Query Language, năm 1974)
   Các chuẩn SQL
      SQL89

      SQL92 (SQL2)

      SQL99 (SQL3)

                                  2
Nội dung chính
   Ngôn ngữ định nghĩa dữ liệu: tạo bảng,
    sửa cấu trúc bảng̣, xóa bảng
   Ngôn ngữ thao tác dữ liệu: thêm, xóa, sửa
    dữ liệu, và truy vấn dữ liệu.
   Ngôn ngữ điều khiển dữ liệu: cấp quyền và
    thu hồi quyền sử dụng trên cơ sở dữ liệu.
   Tương quan giữa SQL và ngôn ngữ ĐSQH


                                        3
Ngôn ngữ định nghĩa dữ liệu
   Ngôn ngữ định nghĩa dữ liệu (DDL– Data
    Definition Language)
   Bao gồm:
     Lệnh tạo bảng (CREATE...)

     Lệnh sửa cấu trúc bảng (ALTER...)

     Lệnh xóa bảng (DROP...)




                                     4
Ngôn ngữ thao tác dữ liệu
   Ngôn ngữ thao tác dữ liệu (DML – Data
    Manipulation Language)
   Bao gồm:
     Lệnh thêm dữ liệu (INSERT...)

     Lệnh sửa dữ liệu (UPDATE...)

     Lệnh xóa dữ liệu (DELETE...)

     Truy vấn dữ liệu (SELECT...)




                                     5
Ngôn ngữ điều khiển dữ liệu
   Ngôn ngữ điều khiển dữ liệu (DCL – Data
    Control Language)
   Bao gồm:
     Lệnh cấp quyền cho người sử dụng cơ sở

      dữ liệu (GRANT...)
     Lệnh thu hồi quyền hạn của người sử dụng

      cơ sở dữ liệu (REVOKE...)



                                         6
Ngôn ngữ định nghĩa dữ liệu
    Tạo bảng (1)
   Cú pháp
    CREATE TABLE tên_bảng
    (
    tên_cột1 kiểu_dữ_liệu [not null],
    tên_cột2 kiểu_dữ_liệu [not null],
    …
    tên_cộtn kiểu_dữ_liệu [not null],
    khai báo khóa chính, khóa ngoại, ràng buộc
    toàn vẹn
    )                                7
Ngôn ngữ định nghĩa dữ liệu
       Tạo bảng (2)

Các kiểu dữ liệu          SQL Server          Oracle
Chuỗi ký tự        varchar(n), char(n),   varchar2(n),
                   Text                   nchar(n),
                                          nvarchar2(n)
Số                 tinyint,smallint,int   number(n),
                   numeric, decimal,      number(n,m)
                   float, real
Ngày tháng         smalldatetime,         date
                   datetime
                                          8
Ngôn ngữ định nghĩa dữ liệu
      Tạo bảng (3)

Cho lược đồ CSDL “quản lý đề án cty” như sau
NHANVIEN (MaNV, HoNV, TenLot, TenNV, Phai,
          Luong, Phong, NgaySinh, DiaChi, Ma_NQL)
PHONGBAN (MaPHG, TenPHG, TrPHG,
          NG_NhanChuc)
DEAN (MaDA, TenDA, DDIEM_DA, Phong)
PHANCONG (MaNV, MaDA, ThoiGian)
DIADIEM_PHG (MaPHG, DIADIEM)
THANNHAN (MaNV, TenTN, Phai, NGSinh,QuanHe)
                                     9
Ngôn ngữ định nghĩa dữ liệu
     Tạo bảng (4)
   Ví dụ: câu lệnh để tạo một bảng nhân viên
    CREATE TABLE NHANVIEN
( MANV varchar(10) NOT NULL,
    HONV varchar(50) NOT NULL, TENLOT varchar(50) NOT NULL,
    TENNV varchar(50) NOT NULL, NGAYSINH datetime,
    PHAI varchar(3) NOTNULL, DIACHI varchar(100),
    MA_NQL varchar(10),
    PHONG varchar(10),
    LUONG numeric,
    CONSTRAINT PK_NV PRIMARY KEY (MANV),
    CONSTRAINT FK_NV_PB FOREIGN KEY (PHONG)
    REFERENCES PHONGBAN (MAPHG)           )
                                              10
Ngôn ngữ định nghĩa dữ liệu

      Sửa cấu trúc bảng (1)
   Thêm thuộc tính
     ALTER TABLE tên_bảng ADD tên_cột
       kiểu_dữ_liệu
      Ví dụ: thêm cột Ghi_chú vào bảng nhân viên

       ALTER TABLE NHANVIEN ADD GHI_CHU
       varchar(20)

   Sửa kiểu dữ liệu thuộc tính
    ALTER TABLE tênbảng ALTER COLUMN
      tên_cột kiểu_dữ_liệu_mới
                                         11
Ngôn ngữ định nghĩa dữ liệu

        Sửa cấu trúc bảng ( 2)
       Ví dụ: sửa kiểu dữ liệu của cột Ngày sinh
        ALTER TABLE NHANVIEN ALTER COLUMN
        NGAYSINH SMALLDATETIME

   Xóa thuộc tính
    ALTER TABLE tên_bảng DROP COLUMN
      tên_cột
     Ví dụ: xóa cột Ghi_chú từ bảng nhân viên

      ALTER TABLE NHANVIEN DROP COLUMN
      GHI_CHU
                                            12
Ngôn ngữ định nghĩa dữ liệu
      Sửa cấu trúc bảng ( 3)

    Thêm ràng buộc toàn vẹn
                               UNIQUE tên_cột

                               PRIMARY KEY tên_cột
ALTER TABLE <tên_bảng>
ADD CONSTRAINT                 FOREIGN KEY tên_cột
<tên_ràng_buộc>                REFERENCES tên_bảng
                               (cột_là_khóa_chính) [ON
                               DELETE CASCADE] [ON
                               UPDATE CASCADE]
                               CHECK (tên_cột
                               điều_kiện) 13
Ngôn ngữ định nghĩa dữ liệu
      Sửa cấu trúc bảng ( 4)
   Ví dụ
     ALTER TABLE NHANVIEN ADD CONSTRAINT

       PK_NV PRIMARY KEY (MANV)
     ALTER TABLE NHANVIEN ADD CONSTRAINT

       FK_NV_PB FOREIGN KEY (PHONG)
       REFERENCES PHONGBAN(MAPHG)
     ALTER TABLE NHANVIEN ADD CONSTRAINT

       CHK CHECK ( PHAI IN (‘Nam') OR (‘Nu’))
     ALTER TABLE NHANKHAU ADD

       CONSTRAINT UQ_NK UNIQUE (CMND)
                                  14
Ngôn ngữ định nghĩa dữ liệu
Sửa cấu trúc bảng ( 5)
   Xóa ràng buộc toàn vẹn
    ALTER TABLE tên_bảng DROP
      CONSTRAINT tên_ràng_buộc

       Ví dụ
        ALTER TABLE NHANVIEN DROP
        CONSTRAINT FK_NV_PB



                                 15
Ngôn ngữ định nghĩa dữ liệu

    Xóa bảng
   Cú pháp
    DROP TABLE tên_bảng

       Ví dụ: xóa bảng (table) nhân viên
        DROP TABLE NHANVIEN

       Ví dụ: xóa bảng (table) phân công
        DROP TABLE PHANCONG

                                      16
Ngôn ngữ thao tác dữ liệu
     Thêm dữ liệu vào bảng
   Cú pháp
    INSERT INTO tên_bảng VALUES (giá_trị_1,
      giá_trị_2,…, giá_trị_n)
    INSERT INTO tên_bảng (cột1, cột2) VALUES
      (giá_trị_1, giá_trị_2)
     Ví dụ

      INSERT INTO NHANVIEN VALUES (‘001’,
      ‘Vuong’, ‘Ngoc’, ‘Quyen’, ’01/01/1977’, ‘Nu’,
      ’450 Trung Vuong, Ha Hoi’, ‘12345’, ‘QL’,
      2000)
                                       17
Ngôn ngữ thao tác dữ liệu
         Sửa dữ liệu của bảng
   Cú pháp
     UPDATE tên_bảng SET cột_1 = giá_trị_1,
      cột_2 = giá_trị_2 [WHERE điều_kiện]

       Ví dụ: Sửa họ nhân viên có mã số ‘001’ thành
        ‘Nguyen’
        UPDATE NHANVIEN SET HONV = ‘Nguyen’
        WHERE MANV=‘001’

                                          18
Ngôn ngữ thao tác dữ liệu
        Sửa dữ liệu của bảng

   Cú pháp
       Ví dụ: Sửa họ tên của nhân viên có mã số
        ‘001’ thành ‘Nguyen Thanh Tung’ và ngày sinh
        mới là 1/1/1978
        UPDATE NHANVIEN SET HONV = ‘Nguyen’,
        TENLOT = ‘Thanh’, TENNV = Tung’,
        NGAYSINH=‘1/1/1978’
        WHERE MANV=‘001’

                                        19
Ngôn ngữ thao tác dữ liệu
    Xóa dữ liệu trong bảng
   Cú pháp
    DELETE FROM tên_bảng [WHERE
      điều_kiện]

        Ví dụ: xóa nhân viên có mã số ‘001’
          DELETE FROM NHANVIEN
          WHERE MANV=‘001’
        Ví dụ: xóa toàn bộ nhân viên
         DELETE FROM NHANVIEN
                                       20
Ngôn ngữ thao tác dữ liệu
    Câu truy vấn SELECT
   Câu truy vấn tổng quát
    SELECT [DISTINCT] tên_cột | hàm
    FROM bảng
    [WHERE điều_kiện]
    [GROUP BY cột]
    [HAVING điều_kiện]
    [ORDER BY cột ASC | DESC]


                                21
Ngôn ngữ thao tác dữ liệu
    Toán tử truy vấn (1)
   Toán tử so sánh
     =
     >
     <
     >=
     <=
     <>
   Toán tử logic: AND, OR, NOT
   Phép toán: +, - ,* , /
                                  22
Ngôn ngữ thao tác dữ liệu
            Toán tử truy vấn (2)
   Các toán tử so sánh khác
       BETWEEN - định nghĩa một đoạn giá trị liên tục
       IS NULL - kiểm tra giá trị thuộc tính có null hay không
       LIKE – kiểm tra chuỗi ký tự tương tự
       IN – kiểm tra giá trị thuộc tính có thuộc tập hợp các giá
        trị đã định nghĩa hay không
       EXISTS – mang giá trị TRUE nếu mệnh đề so sánh
        trả về ít nhất một bộ (record), FALSE nếu ngược lại
                                                 23
Ngôn ngữ thao tác dữ liệu
          Toán tử truy vấn (3)
   Toán tử BETWEEN
       Ví dụ
        SELECT * FROM NHANVIEN WHERE
        year(NGAYSINH) BETWEEN 1965 AND 1977
       SELECT n.MANV, n.TENNV, p.TENPHG
        FROM NHANVIEN n, PHONGBAN p
        WHERE n.PHONG=p.MAPHG
        AND n.LUONG NOT BETWEEN 1000 AND
        3000                       24
Ngôn ngữ thao tác dữ liệu
          Toán tử truy vấn (4)
   Toán tử IS NULL
       Ví dụ
    a. SELECT * FROM NHANVIEN
        WHERE MA_NQL IS NOT NULL
    b. SELECT h.MAHV,h.HOTEN,h.DIACHI
         FROM HOCVIEN h, BIENLAI b
    WHERE h.MAHV=b.MAHV AND b.TIENNOP IS
     NULL                        25
Ngôn ngữ thao tác dữ liệu
     Toán tử truy vấn (5)
   Toán tử LIKE
       So sánh chuỗi tương đối
       Cú pháp: s LIKE p, p có thể chứa % hoặc _
       % : thay thế một chuỗi ký tự bất kỳ
       _ : thay thế một ký tự bất kỳ
       Ví dụ SELECT * FROM NHANVIEN
               WHERE HONV LIKE ‘Nguyen%’
                                        26
Ngôn ngữ thao tác dữ liệu
        Toán tử truy vấn (6)
   Toán tử IN
       Ví dụ
     a. SELECT * FROM NHANVIEN
        WHERE PHONG IN (‘NC’,’QL’,’DH’)
     b. SELECT MANV, TENNV, DIACHI
        FROM NHANVIEN
        WHERE MANV NOT IN (SELECT MANV
                            FROM 27
Ngôn ngữ thao tác dữ liệu
        Toán tử truy vấn (7)
   Toán tử EXISTS
       Ví dụ
    a. SELECT d.TENDA, p.TENPHG FROM PHONGBAN p,
       DEAN d
        WHERE p.MAPHG = d.PHONG
          AND EXISTS (SELECT pc.MADA FROM PHANCONG
        pc
                      WHERE d.MADA=pc.MADA)
    b. SELECT * FROM NHANVIEN n WHERE NOT EXISTS
         (SELECT * FROM DEAN d WHERE NOT EXISTS
         (SELECT * FROM PHANCONG p WHERE
                                           28
Ngôn ngữ thao tác dữ liệu
         Mệnh đề GROUP BY (1)
   Mệnh đề GROUP BY
       Chia các dòng thành các nhóm dựa trên tập con của
        các thuộc tính
       Tất cả các thành viên của nhóm đều thỏa các thuộc
        tính này.
       Mỗi nhóm được mô tả bằng một dòng các thuộc tính,
        được giới hạn bởi:
         
             Các thuộc tính chung của tất cả thành viên thuộc
             nhóm (được liệt kê trong mệnh đề GROUP BY).
         
             Các phép toán trên nhóm.           29
Ngôn ngữ thao tác dữ liệu
        Mệnh đề GROUP BY (2)
                       Chia các dòng thành các
          a            nhóm dựa trên tập con
          a            của các thuộc tính
          b
          b
          c
 nhóm




          c
          c
          c
          c
          d
          d
          d

Các thuộc tính GROUP
                                 30
BY
Ngôn ngữ thao tác dữ liệu
    Mệnh đề GROUP BY (3)

   Các hàm SQL cơ bản
       COUNT: Đếm số bộ dữ liệu của thuộc tính
       MIN: Tính giá trị nhỏ nhất
       MAX: Tính giá trị lớn nhất
       AVG: Tính giá trị trung bình
       SUM: Tính tổng giá trị các bộ dữ liệu
                                       31
Ngôn ngữ thao tác dữ liệu
       Mệnh đề GROUP BY (4)
   Ví dụ: tìm tổng lương, lương lớn nhất, lương ít nhất và
    lương trung bình của các nhân viên
      SELECT SUM(LUONG), MAX(LUONG),
    MIN(LUONG), AVG(LUONG) FROM NHANVIEN ;
   Ví dụ: tìm tổng lương, lương lớn nhất, lương ít nhất và
    lương trung bình của các nhân viên phòng “Nghiên
    cứu”
              SELECT SUM(LUONG), MAX(LUONG),
    MIN(LUONG), AVG(LUONG) from NHANVIEN ,
    PHONGBAN         WHERE      MAPHG=PHONG AND
    TENPHG='Nghien cuu';
   Ví dụ: cho biết số lượng nhân viên
                                             32
    SELECT COUNT(*) FROM NHANVIEN;
Ngôn ngữ thao tác dữ liệu
    Mệnh đề GROUP BY (5)
   Ví dụ
    SELECT n.MANV, n.TENNV, n.PHONG,
    MIN(p.THOIGIAN) thap_nhat,
    MAX (p.THOIGIAN) cao_nhat,
    AVG(p.THOIGIAN) trung_binh,
    SUM (p.THOIGIAN) tong_so_gio
    FROM NHANVIEN n, PHANCONG p
    WHERE n.MANV=p.MANV
    GROUP BY n.MANV, n.HOTEN, n.PHONG
                             33
Ngôn ngữ thao tác dữ liệu
     Mệnh đề HAVING

   Mệnh đề HAVING
       Lọc kết quả theo điều kiện, sau khi đã
        gom nhóm
       Điều kiện của HAVING là các thuộc
        tính trong danh sách GROUP BY và
        các phép tính toán khác.


                                   34
Ngôn ngữ thao tác dữ liệu
     Mệnh đề HAVING
   Ví dụ: cho biết tên từng phòng ban và tổng số nhân
    viên, mức lương trung bình của các phòng có mức
    lương trung bình trên 2000
     SELECT p.TENPHG, COUNT(*) so_luong_nv,
     AVG(n.LUONG) luong_tb
     FROM NHANVIEN n, PHONGBAN p
     WHERE n.PHONG = p.MAPHG
     GROUP BY p.TENPHB
     HAVING AVG(n.LUONG) > 2000
                                            35
Ngôn ngữ thao tác dữ liệu
    Truy vấn con (Subquery)
   Subquery
       Các mệnh đề SELECT được lồng vào
        nhau
       Kết quả của câu SELECT này là điều kiện
        của câu SELECT khác.
       Các mệnh đề SELECT được nối với nhau
        bằng các phép so sánh <,>,<>,=,>=,<=,
        IN, EXISTS, ALL, ANY, SOME,…
                                    36
Ngôn ngữ thao tác dữ liệu
        Truy vấn con (Subquery)

   Ví dụ
       Liệt kê nhân viên có số giờ làm việc nhiều nhất
        trong công ty.
        SELECT n.MANV, n.TENNV, SUM (p.THOIGIAN)
        FROM NHANVIEN n, PHANCONG p
        WHERE n.MANV = p.MANV
        GROUP BY n.MANV, n.HOTEN
        HAVING SUM (p.THOIGIAN) >= ALL (SELECT
        SUM(THOIGIAN) FROM PHANCONG GROUP BY
                                         37
Tương quan giữa SQL và ĐSQH

• Phép chọn: σ<condition>(<relation>) tương ứng mệnh đề
  WHERE trong SQL
• Phép chiếu: Π <attribute-list> (<relation>) tương ứng mệnh
  đề SELECT trong SQL
• Các phép toán tập hợp: Hợp tương ứng mệnh đề UNION
  trong SQL
• Tích Descartes (R × S: tên khác nhau ) tương ứng mệnh
  đề FROM trong SQL
• Kết (theta): chỉ là các liên từ trong điều kiện
   – Equi-join: Tất cả đều là phép so sánh bằng
   – Natural Join: Kết trên các thuộc tính có cùng tên
   – Outer Join: 1) kết o fr and s, 2) r, not s, 3) s, not r
                                                  38
Tương quan giữa SQL và
ĐSQH
 • Phép chia: R/S, tìm các thể hiện trong R
   thỏa tất cả các bộ trong S
    Ví dụ:    SELECT C.TENNV
              FROM NHANVIEN C
              WHERE C.MANV = ‘001’

   Cách tiếp cận:
     –Mệnh đề FROM tạo tích Descartes của
     các bảng được liệt kê.
                                39
Tương quan giữa SQL và ĐSQH


– Mệnh đề WHERE gán các dòng vào trong C
  theo trình tự và tạo bảng chỉ chứa các dòng
  thỏa điều kiện.
– Mệnh đề SELECT chỉ lưu lại các cột được
  liệt kê
– Tương đương với: πTenNVσMaNV=‘001’(NhanVien)



                                   40

More Related Content

PPT
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3
PDF
Bài 3: Làm việc với kiểu dữ liệu và mã kịch bản - Giáo trình FPT
PPT
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4
PPT
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3 VIEW
PPT
Thiet Ke Co So Du Lieu2
PPT
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
PPT
Bài 11 tạo bảng và sử dụng các kiểu dữ liệu
PDF
Bài 5 : Lập trình với CSDL trong SQL
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3
Bài 3: Làm việc với kiểu dữ liệu và mã kịch bản - Giáo trình FPT
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3 VIEW
Thiet Ke Co So Du Lieu2
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
Bài 11 tạo bảng và sử dụng các kiểu dữ liệu
Bài 5 : Lập trình với CSDL trong SQL

What's hot (20)

PPT
Ngon ngu truy van sql
PPTX
2 co ban ve sql
PDF
Com201 slide 4
PDF
PDF
Sql understanding
PDF
Bài 2 : Các đối tượng trong CSDL - SQL server
PDF
Com201 slide 3
PPT
04 chuong 4 - cap nhat du lieu
PPT
04 chuong 4 - sap xep, tim kiem, loc du lieu
PDF
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
PDF
Lý Thuyết SQL
PPT
PDF
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
DOC
Zend db
PDF
Baigiangphanquery
PDF
Com201 slide 7
PDF
Co so du lieu t sql
PDF
Bài 5: Chuẩn hóa cơ sở dữ liệu
PDF
Chuong 5 toi_uu_hoa_van_tin
PDF
Bài 7: Thiết kế cơ sở dữ liệu vật lý
Ngon ngu truy van sql
2 co ban ve sql
Com201 slide 4
Sql understanding
Bài 2 : Các đối tượng trong CSDL - SQL server
Com201 slide 3
04 chuong 4 - cap nhat du lieu
04 chuong 4 - sap xep, tim kiem, loc du lieu
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
Lý Thuyết SQL
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Zend db
Baigiangphanquery
Com201 slide 7
Co so du lieu t sql
Bài 5: Chuẩn hóa cơ sở dữ liệu
Chuong 5 toi_uu_hoa_van_tin
Bài 7: Thiết kế cơ sở dữ liệu vật lý
Ad

Viewers also liked (6)

PDF
Nhap mon csdl_db2_9.5
PDF
Sinh vienit.net --sinhvienit.net-giao-trinh-oracle-sql-plsql-co-ban
PDF
Hướng dẫn tự học Linux
DOC
Bai thu hoach dang loai gioi 2016
PDF
Lập trình hướng đối tượng với C++
PDF
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Nhap mon csdl_db2_9.5
Sinh vienit.net --sinhvienit.net-giao-trinh-oracle-sql-plsql-co-ban
Hướng dẫn tự học Linux
Bai thu hoach dang loai gioi 2016
Lập trình hướng đối tượng với C++
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Ad

Similar to nngu sql (20)

PPTX
ORACLE_ch2_SQL.pptx
PPSX
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
PDF
Chuong 4 - SQL - University of Information Technology.pdf
PDF
UEB Chuong 3.SV hoc di hoc di hoc di di di
PDF
b34-dml-sql-190213084703.pdf
PPT
2_Co ban ve SQL oracle trên oracle sql.ppt
PDF
Co sodulieu sql_dht_loi
PDF
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
PDF
Giáo trình sql
PDF
Sql dai hoc hue
PDF
[T2 vn] giao trinh sql
PDF
Baigiangsql
PDF
Baigiangsql
DOC
Giao trinh oracle
DOC
Giao trinh oracle[bookbooming.com]
DOC
Giao trinh oracle_sql_plsql_co_ban
PDF
Chương 4_1. Ngôn ngữ định nghĩa-thao tác dữ liệu SQL.pdf
PPT
csdl - buoi7-8-9
PDF
Cau lenh truy_van_sql
PDF
Cau lenh truy_van_sql
ORACLE_ch2_SQL.pptx
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
Chuong 4 - SQL - University of Information Technology.pdf
UEB Chuong 3.SV hoc di hoc di hoc di di di
b34-dml-sql-190213084703.pdf
2_Co ban ve SQL oracle trên oracle sql.ppt
Co sodulieu sql_dht_loi
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
Giáo trình sql
Sql dai hoc hue
[T2 vn] giao trinh sql
Baigiangsql
Baigiangsql
Giao trinh oracle
Giao trinh oracle[bookbooming.com]
Giao trinh oracle_sql_plsql_co_ban
Chương 4_1. Ngôn ngữ định nghĩa-thao tác dữ liệu SQL.pdf
csdl - buoi7-8-9
Cau lenh truy_van_sql
Cau lenh truy_van_sql

Recently uploaded (20)

DOCX
BÀI TIỂU LUẬN HẾT HỌC PHẦN TỔ CHỨC HOẠT ĐỘNG TRẢI NGHIỆM,HƯỚNG NGHIỆP Ở TRƯỜN...
DOC
TẦM QUAN TRỌNG CỦA VIỆC TUÂN THỦ CÁC QUY TẮC AN TOÀN GIAO THÔNG ĐƯỜNG BỘ
PPTX
Chương 1 – Tổng quan về Cơ sở dữ liệu.pptx
PDF
Quản trị sự kiện........................
PDF
Quyền-biểu-tình-của-công-dân-theo-hiến-pháp-Việt-Nam.pdf
PPTX
Giáo án Lý Luận Chung về Hành chính Nhà nước cập nhật mới....
PDF
PHÁT TRIỂN NĂNG LỰC KHÁM PHÁ TỰ NHIÊN CHO HỌC SINH TRONG DẠY HỌC CHỦ ĐỀ VẬT S...
PDF
CHUYÊN ĐỀ BỔ TRỢ NÂNG CAO DẠNG BÀI TẬP MỚI FORM 2025 - TIẾNG ANH 12 (TỜ RƠI Q...
PPTX
Bài 9.4 TUYẾN SINH DỤC NAM VÀ NU CẤU TẠO VÀ CHỨC NĂNG
PDF
CHƯƠNG 1-P2: ĐẢNG CỘNG SẢN VIỆT NAM RA ĐỜI VÀ LÃNH ĐẠO ĐẤU TRANH GIÀNH CHÍNH ...
PPTX
TIẾT 8, 9, 10. BÀI 32. DINH DƯỠNG VÀ TIÊU HÓA Ở NGƯỜI.pptx
PDF
[Toán 10] - Bộ 5 Đề Ôn Tập học Kì 2.pdf cho học sinh lớp 10
PPTX
Vai trò vô cùng quan trọng để thuyết trình.pptx
DOCX
BÀI TIỂU LUẬN HẾT HỌC PHẦN MÔN ĐÁNH GIÁ TRONG GIÁO DỤC
PPTX
TIẾT 11. BÀI 32 DINH DƯỠNG VÀ TIÊU HÓA Ở NGƯỜI.pptx
PPTX
Phân bố Nhị Thức Chuyên Đề Toán Lớp 12 Chân trời sáng tạo Tập 2
PPTX
Direct Marketing- chieu thi truyen thong
PPT
SINH 8 TUYẾN YÊN TUYẾN GIÁP CÂU TẠO VÀ CHỨC NĂNG
PPT
BÀi giảng phương pháp luận nghiên cứu khoa học.ppt
DOC
Chương 1 Tính tương đổi của chuyển động.doc
BÀI TIỂU LUẬN HẾT HỌC PHẦN TỔ CHỨC HOẠT ĐỘNG TRẢI NGHIỆM,HƯỚNG NGHIỆP Ở TRƯỜN...
TẦM QUAN TRỌNG CỦA VIỆC TUÂN THỦ CÁC QUY TẮC AN TOÀN GIAO THÔNG ĐƯỜNG BỘ
Chương 1 – Tổng quan về Cơ sở dữ liệu.pptx
Quản trị sự kiện........................
Quyền-biểu-tình-của-công-dân-theo-hiến-pháp-Việt-Nam.pdf
Giáo án Lý Luận Chung về Hành chính Nhà nước cập nhật mới....
PHÁT TRIỂN NĂNG LỰC KHÁM PHÁ TỰ NHIÊN CHO HỌC SINH TRONG DẠY HỌC CHỦ ĐỀ VẬT S...
CHUYÊN ĐỀ BỔ TRỢ NÂNG CAO DẠNG BÀI TẬP MỚI FORM 2025 - TIẾNG ANH 12 (TỜ RƠI Q...
Bài 9.4 TUYẾN SINH DỤC NAM VÀ NU CẤU TẠO VÀ CHỨC NĂNG
CHƯƠNG 1-P2: ĐẢNG CỘNG SẢN VIỆT NAM RA ĐỜI VÀ LÃNH ĐẠO ĐẤU TRANH GIÀNH CHÍNH ...
TIẾT 8, 9, 10. BÀI 32. DINH DƯỠNG VÀ TIÊU HÓA Ở NGƯỜI.pptx
[Toán 10] - Bộ 5 Đề Ôn Tập học Kì 2.pdf cho học sinh lớp 10
Vai trò vô cùng quan trọng để thuyết trình.pptx
BÀI TIỂU LUẬN HẾT HỌC PHẦN MÔN ĐÁNH GIÁ TRONG GIÁO DỤC
TIẾT 11. BÀI 32 DINH DƯỠNG VÀ TIÊU HÓA Ở NGƯỜI.pptx
Phân bố Nhị Thức Chuyên Đề Toán Lớp 12 Chân trời sáng tạo Tập 2
Direct Marketing- chieu thi truyen thong
SINH 8 TUYẾN YÊN TUYẾN GIÁP CÂU TẠO VÀ CHỨC NĂNG
BÀi giảng phương pháp luận nghiên cứu khoa học.ppt
Chương 1 Tính tương đổi của chuyển động.doc

nngu sql

  • 1. CHƯƠNG 5 Ngôn ngữ SQL (Structured Query Language) 1
  • 2. Giới thiệu SQL  Là ngôn ngữ chuẩn để truy vấn và thao tác trên CSDL quan hệ  Là ngôn ngữ phi thủ tục  Khởi nguồn của SQL là SEQUEL - Structured English Query Language, năm 1974)  Các chuẩn SQL  SQL89  SQL92 (SQL2)  SQL99 (SQL3) 2
  • 3. Nội dung chính  Ngôn ngữ định nghĩa dữ liệu: tạo bảng, sửa cấu trúc bảng̣, xóa bảng  Ngôn ngữ thao tác dữ liệu: thêm, xóa, sửa dữ liệu, và truy vấn dữ liệu.  Ngôn ngữ điều khiển dữ liệu: cấp quyền và thu hồi quyền sử dụng trên cơ sở dữ liệu.  Tương quan giữa SQL và ngôn ngữ ĐSQH 3
  • 4. Ngôn ngữ định nghĩa dữ liệu  Ngôn ngữ định nghĩa dữ liệu (DDL– Data Definition Language)  Bao gồm:  Lệnh tạo bảng (CREATE...)  Lệnh sửa cấu trúc bảng (ALTER...)  Lệnh xóa bảng (DROP...) 4
  • 5. Ngôn ngữ thao tác dữ liệu  Ngôn ngữ thao tác dữ liệu (DML – Data Manipulation Language)  Bao gồm:  Lệnh thêm dữ liệu (INSERT...)  Lệnh sửa dữ liệu (UPDATE...)  Lệnh xóa dữ liệu (DELETE...)  Truy vấn dữ liệu (SELECT...) 5
  • 6. Ngôn ngữ điều khiển dữ liệu  Ngôn ngữ điều khiển dữ liệu (DCL – Data Control Language)  Bao gồm:  Lệnh cấp quyền cho người sử dụng cơ sở dữ liệu (GRANT...)  Lệnh thu hồi quyền hạn của người sử dụng cơ sở dữ liệu (REVOKE...) 6
  • 7. Ngôn ngữ định nghĩa dữ liệu Tạo bảng (1)  Cú pháp CREATE TABLE tên_bảng ( tên_cột1 kiểu_dữ_liệu [not null], tên_cột2 kiểu_dữ_liệu [not null], … tên_cộtn kiểu_dữ_liệu [not null], khai báo khóa chính, khóa ngoại, ràng buộc toàn vẹn ) 7
  • 8. Ngôn ngữ định nghĩa dữ liệu Tạo bảng (2) Các kiểu dữ liệu SQL Server Oracle Chuỗi ký tự varchar(n), char(n), varchar2(n), Text nchar(n), nvarchar2(n) Số tinyint,smallint,int number(n), numeric, decimal, number(n,m) float, real Ngày tháng smalldatetime, date datetime 8
  • 9. Ngôn ngữ định nghĩa dữ liệu Tạo bảng (3) Cho lược đồ CSDL “quản lý đề án cty” như sau NHANVIEN (MaNV, HoNV, TenLot, TenNV, Phai, Luong, Phong, NgaySinh, DiaChi, Ma_NQL) PHONGBAN (MaPHG, TenPHG, TrPHG, NG_NhanChuc) DEAN (MaDA, TenDA, DDIEM_DA, Phong) PHANCONG (MaNV, MaDA, ThoiGian) DIADIEM_PHG (MaPHG, DIADIEM) THANNHAN (MaNV, TenTN, Phai, NGSinh,QuanHe) 9
  • 10. Ngôn ngữ định nghĩa dữ liệu Tạo bảng (4)  Ví dụ: câu lệnh để tạo một bảng nhân viên CREATE TABLE NHANVIEN ( MANV varchar(10) NOT NULL, HONV varchar(50) NOT NULL, TENLOT varchar(50) NOT NULL, TENNV varchar(50) NOT NULL, NGAYSINH datetime, PHAI varchar(3) NOTNULL, DIACHI varchar(100), MA_NQL varchar(10), PHONG varchar(10), LUONG numeric, CONSTRAINT PK_NV PRIMARY KEY (MANV), CONSTRAINT FK_NV_PB FOREIGN KEY (PHONG) REFERENCES PHONGBAN (MAPHG) ) 10
  • 11. Ngôn ngữ định nghĩa dữ liệu Sửa cấu trúc bảng (1)  Thêm thuộc tính ALTER TABLE tên_bảng ADD tên_cột kiểu_dữ_liệu  Ví dụ: thêm cột Ghi_chú vào bảng nhân viên ALTER TABLE NHANVIEN ADD GHI_CHU varchar(20)  Sửa kiểu dữ liệu thuộc tính ALTER TABLE tênbảng ALTER COLUMN tên_cột kiểu_dữ_liệu_mới 11
  • 12. Ngôn ngữ định nghĩa dữ liệu Sửa cấu trúc bảng ( 2)  Ví dụ: sửa kiểu dữ liệu của cột Ngày sinh ALTER TABLE NHANVIEN ALTER COLUMN NGAYSINH SMALLDATETIME  Xóa thuộc tính ALTER TABLE tên_bảng DROP COLUMN tên_cột  Ví dụ: xóa cột Ghi_chú từ bảng nhân viên ALTER TABLE NHANVIEN DROP COLUMN GHI_CHU 12
  • 13. Ngôn ngữ định nghĩa dữ liệu Sửa cấu trúc bảng ( 3)  Thêm ràng buộc toàn vẹn UNIQUE tên_cột PRIMARY KEY tên_cột ALTER TABLE <tên_bảng> ADD CONSTRAINT FOREIGN KEY tên_cột <tên_ràng_buộc> REFERENCES tên_bảng (cột_là_khóa_chính) [ON DELETE CASCADE] [ON UPDATE CASCADE] CHECK (tên_cột điều_kiện) 13
  • 14. Ngôn ngữ định nghĩa dữ liệu Sửa cấu trúc bảng ( 4)  Ví dụ  ALTER TABLE NHANVIEN ADD CONSTRAINT PK_NV PRIMARY KEY (MANV)  ALTER TABLE NHANVIEN ADD CONSTRAINT FK_NV_PB FOREIGN KEY (PHONG) REFERENCES PHONGBAN(MAPHG)  ALTER TABLE NHANVIEN ADD CONSTRAINT CHK CHECK ( PHAI IN (‘Nam') OR (‘Nu’))  ALTER TABLE NHANKHAU ADD CONSTRAINT UQ_NK UNIQUE (CMND) 14
  • 15. Ngôn ngữ định nghĩa dữ liệu Sửa cấu trúc bảng ( 5)  Xóa ràng buộc toàn vẹn ALTER TABLE tên_bảng DROP CONSTRAINT tên_ràng_buộc  Ví dụ ALTER TABLE NHANVIEN DROP CONSTRAINT FK_NV_PB 15
  • 16. Ngôn ngữ định nghĩa dữ liệu Xóa bảng  Cú pháp DROP TABLE tên_bảng  Ví dụ: xóa bảng (table) nhân viên DROP TABLE NHANVIEN  Ví dụ: xóa bảng (table) phân công DROP TABLE PHANCONG 16
  • 17. Ngôn ngữ thao tác dữ liệu Thêm dữ liệu vào bảng  Cú pháp INSERT INTO tên_bảng VALUES (giá_trị_1, giá_trị_2,…, giá_trị_n) INSERT INTO tên_bảng (cột1, cột2) VALUES (giá_trị_1, giá_trị_2)  Ví dụ INSERT INTO NHANVIEN VALUES (‘001’, ‘Vuong’, ‘Ngoc’, ‘Quyen’, ’01/01/1977’, ‘Nu’, ’450 Trung Vuong, Ha Hoi’, ‘12345’, ‘QL’, 2000) 17
  • 18. Ngôn ngữ thao tác dữ liệu Sửa dữ liệu của bảng  Cú pháp UPDATE tên_bảng SET cột_1 = giá_trị_1, cột_2 = giá_trị_2 [WHERE điều_kiện]  Ví dụ: Sửa họ nhân viên có mã số ‘001’ thành ‘Nguyen’ UPDATE NHANVIEN SET HONV = ‘Nguyen’ WHERE MANV=‘001’ 18
  • 19. Ngôn ngữ thao tác dữ liệu Sửa dữ liệu của bảng  Cú pháp  Ví dụ: Sửa họ tên của nhân viên có mã số ‘001’ thành ‘Nguyen Thanh Tung’ và ngày sinh mới là 1/1/1978 UPDATE NHANVIEN SET HONV = ‘Nguyen’, TENLOT = ‘Thanh’, TENNV = Tung’, NGAYSINH=‘1/1/1978’ WHERE MANV=‘001’ 19
  • 20. Ngôn ngữ thao tác dữ liệu Xóa dữ liệu trong bảng  Cú pháp DELETE FROM tên_bảng [WHERE điều_kiện]  Ví dụ: xóa nhân viên có mã số ‘001’ DELETE FROM NHANVIEN WHERE MANV=‘001’  Ví dụ: xóa toàn bộ nhân viên DELETE FROM NHANVIEN 20
  • 21. Ngôn ngữ thao tác dữ liệu Câu truy vấn SELECT  Câu truy vấn tổng quát SELECT [DISTINCT] tên_cột | hàm FROM bảng [WHERE điều_kiện] [GROUP BY cột] [HAVING điều_kiện] [ORDER BY cột ASC | DESC] 21
  • 22. Ngôn ngữ thao tác dữ liệu Toán tử truy vấn (1)  Toán tử so sánh = > < >= <= <>  Toán tử logic: AND, OR, NOT  Phép toán: +, - ,* , / 22
  • 23. Ngôn ngữ thao tác dữ liệu Toán tử truy vấn (2)  Các toán tử so sánh khác  BETWEEN - định nghĩa một đoạn giá trị liên tục  IS NULL - kiểm tra giá trị thuộc tính có null hay không  LIKE – kiểm tra chuỗi ký tự tương tự  IN – kiểm tra giá trị thuộc tính có thuộc tập hợp các giá trị đã định nghĩa hay không  EXISTS – mang giá trị TRUE nếu mệnh đề so sánh trả về ít nhất một bộ (record), FALSE nếu ngược lại 23
  • 24. Ngôn ngữ thao tác dữ liệu Toán tử truy vấn (3)  Toán tử BETWEEN  Ví dụ  SELECT * FROM NHANVIEN WHERE year(NGAYSINH) BETWEEN 1965 AND 1977  SELECT n.MANV, n.TENNV, p.TENPHG FROM NHANVIEN n, PHONGBAN p WHERE n.PHONG=p.MAPHG AND n.LUONG NOT BETWEEN 1000 AND 3000 24
  • 25. Ngôn ngữ thao tác dữ liệu Toán tử truy vấn (4)  Toán tử IS NULL  Ví dụ a. SELECT * FROM NHANVIEN WHERE MA_NQL IS NOT NULL b. SELECT h.MAHV,h.HOTEN,h.DIACHI FROM HOCVIEN h, BIENLAI b WHERE h.MAHV=b.MAHV AND b.TIENNOP IS NULL 25
  • 26. Ngôn ngữ thao tác dữ liệu Toán tử truy vấn (5)  Toán tử LIKE  So sánh chuỗi tương đối  Cú pháp: s LIKE p, p có thể chứa % hoặc _  % : thay thế một chuỗi ký tự bất kỳ  _ : thay thế một ký tự bất kỳ  Ví dụ SELECT * FROM NHANVIEN WHERE HONV LIKE ‘Nguyen%’ 26
  • 27. Ngôn ngữ thao tác dữ liệu Toán tử truy vấn (6)  Toán tử IN  Ví dụ a. SELECT * FROM NHANVIEN WHERE PHONG IN (‘NC’,’QL’,’DH’) b. SELECT MANV, TENNV, DIACHI FROM NHANVIEN WHERE MANV NOT IN (SELECT MANV FROM 27
  • 28. Ngôn ngữ thao tác dữ liệu Toán tử truy vấn (7)  Toán tử EXISTS  Ví dụ a. SELECT d.TENDA, p.TENPHG FROM PHONGBAN p, DEAN d WHERE p.MAPHG = d.PHONG AND EXISTS (SELECT pc.MADA FROM PHANCONG pc WHERE d.MADA=pc.MADA) b. SELECT * FROM NHANVIEN n WHERE NOT EXISTS (SELECT * FROM DEAN d WHERE NOT EXISTS (SELECT * FROM PHANCONG p WHERE 28
  • 29. Ngôn ngữ thao tác dữ liệu Mệnh đề GROUP BY (1)  Mệnh đề GROUP BY  Chia các dòng thành các nhóm dựa trên tập con của các thuộc tính  Tất cả các thành viên của nhóm đều thỏa các thuộc tính này.  Mỗi nhóm được mô tả bằng một dòng các thuộc tính, được giới hạn bởi:  Các thuộc tính chung của tất cả thành viên thuộc nhóm (được liệt kê trong mệnh đề GROUP BY).  Các phép toán trên nhóm. 29
  • 30. Ngôn ngữ thao tác dữ liệu Mệnh đề GROUP BY (2) Chia các dòng thành các a nhóm dựa trên tập con a của các thuộc tính b b c nhóm c c c c d d d Các thuộc tính GROUP 30 BY
  • 31. Ngôn ngữ thao tác dữ liệu Mệnh đề GROUP BY (3)  Các hàm SQL cơ bản  COUNT: Đếm số bộ dữ liệu của thuộc tính  MIN: Tính giá trị nhỏ nhất  MAX: Tính giá trị lớn nhất  AVG: Tính giá trị trung bình  SUM: Tính tổng giá trị các bộ dữ liệu 31
  • 32. Ngôn ngữ thao tác dữ liệu Mệnh đề GROUP BY (4)  Ví dụ: tìm tổng lương, lương lớn nhất, lương ít nhất và lương trung bình của các nhân viên SELECT SUM(LUONG), MAX(LUONG), MIN(LUONG), AVG(LUONG) FROM NHANVIEN ;  Ví dụ: tìm tổng lương, lương lớn nhất, lương ít nhất và lương trung bình của các nhân viên phòng “Nghiên cứu” SELECT SUM(LUONG), MAX(LUONG), MIN(LUONG), AVG(LUONG) from NHANVIEN , PHONGBAN WHERE MAPHG=PHONG AND TENPHG='Nghien cuu';  Ví dụ: cho biết số lượng nhân viên 32 SELECT COUNT(*) FROM NHANVIEN;
  • 33. Ngôn ngữ thao tác dữ liệu Mệnh đề GROUP BY (5)  Ví dụ SELECT n.MANV, n.TENNV, n.PHONG, MIN(p.THOIGIAN) thap_nhat, MAX (p.THOIGIAN) cao_nhat, AVG(p.THOIGIAN) trung_binh, SUM (p.THOIGIAN) tong_so_gio FROM NHANVIEN n, PHANCONG p WHERE n.MANV=p.MANV GROUP BY n.MANV, n.HOTEN, n.PHONG 33
  • 34. Ngôn ngữ thao tác dữ liệu Mệnh đề HAVING  Mệnh đề HAVING  Lọc kết quả theo điều kiện, sau khi đã gom nhóm  Điều kiện của HAVING là các thuộc tính trong danh sách GROUP BY và các phép tính toán khác. 34
  • 35. Ngôn ngữ thao tác dữ liệu Mệnh đề HAVING  Ví dụ: cho biết tên từng phòng ban và tổng số nhân viên, mức lương trung bình của các phòng có mức lương trung bình trên 2000 SELECT p.TENPHG, COUNT(*) so_luong_nv, AVG(n.LUONG) luong_tb FROM NHANVIEN n, PHONGBAN p WHERE n.PHONG = p.MAPHG GROUP BY p.TENPHB HAVING AVG(n.LUONG) > 2000 35
  • 36. Ngôn ngữ thao tác dữ liệu Truy vấn con (Subquery)  Subquery  Các mệnh đề SELECT được lồng vào nhau  Kết quả của câu SELECT này là điều kiện của câu SELECT khác.  Các mệnh đề SELECT được nối với nhau bằng các phép so sánh <,>,<>,=,>=,<=, IN, EXISTS, ALL, ANY, SOME,… 36
  • 37. Ngôn ngữ thao tác dữ liệu Truy vấn con (Subquery)  Ví dụ  Liệt kê nhân viên có số giờ làm việc nhiều nhất trong công ty. SELECT n.MANV, n.TENNV, SUM (p.THOIGIAN) FROM NHANVIEN n, PHANCONG p WHERE n.MANV = p.MANV GROUP BY n.MANV, n.HOTEN HAVING SUM (p.THOIGIAN) >= ALL (SELECT SUM(THOIGIAN) FROM PHANCONG GROUP BY 37
  • 38. Tương quan giữa SQL và ĐSQH • Phép chọn: σ<condition>(<relation>) tương ứng mệnh đề WHERE trong SQL • Phép chiếu: Π <attribute-list> (<relation>) tương ứng mệnh đề SELECT trong SQL • Các phép toán tập hợp: Hợp tương ứng mệnh đề UNION trong SQL • Tích Descartes (R × S: tên khác nhau ) tương ứng mệnh đề FROM trong SQL • Kết (theta): chỉ là các liên từ trong điều kiện – Equi-join: Tất cả đều là phép so sánh bằng – Natural Join: Kết trên các thuộc tính có cùng tên – Outer Join: 1) kết o fr and s, 2) r, not s, 3) s, not r 38
  • 39. Tương quan giữa SQL và ĐSQH • Phép chia: R/S, tìm các thể hiện trong R thỏa tất cả các bộ trong S Ví dụ: SELECT C.TENNV FROM NHANVIEN C WHERE C.MANV = ‘001’ Cách tiếp cận: –Mệnh đề FROM tạo tích Descartes của các bảng được liệt kê. 39
  • 40. Tương quan giữa SQL và ĐSQH – Mệnh đề WHERE gán các dòng vào trong C theo trình tự và tạo bảng chỉ chứa các dòng thỏa điều kiện. – Mệnh đề SELECT chỉ lưu lại các cột được liệt kê – Tương đương với: πTenNVσMaNV=‘001’(NhanVien) 40

Editor's Notes