0

C7 SQL

30 7 0
  • C7 SQL

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

Tài liệu liên quan

Thông tin tài liệu

Ngày đăng: 14/01/2021, 16:12

- Tóm lại, việc cập nhật dữ liệu của một bảng (thêm mới, sửa đổi nội dung, hủy bỏ) cần phải thỏa mãn tất cả các ràng buộc được định nghĩa trên bảng đó, nhằm đảm bảo tính kết nối của [r] (1)(2)NỘI DUNG  Giới thiệu  Tạo truy vấn (3)Giới thiệu Ngôn ngữ truy vấn có cấu trúc (SQL _ Structure Query Language) một ngôn ngữ thường dùng để truy vấn, cập nhật quản lý sở liệu quan hệ (relational database) như Access SQL gồm lệnh, mệnh đề, tốn tử hàm aggregate (hàm tính gộp theo nhóm), các phần tử kết hợp lại để thành phát biểu SQL SQL chia làm hai thành phần: DDL (Data Definition Language _ Ngôn ngữ định nghĩa liệu) DML (Data Manipulation Language _ Ngôn ngữ thao tác liệu) Các lệnh DDL cho phép bạn tạo định nghĩa sở dữ liệu (database), thuộc tính (field) mục (index) Còn lệnh DML cho phép bạn xây dựng truy vấn (4)Giới thiệu  Các phát biểu DDL biểu thức xây dựng từ lệnh SQL sau: CREATE Dùng tạo bảng, thuộc tính mục DROP Dùng xóa bảng mục từ sở liệu ALTER Dùng hiệu chỉnh bảng cách thêm vào thuộc tính hay thay đổi định nghĩa thuộc tính  Các phát biểu DML biểu thức xây dựng từ lệnh SQL sau: SELECT Dùng truy vấn mẫu tin thỏa điều kiện định INSERT Dùng chèn loạt liệu vào sở liệu thao tác UPDATE Dùng thay đổi giá trị mẫu tin hay thuộc tính nào (5)Giới thiệu  Các mệnh đề dùng hiệu chỉnh điều kiện dùng định nghĩa liệu muốn chọn hay thao tác Gồm mệnh đề sau: FROM Dùng định tên bảng, nơi mẫu tin chọn WHERE Dùng định điều kiện mẫu tin phải thỏa để chọn GROUP BY Dùng phân chia mẫu tin thành nhóm riêng biệt (6)Tạo truy vấn thao tác liệu  Cách mở cửa sổ thiết kế truy vấn SQL Bước 1: Chọn Create  Query Design Sau bước cửa sổ Show tables xuất (như phần thiết kế truy vấn QBE) Bước 2: Đóng cửa sổ Show table lại, chọn SQL View Cửa sổ thiết kế SQL xuất hiện, soạn câu lệnh SQL cửa sổ (7)(8)SELECT [DISTINCT|ALL]{*| <danh sách thuộc tính>|<biểu thức cột> [AS <tên mới>]} FROM <tên bảng>[<bí danh>] [, …] [WHERE <điều kiện lựa chọn ghi>] [GROUP BY <danh sách tên cột dùng để gộp nhóm>] [HAVING <điều kiện lựa chọn nhóm>] [ORDER BY <danh sách cột dùng để xếp>] Trong đó: - biểu thức cột: tên cột biểu thức - tên bảng: tên bảng khung nhìn - bí danh: tên viết tắt tên bảng - GROUP BY dùng để nhóm ghi có giá trị danh sách tên cột dùng để gộp nhóm thành nhóm - HAVING dùng để lọc nhóm thỏa mãn điều kiện lựa chọn nhóm - ORDER BY qui định thứ tự ghi kết trả ra, thứ tự ghi xếp dựa vào giá trị cột danh sách cột dùng để xếp * Khi viết lệnh SQL cần ý: - Phần đặt cặp dấu [ ]: phần sử dụng không - Những phần đặt cặp dấu {} : bắt buộc phải lựa chọn số giá trị cặp dấu ngoặc - Phần đặt cặp dấu <>: phần bắt buộc phải có viết lệnh SQL (9)Một số loại điều kiện đặt sau từ khóa WHERE - So sánh giá trị hai biểu thức - Kiểm tra xem giá trị biểu thức có nằm khoảng giá trị xác định không - Kiểm tra xem giá trị biểu thức có giá trị thuộc tập hợp xác định không - Kiểm tra xem cột có chứa giá trị null khơng Một số toán tử dùng SQL Các toán tử logic dùng để nối biểu thức, thường dùng mệnh đề WHERE, gồm toán tử AND, OR NOT Các toán tử so sánh dùng để so sánh giá trị quan hệ hai biểu thức, gồm toán tử sau: Toán tử Ý nghĩa <, <=, >, >=, =, <> nhỏ hơn, nhỏ hay bằng, lớn hớn, lớn hay bằng, bằng, khác (không bằng) BETWEEN … AND… (trong khoảng) dùng định vùng giá trị LIKE, IS NULL, IS NOT NULL giống như, có giá trị null, có giá trị khác rỗng IN , NOT IN thuộc vào, không thuộc vào - Kí hiệu % dùng để sánh hợp với xâu Kí hiệu _ (dấu nối dưới) dùng (10)Ví dụ Cho biết mã nhân viên, họ tên, đơn vị lương những nhân viên có lương lớn 2300000 SELECT manv, hoten, ma_dv, luong FROM nhan_vien WHERE luong>2300000 Ví dụ Tìm tên nhân viên có mã đơn vị „P4‟ lương thấp 2500000 SELECT manv, ho_ten, ma_dv, luong FROM nhan_vien (11) Kết nối bảng Trong trường hợp câu hỏi liên quan đến nhiều bảng cần kết nối bảng với Có kiểu kết nối kết nối (INNER JOIN) kết nối ngồi (LEFT JOIN, RIGHT JOIN) Ví dụ, kết nối bảng nhanvien va bảng phong dựa điều kiện kết nối nhanvien.maphong=phong.maphong - Kết nối trong: bảng nhanvien kết nối với bảng phong maphong hai - Kết nối ngoài: Nếu nhanvien LEFT JOIN phong ON nhanvien.maphong=phong.maphong với t bảng nhanvien ghép với k bảng phong hai có maphong nhau, khơng tìm thấy bảng phong có maphong maphong t t ghép với có giá trị null bảng phong Kết nối nhanvien RIGHT JOIN phong ON nhanvien.maphong = phong.maphong cho kết kết nối phong LEFT JOIN nhanvien ON (12) Ví dụ 1: Tìm ngoại ngữ mà chưa có nhân viên nào học? Cách 1: SELECT mann, tenn FROM dmnn LEFT JOIN tdnn ON dmnn.mann=tdnn.mann WHERE tdnn.mann IS null Cách 2: SELECT mann, tenn FROM dmn (13) Ví dụ 2: Cho biết mã nhân viên, họ tên, lương nhân viên làm phòng "kỹ thuật”? Cách 1: SELECT manv, hoten, luong FROM nhanvien INNER JOIN phong ON nhanvien.maphong=phong.maphong WHERE tenphong="kỹ thuật" Cách 2:SELECT manv, hoten, luong FROM nhanvien, phong WHERE nhanvien.maphong = phong.maphong AND tenphong="kỹ thuật" Ví dụ 3:Cho biết mã nhân viên, họ tên, ngày sinh nhân viên có tiếng Anh đạt trình độ từ C trở lên SELECT nhanvien.manv, hoten, ngaysinh FROM (nhanvien INNER JOIN tdnn ON nhanvien.manv=tdnn.manv) INNER JOIN dmnn ON tdnn.mann=dmnn.mann WHERE tennn=‟Anh‟ AND tdo>=‟C‟ (14) Sử dụng hàm gộp, GROUP BY, HAVING SQL sử dụng số hàm gộp sau: SUM(thuộc tính): Tính tổng giá trị thuộc tính MAX(thuộc tính): Tính giá trị lớn thuộc tính MIN(thuộc tính): Tính giá trị nhỏ thuộc tính AVG(thuộc tính): Tính giá trị trung bình thuộc tính COUNT(* | thuộc tính | distinct thuộc tính): Đếm số quan hệ COUNT(*): Đếm tất COUNT(thuộc tính): Đếm mà giá trị thuộc tính khác null COUNT(distinct thuộc tính): Đếm mà giá trị thuộc tính khác null khơng trùng Ví dụ 1: Cho biết số nhân viên, tổng lương toàn quan? SELECT COUNT(manv) AS sonv, SUM(luong) AS tongluong FROM nhanvien Ví dụ 2: Cho biết lương cao nhất, lương trung b́nh đơn vị? Thông tin đưa gồm: mã phịng, tên phịng, lương cao nhất, lương trung bình phịng SELECT phong.maphong, tenphong, MAX(luong) AS maxluong, AVG(luong) AS luongtb (15)Cú pháp câu lệnh INSERT  Thêm mẫu tin Cú pháp: INSERT INTO <tên bảng> VALUES (<giá trị>, …) Lệnh thêm vào bảng <tên bảng> Các giá trị: <giá trị>, … gán cho thuộc tính theo thứ tự khai báo lệnh CREATE TABLE Ví dụ: Thêm lớp vào bảng Lop INSERT INTO Lop VALUES („K4TA‟, „Khóa Tối A‟, 25) Chú ý: Trong trường hợp không xác định đầy đủ tất giá trị của thuộc tính, phải mơ tả cách cụ thể danh sách thuộc tính nhận giá trị theo cú pháp sau: INSERT INTO <tên bảng> (<thuộc tính>, …) VALUES (<giá trị>, …) Các thuộc tính khơng liệt kê danh sách nhận giá trị null (nếu thuộc tính khơng bị ràng buộc giá trị NOT NULL) Ví dụ: Thêm học viên vào bảng Lop INSERT INTO Hocvien (MaHV, Holot, Ten, Phai, Ngaysinh, Diachi) (16) Thêm nhiều mẫu tin Cú pháp: INSERT INTO <tên bảng> SELECT <danh sách cột> FROM <tên bảng chứa liệu> Ví dụ 1: Nối tất mẫu tin bảng New Customers vào bảng Customers INSERT INTO Customers SELECT [New Customers].* FROM New Customers Ví dụ 2: Nối tất nhân viên tập vào bảng Employees có thời gian tập 30 ngày (17)Cú pháp câu lệnh UPDATE Cú pháp: UPDATE <tên bảng> SET <thuộc tính> = <giá trị mới>, … WHERE <điều kiện> Những giá trị gán cho thuộc tính phải thuộc miền giá trị tương ứng thuộc tính Lệnh UPDATE cập nhật liệu cho thỏa mãn điều kiện theo sau từ khóa WHERE Ví dụ 1: Sửa ngày sinh học viên có mã số 123 thành 25/10/79 UPDATE Hocvien SET Ngaysinh = 25/10/79 WHERE MaHV = „123‟ Ví dụ 2: Tăng giá bán (Unit Price) cho tất mặt hàng khơng cịn sản xuất từ nhà cung cấp có mã số (Supplier ID) lên 10% UPDATE Products SET UnitPrice = UnitPrice * 1.1 (18)Cú pháp câu lệnh DELETE Cú pháp: DELETE FROM <tên bảng> WHERE <điều kiện> Lệnh loại bỏ khỏi bảng <tên bảng> tất thỏa mãn điều kiện theo sau từ khóa WHERE Ví dụ 1: Hủy bỏ học viên có mã số khơng hợp lệ (có giá trị null) bảng Hocvien DELETE FROM Hocvien WHERE MaHV is Null Ví dụ 2: Hủy bỏ mơn học Cơ sở liệu (có MaMH = „CSDL‟) bảng Monhoc DELETE FROM Monhoc WHERE MaMH = (19)Chú ý: - Các thao tác cập nhật liệu làm cho sở liệu khơng cịn tính kết nối (cohenrence) vi phạm ràng buộc áp đặt lên sở liệu Chẳng hạn: - Khi thêm vào bảng Hocvien ví dụ sẽ gây lỗi sai, có học viên khác mang mã số „567‟ (vi phạm ràng buộc nhất) - Khi xóa mơn học Cơ sở liệu bảng Monhoc, làm các có MaMH = „CSDL‟ bảng Ketqua khơng cịn kết nối với bảng Monhoc trở nên “mồ côi” - Các hệ quản trị sở liệu giải tình trạng khơng kết nối theo cách sau: Không cho phép người sử dụng thực thao tác hủy khơng hợp lệ (báo lỗi sai) Tự động loại bỏ “mồ côi” khỏi bảng Ketqua (20)Tạo truy vấn định nghĩa liệu (DDL) Mỗi truy vấn định nghĩa liệu gồm phát biểu định nghĩa liệu Access sử dụng phát biểu sau: Lệnh Ý nghĩa CREATE TABLE Tạo bảng ALTER TABLE Hiệu chỉnh bảng có DROP TABLE Xóa bảng khỏi CSDL (21)Cách tạo truy vấn định nghĩa liệu Bước 1: Tạo truy vấn không đưa bảng vào truy vấn (bấm nút Close hộp thoại Add Tables xuất hiện, để đóng hộp thoại lại) Bước 2: Chọn menu Query, SQL Specific,Data-Definition Cửa sổ Data-Definition Query xuất Bước 3: Nhập phát biểu SQL cho truy vấn định nghĩa liệu Lưu ý: Không chuyển truy vấn định nghĩa liệu sang truy vấn khác, không, phát biểu SQL vừa nhập bị Bước 4: Bấm nút ! (Run) để thực thi truy vấn Access (22)3.2 Tạo cấu trúc cho bảng (câu lệnh CREATE TABLE) Cú pháp: CREATE TABLE <tên bảng>(<thuộc tính> <kiểu> [(<kích thước>)], … CONSTRAINT <tên mục> PRIMARY KEY (<khóa chính>) [ UNIQUE (<khóa>), … ] [FOREIGN KEY (<khóa ngoại>) REFERENCES <bảng ngoại>, …]) (23)Trong đó: Kiểu gồm: + Kiểu số nguyên: Integer, Long + Kiểu số thực: Single, Double + Kiểu chuỗi: Text(n) (chuỗi gồm n ký tự) + Kiểu ngày/giờ: Date,Time + Kiểu tiền tệ: Currency + Kiểu luận lý (true, false): Yes/No Mệnh đề CONSTRAINT + PRIMARY KEY: khai báo khóa bảng (24)Ví dụ 1: Tạo bảng NHANVIEN gồm thuộc tính: MANV (Primary, AutoNumber), NGAYSINH (Date/Time) TEN (Text, Size: 12) HOLOT (Text, Size: 30) DIACHI(Text, Size: 50) DIENTHOAI (Text, Size: 12) Bước 1: Tạo truy vấn Bước 2: Chọn menu Query, SQL Specific, Data Definition Trong cửa sổ Data Definition Query, nhập phát biểu sau: CREATE TABLE NHANVIEN(MANV COUNTER, TEN TEXT(12), HOLOT TEXT(30), NGAYSINH DATETIME, DIACHI TEXT(50), DIENTHOAI TEXT(12) CONSTRAINT MANV_P PRIMARY KEY (MANV)); Bước 3: Bấm nút Run để thực thi truy vấn định nghĩa liệu Access sẽ tạo bảng NHANVIEN bạn thấy cửa sổ sở liệu tên bảng NHANVIEN * Nếu truy vấn định nghĩa liệu lưu lại với tên Data Definition Query bạn thấy cửa sổ sở liệu tên truy vấn định (25)Ví dụ 2: Tạo bảng (quan hệ) Hocvien gồm thuộc tính mã học viên (MaHV), họ (Holot), tên (Ten), ngày sinh (Ngaysinh) có khóa (PrimaryKey) MaHV CREATE TABLE Hocvien(MaHV Text(8), Ho Text(30), Ten Text(10), Ngaysinh DateTime), CONSTRAINT PrimaryKey PRIMARY KEY (MaHV)) Ví dụ 3: Tạo bảng Lop gồm thuộc tính mã lớp (MaLop), tên lớp (TenLop), sĩ số (Siso) CREATE TABLE Lop(MaLop Text(8), TenLop Text(30), Siso Byte, CONTSTRAINT Khoachinh PRIMARY KEY (MaLop) UNIQUE (26)Hiệu chỉnh cấu trúc bảng (Câu lệnh ALTER TABLE) Cú pháp: ALTER TABLE <tên bảng> ADD {[COLUMN] <thuộc tính> <kiểu> [(<kích thước>)] | [CONSTRAINT <chỉ mục>] } | DROP {[COLUMN] <thuộc tính> | CONSTRAINT <tên chỉ mục>} Với phát biểu, bạn thêm hay xóa thuộc tính ADD COLUMN: thêm thuộc tính ADD CONSTRAINT: thêm mục nhiều trường (xem lại phần trên) DROP COLUMN: xóa thuộc tính (27)Ví dụ 1: Thêm thuộc tính Phai vào bảng Hocvien ALTER TABLE Hocvien ADD Phai YesNo; Ví dụ 2: Xóa thuộc tính NGAYSINH bảng Hocvien ALTER TABLE Hocvien DROP COLUMN (28)Xóa bảng (Câu lệnh DROP TABLE) Cú pháp: DROP TABLE <tên bảng> Ví dụ: Xóa bảng Hocvien: (29)Tạo mục (Câu lệnh CREATE INDEX) Cú pháp: CREATE [UNIQUE] INDEX <tên mục> ON <bảng> (<thuộc tính>), … [WITH {PRIMARY | DISALLOW NULL | IGNORE NULL }] Trong đó: UNIQUE: giá trị thuộc tính làm mục khơng trùng lặp PRIMARY: tạo mục khóa chính, chọn PRIMARY bỏ qua UNIQUE DISALLOW NULL: thuộc tính làm mục khơng nhận giá trị rỗng (null) IGNORE NULL: thuộc tính làm mục nhận giá trị rỗng (null) Ví dụ: Tạo mục (khóa) cho thuộc tính MaHV bảng Hocvien: (30)Xóa mục (Câu lệnh DROP INDEX) Cú pháp: DROP INDEX <tên mục> ON <bảng> Ví dụ: Xóa mục (khóa) MaHocvien bảng Hocvien:
- Xem thêm -

Xem thêm: C7 SQL, C7 SQL

Hình ảnh liên quan

Màn hình tạo câu truy vấn SQL - C7 SQL

n.

hình tạo câu truy vấn SQL Xem tại trang 7 của tài liệu.
Cú pháp: INSERT INTO <tên bảng> SELECT - C7 SQL

ph.

áp: INSERT INTO <tên bảng> SELECT Xem tại trang 16 của tài liệu.
ALTER TABLE Hiệu chỉnh bảng đã có. - C7 SQL

i.

ệu chỉnh bảng đã có Xem tại trang 20 của tài liệu.
3.2 Tạo cấu trúc cho bảng (câu lệnh CREATE TABLE) - C7 SQL

3.2.

Tạo cấu trúc cho bảng (câu lệnh CREATE TABLE) Xem tại trang 22 của tài liệu.
Ví dụ 1: Thêm thuộc tính Phai vào bảng Hocvien - C7 SQL

d.

ụ 1: Thêm thuộc tính Phai vào bảng Hocvien Xem tại trang 27 của tài liệu.
Xóa bảng (Câu lệnh DROP TABLE) - C7 SQL

a.

bảng (Câu lệnh DROP TABLE) Xem tại trang 28 của tài liệu.
DROP INDEX <tên chỉ mục> ON <bảng> - C7 SQL

lt.

;tên chỉ mục> ON <bảng> Xem tại trang 30 của tài liệu.