



















Preview text:
THỰC HÀNH CƠ SỞ DỮ LIỆU Điểm: Nhận xét:
Ngày tháng:11-5-2024.........................................................................................................
Lớp:D21CQVT01-N............................................................................................................
Nhóm:..................................................................................................................................
MSSV:N21DCVT126..........................................................................................................
Họ và tên:Vũ Quang Vinh....................................................................................................
.............................................................................................................................................
............................................................................................................................................. MỤC LỤC 1
1. Lệnh tạo bảng sử dụng lệnh Create Table.......................................................................3
2. Tạo bảng với Lệnh Create Table As...............................................................................5
3. Lệnh ALTER TABLE để sửa bảng................................................................................7 3.1
Thêm column vào table............................................................................................7 3.2
Thay đổi cấu trúc của column..................................................................................8 3.3
Xóa một column ra khỏi Table.................................................................................9 3.4
Thay đổi tên column của Table..............................................................................10 3.5
Thay đổi tên Table.................................................................................................10
4. Lệnh xóa bảng..............................................................................................................11
5. Phép tích.......................................................................................................................11
6. INNER JOIN................................................................................................................15
7. Outer Join.....................................................................................................................17 7.1
Left Outer Join.......................................................................................................17 7.2
Right Outer Join.....................................................................................................19 7.3
Full Outer Join.......................................................................................................20 2
1. Lệnh tạo bảng sử dụng lệnh Create Table Thực hiện lệnh sau: CREATE TABLE SINHVIEN ( SV_ID number(10) not null,
SV_NAME varchar2(50) not null, NGUYENQUAN varchar2(50) );
Bấm vào mục Tables, sau đó Refresh, sau đó xem ở Tab Columns, kết quả thu được là gì?
Nếu bạn xem trong Tab Columns của bảng
, bạn sẽ thấy thông tin chi tiết về các SINHVIEN
cột đã được định nghĩa trong bảng.......................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
Từ đó, giải thích cú pháp lệnh Create Table dùng để tạo bảng dữ liệu: 3 CREATE TABLE table_name (
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ], ...
column_n datatype [ NULL | NOT NULL ] ); Giải thích từng phần: 1. CREATE TABLE table_name: o
CREATE TABLE: Là từ khóa SQL bắt đầu một lệnh tạo bảng. o
table_name: Tên của bảng mà bạn muốn tạo. Tên này phải là duy nhất trong
cơ sở dữ liệu và tuân theo các quy tắc đặt tên (không được bắt đầu bằng số,
không chứa ký tự đặc biệt, v.v.).
2. ( ... ): Dấu ngoặc đơn bao quanh phần định nghĩa các cột trong bảng.
3. column1, column2, ..., column_n: o
Đây là tên các cột mà bạn muốn định nghĩa trong bảng. Mỗi cột sẽ chứa một
loại dữ liệu nhất định và có thể được định nghĩa với các thuộc tính nhất định. 4. datatype: o
Kiểu dữ liệu của cột, xác định loại giá trị mà cột đó có thể lưu trữ. Ví dụ:
NUMBER: Số nguyên hoặc số thực.
VARCHAR2(n): Chuỗi ký tự có độ dài tối đa n. DATE: Ngày và giờ.
CHAR(n): Chuỗi ký tự cố định với độ dài n.
Các kiểu dữ liệu khác như BLOB, CLOB, v.v. cũng có thể được sử
dụng tùy thuộc vào nhu cầu lưu trữ. 5. [ NULL | NOT NULL ]: o
NULL: Chỉ ra rằng cột có thể chứa giá trị NULL (không có giá trị). Đây là
giá trị mặc định nếu không chỉ định gì. o
NOT NULL: Chỉ ra rằng cột không thể chứa giá trị NULL, nghĩa là phải có
giá trị cho cột này trong mỗi bản ghi.
.............................................................................................................................................
............................................................................................................................................. Thực hiện lệnh sau: CREATE TABLE SINHVIEN1 ( SV_ID number(10) not null, 4
SV_NAME varchar2(50) not null, NGUYENQUAN varchar2(150),
CONSTRAINT SV_PK PRIMARY KEY (SV_ID) );
Bấm vào mục Tables, sau đó Refresh, sau đó xem ở các Tab Columns, Constraints…, kết quả thu được là gì?
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
Từ đó, giải thích Cú pháp CONSTRAINT SV_PK PRIMARY KEY (SV_ID)dùng để làm gì: CONSTRAINT SV_PK: o
Từ khóa CONSTRAINT được dùng để định nghĩa một ràng buộc (constraint) cho bảng. o
SV_PK là tên của ràng buộc này. Tên ràng buộc (constraint name) có thể do
người dùng tự đặt, giúp dễ nhận diện ràng buộc khi xem hoặc sửa cấu trúc
bảng sau này. Ở đây, SV_PK là tên được đặt cho ràng buộc khóa chính (primary key). 5 PRIMARY KEY: o
PRIMARY KEY là một loại ràng buộc, được dùng để đảm bảo rằng tất cả các
giá trị trong cột hoặc nhóm cột được xác định là duy nhất và không có giá trị NULL. o
Một bảng chỉ có thể có duy nhất một khóa chính, và khóa này xác định một
cách duy nhất từng bản ghi trong bảng. (SV_ID): o
Đây là cột mà ràng buộc khóa chính sẽ áp dụng. Trong trường hợp này,
SV_ID là cột được chọn làm khóa chính của bảng. o
Khi một cột có ràng buộc PRIMARY KEY, nó phải có giá trị duy nhất trong
mỗi bản ghi (không được có giá trị trùng lặp) và không được để trống (NULL). o
Ý nghĩa của CONSTRAINT SV_PK PRIMARY KEY (SV_ID) trong bảng SINHVIEN1:
Đảm bảo tính duy nhất: Mỗi bản ghi trong bảng SINHVIEN1 sẽ có một giá trị
SV_ID duy nhất, giúp dễ dàng phân biệt các bản ghi với nhau.
Đảm bảo không có giá trị NULL: SV_ID phải luôn có giá trị và không thể bỏ trống.
Đặt tên ràng buộc: Tên ràng buộc SV_PK giúp bạn dễ dàng quản lý, sửa đổi hoặc
xóa ràng buộc sau này khi cần
............................................................................................................................................. 2.
Tạo bảng với Lệnh Create Table As
Tạo bảng kết hợp với một lệnh SELECT sẽ thực hiện copy tất cả columns và dữ liệu từ
lệnh SELECT vào bảng mới. Thực hiện lệnh sau: CREATE TABLE NEWEMPLOYEE AS (SELECT EMP_ID, EMP_NAME FROM EMPLOYEE WHERE SALARY > 2000);
Bấm vào mục Tables, sau đó Refresh, sau đó xem ở Tab Columns, Data, kết quả thu được là gì? 6
.............................................................................................................................................
.............................................................................................................................................
Từ đó, hãy viết cú pháp tổng quát cho lệnh Create Table As: CREATE TABLE new_table_name
AS SELECT column1, column2, ..., column_n FROM existing_table
[WHERE condition];............................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
Hãy tạo một bảng NEWEMPLOYEE_2 từ bảng EMPLOYEE lấy tất cả các cột và các
nhân viên có lương từ 2000 đến 3500: 7 CREATE TABLE NEWEMPLOYEE_2 AS SELECT * FROM EMPLOYEES
WHERE SALARY BETWEEN 2000 AND 3500;
.............................................................................................................................................
3. Lệnh ALTER TABLE để sửa bảng
Dùng để chỉnh sửa cấu trúc của Table như thêm column, xóa column, đổi kiểu dữ liệu, đổi tên Table, ... 3.1 Thêm column vào table Cú pháp lệnh: ALTER TABLE table_name
ADD (column_1 column-definition, column_2 column-definition, ... column_n column_definition);
table_name là tên bảng muốn thay đổi
column_name là tên column muốn thêm vào
column-definition là các thông số dành cho column đó 8 Hãy thực hiện lệnh: ALTER TABLE NEWEMPLOYEE ADD GIOITINH VARCHAR2(50);
Kết quả thu được là gì?
.............................................................................................................................................
Hãy thực hiện lệnh thêm 2 cột TUOI và TINHTRANGHONNHA vào cùng một lúc
với kiểu dữ liệu là varchar2 và chiều dài tối đa lần lượt là 50 và 100 ký tự: ALTER TABLE NEWEMPLOYEE ADD ( TUOI VARCHAR2(50),
TINHTRANGHONNHA VARCHAR2(100) );................................................................... 9
.............................................................................................................................................
3.2 Thay đổi cấu trúc của column Cú pháp lệnh: ALTER TABLE table_name
MODIFY (column_1 column_type, column_2 column_type, ... column_n column_type);
Bấm vào Tables tên NEWEMPLOYEE,xem ở Tab Columns, ghi lại các thông số:
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
............................................................................................................................................. 10
.............................................................................................................................................
.............................................................................................................................................
............................................................................................................................................. Thực hiện lệnh sau: ALTER TABLE NEWEMPLOYEE
MODIFY ( LAST_NAME varchar2(80) null, GIOITINH varchar2(100) );
Bấm vào mục Tables, sau đó Refresh, sau đó xem ở Tab Columns, kết quả thu được là gì?
Đối chiếu với kết quả trước khi thực hiện và nhận xét.
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
3.3 Xóa một column ra khỏi Table Cú pháp lệnh: ALTER TABLE table_name DROP COLUMN column_name; 11
Hãy thực hiện lệnh xóa cột GIOITINH ra khỏi table và NEWEMPLOYEE ghi nhận lại kết quả:
............................................................................................................................................. ALTER TABLE NEWEMPLOYEE
DROP COLUMN GIOITINH;...........................................................................................
.............................................................................................................................................
.............................................................................................................................................
3.4 Thay đổi tên column của Table Cú pháp lệnh: ALTER TABLE table_name
RENAME COLUMN old_name to new_name;
Hãy thực hiện lệnh đổi tên cột LAST_NAME của table và NEWEMPLOYEE thành
TEN_NHANVIEN,ghi nhận lại kết quả: 12 .......
.............................................................................................................................................
............................................................................................................................................. 3.5 Thay đổi tên Table Cú pháp lệnh: ALTER TABLE table_name RENAME TO new_table_name;
Hãy thực hiện lệnh đổi tên table NEWEMPLOYEE thành NHANVIEN_MOI,ghi nhận lại kết quả: 4. Lệnh xóa bảng 13 Cú pháp lệnh:
DROP [schema_name].TABLE table_name [ CASCADE CONSTRAINTS ] [ PURGE ]; Chú thích:
schema_name: Tên của Schema chứa bảng.
table_name: Tên của bảng muốn xóa khỏi hệ quản trị CSDL.
CASCADE CONSTRAINTS: Nếu thêm từ khóa này nó sẽ xóa tất cả tham chiếu
khóa ngoại đến bảng này.
PURGE: Nếu bạn thêm từ khóa này thì các bảng và đối tượng liên quan sẽ bị đưa
vào thùng rác và không thể khôi phục được.
Hai tham số CASCADE CONSTRAINTS và PURGE rất ít khi sử dụng.
Hãy thực hiện lệnh xóa table NHANVIEN_MOI,ghi nhận lại kết quả:
.............................................................................................................................................
............................................................................................................................................. 5. Phép tích
Dùng để kết nối 2 bảng với nhau giống như phép tích.
Giả sử table A có 3 records, table B có 4 records, thì khi bạn thực hiện phép tích kết
quả sẽ trả về là danh sách dữ liệu gồm 3 x 4 = 12 records. 14
Giả sử table A có 3 column, table B có 3 column thì khi bạn tích sẽ trả về một danh sách gồm 3 + 3 = 6 column.
Tạo bảng SUPPLIERS như sau: CREATE TABLE "SUPPLIERS" ( "SUPPLIER_ID" NUMBER,
"SUPPLIER_NAME" VARCHAR2(4000),
"SUPPLIER_ADDRESS" VARCHAR2(4000) )
Thêm 3 record vào bảng SUPPLIERS:
INSERT INTO SUPPLIERS(SUPPLIER_ID, SUPPLIER_NAME, SUPPLIER_ADDRESS)
VALUES (1, 'APPLE', 'AMERICA');
INSERT INTO SUPPLIERS(SUPPLIER_ID, SUPPLIER_NAME, SUPPLIER_ADDRESS)
VALUES (2, 'SAMSUNG', 'KOREA');
INSERT INTO SUPPLIERS(SUPPLIER_ID, SUPPLIER_NAME, SUPPLIER_ADDRESS) VALUES (3, 'NOKIA', 'EU'); Ghi nhận lại kết quả:
.............................................................................................................................................
............................................................................................................................................. 15
............................................................................................................................................. Tạo bảng ORDERS như sau: CREATE TABLE "ORDERS" ( "ORDER_NO" NUMBER, "SUPPLIER_ID" NUMBER, "QUANTITY" NUMBER, "PRICE" NUMBER, "ORDER_DATE" date );
Thêm 5 record vào bảng ORDERS:
INSERT INTO ORDERS(ORDER_NO, SUPPLIER_ID, QUANTITY, PRICE,ORDER_DATE)
VALUES (100,1,5,2000,TO_DATE('1-9-2022', 'dd-mm-yyyy'));
INSERT INTO ORDERS(ORDER_NO, SUPPLIER_ID, QUANTITY, PRICE,ORDER_DATE)
VALUES (125,2,10,2500,TO_DATE('2-10-2022', 'dd-mm-yyyy'));
INSERT INTO ORDERS(ORDER_NO, SUPPLIER_ID, QUANTITY, PRICE,ORDER_DATE)
VALUES (150,1,20,3000,TO_DATE('3-11-2022', 'dd-mm-yyyy'));
INSERT INTO ORDERS(ORDER_NO, SUPPLIER_ID, QUANTITY, PRICE,ORDER_DATE)
VALUES (175,2,25,3500,TO_DATE('5-12-2022', 'dd-mm-yyyy'));
INSERT INTO ORDERS(ORDER_NO, SUPPLIER_ID, QUANTITY, PRICE,ORDER_DATE) 16
VALUES (100,5,5,2000,TO_DATE('1-1-2023', 'dd-mm-yyyy')); Ghi nhận lại kết quả:
.............................................................................................................................................
.............................................................................................................................................
Thực hiện lệnh tích sau: SELECT * FROM SUPPLIERS, ORDERS
Ghi nhận lại kết quả và nhận xét: 17
.............................................................................................................................................
............................................................................................................................................. 6. INNER JOIN
Là loại đơn giản và dễ hiểu nhất và thường được sử dụng nhất khi quản lý CSDL. Thực hiện lệnh sau:
SELECT ORDERS.ORDER_NO, SUPPLIERS.SUPPLIER_ID, SUPPLIERS.SUPPLIER_NAME FROM SUPPLIERS 18 INNER JOIN ORDERS
ON SUPPLIERS.SUPPLIER_ID = ORDERS.SUPPLIER_ID;
ON SUPPLIERS.SUPPLIER_ID = ORDERS.SUPPLIER_ID;
Ghi nhận lại kết quả thu được và giải thích:
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
Từ đó, giải thích cú pháp INNER JOIN: SELECT columns FROM table1 INNER JOIN table2
ON table1.column = table2.column; Giải thích từng phần: 1. SELECT columns: o
Phần này chỉ định các cột mà bạn muốn lấy từ kết quả truy vấn. Bạn có thể
chọn các cột từ một hoặc cả hai bảng. o
Ví dụ: SELECT table1.column1, table2.column2. 2. FROM table1: 19 o
table1 là tên của bảng đầu tiên mà bạn muốn truy vấn. Đây là bảng cơ sở cho phép nối. 3. INNER JOIN table2: o
INNER JOIN là loại phép nối (join) giữa hai bảng. Nó chỉ lấy các bản ghi mà
có sự phù hợp ở cả hai bảng. o
table2 là tên của bảng thứ hai mà bạn muốn kết hợp với bảng đầu tiên.
4. ON table1.column = table2.column: o
Phần này xác định điều kiện để nối hai bảng. Cụ thể, nó so sánh giá trị của
một cột trong bảng đầu tiên (table1.column) với một cột trong bảng thứ hai (table2.column). o
Điều kiện này sẽ xác định những bản ghi nào sẽ được kết hợp. Chỉ những bản
ghi mà có giá trị tương ứng trong cả hai bảng sẽ xuất hiện trong kết quả cuối cùng.
Câu lệnh này sẽ trả về danh sách các khách hàng cùng với ID khách hàng và ID đơn hàng
của họ. Chỉ những khách hàng đã thực hiện đơn hàng sẽ được hiển thị trong kết quả, vì
INNER JOIN chỉ lấy những bản ghi có sự phù hợp trong cả hai bảng.
.............................................................................................................................................
Cú pháp INNER JOIN trên có tương tự với câu truy vấn sau đây không? SELECT COLUMNS FROM TABLE1, TABLE2
WHERE TABLE1.COLUMN = TABLE2.COLUMN;
Dù cả hai cú pháp đều thực hiện phép nối để lấy dữ liệu từ hai bảng, cách sử dụng INNER
JOIN được xem là chuẩn mực và dễ hiểu hơn, đặc biệt khi làm việc với các truy vấn phức
tạp hơn. Do đó, khuyến cáo sử dụng cú pháp INNER JOIN để có được mã truy vấn rõ ràng và dễ bảo trì hơn.
.............................................................................................................................................
Hãy chứng minh điều đó với dữ liệu 2 bảng SUPPLIERS và ORDERS ở trên:
Kết quả giống nhau: Cả hai truy vấn trả về cùng một tập dữ liệu, gồm các đơn hàng
từ bảng ORDERS và thông tin nhà cung cấp từ bảng SUPPLIERS.
Cách viết khác nhau: Cú pháp INNER JOIN giúp rõ ràng hơn về việc nối bảng và
điều kiện, trong khi cú pháp sử dụng dấu phẩy có thể khó theo dõi hơn khi có nhiều
bảng hoặc điều kiện phức tạp.
............................................................................................................................................. 20