THỰC HÀNH
CƠ SỞ DỮ LIỆU
Điểm: Nhận xét:
Ngày tháng: 31/10/2025
Lớp: D22CQVTMD01-N
Nhóm: 1
MSSV: N22DCVT055
Họ và tên: Nguyễn Duy Mạnh
MỤC LỤC
1. Lệnh tạo bảng sử dụng lệnh Create Table..........................................................................3
1
2. Tạo bảng với Lệnh Create Table As..................................................................................4
3. Lệnh ALTER TABLE để sửa bảng...................................................................................6
3.1 Thêm column vào table...............................................................................................6
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....................................................................................9
3.5 Thay đổi tên Table.......................................................................................................9
4. Lệnh xóa bảng.................................................................................................................10
5. Phép tích..........................................................................................................................11
6. INNER JOIN...................................................................................................................13
7. Outer Join........................................................................................................................15
7.1 Left Outer Join...........................................................................................................16
7.2 Right Outer Join........................................................................................................17
7.3 Full Outer Join...........................................................................................................18
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ì?
Từ đó, giải thích cú pháp lệnh Create Table dùng để tạo bảng dữ liệu:
CREATE TABLE table_name
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
column_n datatype [ NULL | NOT NULL ]
);
CREATE TABLE: tạo mới một bảng trong cơ sở dữ liệu.
table_name: tên bảng (phải duy nhất, dễ hiểu, không trùng tên hệ thống).
column1 … column_n: khai báo danh sách các cột.
atatype: xác định kiểu dữ liệu cho từng cột (số, chuỗi, ngày, v.v.).
NULL | NOT NULL]: quy định cột có thể để trống hay không.
Thực hiện lệnh sau:
CREATE TABLE SINHVIEN1 (
SV_ID number(10) not null,
SV_NAME varchar2(50) not null,
3
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 → Đặt tên cho ràng buộc khóa chính
PRIMARY KEY (SV_ID) → Xác định cột SV_ID là duy nhất, không được trùng
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 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ì?
Tab Columns
Tab Data
4
Từ đó, hãy viết cú pháp tổng quát cho lệnh Create Table As:
CREATE TABLE <tên_bảng_mới> AS
SELECT <danh_sách_cột> FROM <bảng_cũ>
WHERE <điều_kiện_lọc_dữ_liệu>;
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:ươ ế
CREATE TABLE NEWEMPLOYEE_2 AS
SELECT
*
FROM employees
5
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
6
column-definition là các thông số dành cho column đó
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),
TINHTRANGHONNHAN VARCHAR2(100)
7
);
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ố:
Thực hiện lệnh sau:
ALTER TABLE NEWEMPLOYEE
MODIFY ( EMP_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.
8
Nhận xét:
Oracle thông báo: Table NEWEMPLOYEE altered.
Cột FIRST_NAME thay đổi độ dài từ 20 → 80 ký tự và cho phép NULL.
Cột GIOITINH thay đổi độ dài từ 50 → 100 ký tự.
Cấu trúc bảng được cập nhật đúng yêu cầu, dữ liệu không bị ảnh hưởng.
3.3 Xóa một column ra khỏi Table
Cú pháp lệnh:
ALTER TABLE table_name
DROP COLUMN column_name;
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ả:
.............................................................................................................................................
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 EMP_NAME của table NEWEMPLOYEE thành
TEN_NHANVIEN,ghi nhận lại kết quả:
.............................................................................................................................................
3.5 Thay đổi tên Table
Cú pháp lệnh:
ALTER TABLE table_name
9
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
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 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 đố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 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ả:
10
...............................................................................................
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.
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');
11
Ghi nhận lại kết quả:
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'));
12
INSERT INTO ORDERS(ORDER_NO, SUPPLIER_ID, QUANTITY,
PRICE,ORDER_DATE)
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:
......
.............................................................................................................................................
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.
13
Thực hiện lệnh sau:
SELECT ORDERS.ORDER_NO, SUPPLIERS.SUPPLIER_ID,
SUPPLIERS.SUPPLIER_NAME
FROM SUPPLIERS
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;
SELECT columns: chọn các cột muốn hiển thị.
FROM table1: từ bảng thứ nhất.
OIN table2: bảng thứ hai cần nối.
N table1.column = table2.column: điều kiện nối, thường là cột có giá trị chung giữa hai
bảng.
Kết quả: chỉ hiển thị các dòng dữ liệu có giá trị trùng nhau giữa hai bảng theo cột nối. Các
dòng không trùng (không có quan hệ) sẽ bị loại bỏ
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;
Hai câu truy vấn cho kết quả hoàn toàn giống nhau
Cả hai đều thực hiện phép nối trong (INNER JOIN) – chỉ lấy những dòng dữ liệu có giá trị
trùng nhau giữa hai bảng.
14
Hãy chứng minh điều đó với dữ liệu 2 bảng SUPPLIERS ORDERS ở trên:
Lệnh 1: (Inner Join)
SELECT ORDERS.ORDER_NO, SUPPLIERS.SUPPLIER_ID,
SUPPLIERS.SUPPLIER_NAME
FROM SUPPLIERS
NNER JOIN ORDERS
N SUPPLIERS.SUPPLIER_ID = ORDERS.SUPPLIER_ID;
Lệnh 2: (Where)
SELECT ORDERS.ORDER_NO, SUPPLIERS.SUPPLIER_ID,
SUPPLIERS.SUPPLIER_NAME
FROM SUPPLIERS, ORDERS
WHERE SUPPLIERS.SUPPLIER_ID = ORDERS.SUPPLIER_ID;
Nhận xét:
Hai lệnh này truy vấn cho ra kết quả giống nhau, đều chỉ hiện thị các bản ghi các giá trị
SUPPLIERS_ID giống nhau.
7. Outer Join
G m có:
15
- Left Outer Join,
- Outer Join,
- Full Outer Join,
7.1 Left Outer Join
Kết quả trả về sẽ như sau: Bảng thứ nhất (phía bên trái) sẽ lấy tất cả record cho thỏa
điều kiện ON hay không, còn bảng thứ hai (phía bên phải) thì chỉ lấy những record nào
thỏa điều kiện ở ON. Những column nào không thỏa điều kiện ON sẽ có giá trị NULL.
Hãy thực hiện lệnh sau:
SELECT ORDERS.ORDER_NO, SUPPLIERS.SUPPLIER_ID,
SUPPLIERS.SUPPLIER_NAME
FROM SUPPLIERS
LEFT JOIN ORDERS
ON SUPPLIERS.SUPPLIER_ID = ORDERS.SUPPLIER_ID;
Ghi nhận lại kết quả thu được và nhận xét:
..............................
Từ đó, giải thích cú pháp LEFT JOIN:
SELECT columns
FROM table1
LEFT [OUTER] JOIN table2
ON table1.column = table2.column;
Thành phần Ý nghĩa
SELECT columns Chọn các cột cần hiển thị trong kết quả.
FROM table1
Xác định bảng bên trái của phép nối. Đây là bảng chính, dữ liệu
của bảng này sẽ được giữ lại toàn bộ.
LEFT [OUTER] JOIN
table2
Thực hiện phép nối ngoài trái giữa hai bảng. Câu lệnh có thể viết
là LEFT JOIN hoặc LEFT OUTER JOIN (từ “OUTER” có thể bỏ
16
qua mà vẫn đúng).
ON table1.column =
table2.column
Điều kiện nối: xác định cách liên kết hai bảng, thường là giữa cột
khóa chính của bảng 1 và cột khóa ngoại của bảng 2.
.............................................................................................................................................
7.2 Right Outer Join
Kết quả trả về sẽ như sau: lấy tất cả record bảng thứ hai (bảng bên phải) chỉ những
record thỏa điều kiện ON bảng thứ nhất (bảng n trái). Column nào không thỏa điều
kiện ON sẽ có giá trị NULL.
Hãy thực hiện lệnh sau:
SELECT ORDERS.ORDER_NO, SUPPLIERS.SUPPLIER_ID,
SUPPLIERS.SUPPLIER_NAME
FROM SUPPLIERS
RIGHT JOIN ORDERS
ON SUPPLIERS.SUPPLIER_ID = ORDERS.SUPPLIER_ID;
Ghi nhận lại kết quả thu được và nhận xét:
RIGHT OUTER JOIN (hay RIGHT JOIN) sẽ:
Lấy tất cả các dòng của bảng bên phải (ORDERS).
Ghép thêm dữ liệu của bảng bên trái (SUPPLIERS) nếu điều kiện ON đúng.
Nếu không tìm thấy dòng khớp bên trái, các cột bên trái sẽ có giá trị NULL.
Từ đó, giải thích cú pháp RIGHT JOIN:
SELECT columns
FROM table1
17
RIGHT [OUTER] JOIN table2
ON table1.column = table2.column;
Thành phần Ý nghĩa
SELECT columns Chọn các cột cần hiển thị trong kết quả.
FROM table1 Xác định bảng bên trái trong phép nối.
RIGHT [OUTER]
JOIN table2
Thực hiện phép nối ngoài phải — lấy tất cả các dòng của bảng bên
phải (table2), và chỉ ghép dữ liệu từ bảng bên trái (table1) nếu điều
kiện đúng. (Từ khóa OUTER có thể bỏ mà vẫn đúng)
ON table1.column =
table2.column
Điều kiện để nối hai bảng — thường là khóa chung (primary key
và foreign key).
.............................................................................................................................................
7.3 Full Outer Join
Kết quả trả về sẽ như sau: lấy tất cả các record bảng thứ nhất lẫn bảng thứ hai. Column
nào không thỏa điều kiện ở ON sẽ có giá trị NULL.
Hãy thực hiện lệnh sau:
SELECT ORDERS.ORDER_NO, SUPPLIERS.SUPPLIER_ID,
SUPPLIERS.SUPPLIER_NAME
FROM SUPPLIERS
FULL JOIN ORDERS
ON SUPPLIERS.SUPPLIER_ID = ORDERS.SUPPLIER_ID;
Ghi nhận lại kết quả thu được và nhận xét:
18
FULL JOIN hiển thị toàn bộ dữ liệu từ cả hai bảng SUPPLIERS và ORDERS, dù có hay
không có mối liên kết giữa chúng.
• Các giá trị không trùng khớp được hiển thị với NULL ở cột thuộc bảng còn lại.
• Phép FULL JOIN = LEFT JOIN + RIGHT JOIN.
Từ đó, giải thích cú pháp FULL JOIN:
SELECT columns
FROM table1
FULL [OUTER] JOIN table2
ON table1.column = table2.column;
SELECT columns: Chọn các cột cần hiển thị (có thể đến từ một hoặc cả hai bảng)
FROM table1: Là bảng thứ nhất (bên trái) trong phép nối.
FULL [OUTER] JOIN table2: bảng thứ hai (bên phải). Oracle sẽ giữ lại toàn bộ dữ liệu
của cả hai bảng, dù có khớp điều kiện hay không.
N table1.column = table2.column: Điều kiện nối xác định mối liên hệ giữa hai bảng. Nếu
giá trị không trùng nhau, cột thuộc bảng còn lại sẽ có giá trị NULL.
19

Preview text:

THỰC HÀNH

CƠ SỞ DỮ LIỆU

Điểm:

Nhận xét:

Ngày tháng: 31/10/2025

Lớp: D22CQVTMD01-N

Nhóm: 1

MSSV: N22DCVT055

Họ và tên: Nguyễn Duy Mạnh

MỤC LỤC

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

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ì?

A screenshot of a computer AI-generated content may be incorrect.

Từ đó, giải thích cú pháp lệnh Create Table dùng để tạo bảng dữ liệu:

CREATE TABLE table_name

(

column1 datatype [ NULL | NOT NULL ],

column2 datatype [ NULL | NOT NULL ],

...

column_n datatype [ NULL | NOT NULL ]

);

CREATE TABLE: tạo mới một bảng trong cơ sở dữ liệu.

table_name: tên bảng (phải duy nhất, dễ hiểu, không trùng tên hệ thống).

column1 … column_n: khai báo danh sách các cột.

atatype: xác định kiểu dữ liệu cho từng cột (số, chuỗi, ngày, v.v.).

NULL | NOT NULL]: quy định cột có thể để trống hay không.

Thực hiện lệnh sau:

CREATE TABLE SINHVIEN1 (

SV_ID number(10) not null,

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 → Đặt tên cho ràng buộc khóa chính

PRIMARY KEY (SV_ID) → Xác định cột SV_ID là duy nhất, không được trùng

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ì?

Tab Columns

Tab Data

A table of names and numbers AI-generated content may be incorrect.

Từ đó, hãy viết cú pháp tổng quát cho lệnh Create Table As:

CREATE TABLE <tên_bảng_mới> AS

SELECT <danh_sách_cột> FROM <bảng_cũ>

WHERE <điều_kiện_lọc_dữ_liệu>;

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:

CREATE TABLE NEWEMPLOYEE_2 AS

SELECT

*

FROM employees

WHERE salary BETWEEN 2000 AND 3500; A screenshot of a computer AI-generated content may be incorrect.

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, ...

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 đó

Hãy thực hiện lệnh:

ALTER TABLE NEWEMPLOYEE

ADD GIOITINH VARCHAR2(50);

Kết quả thu được là gì?

A screenshot of a computer AI-generated content may be incorrect. 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),

TINHTRANGHONNHAN VARCHAR2(100)

); A screenshot of a data AI-generated content may be incorrect.

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ố:

A screenshot of a computer AI-generated content may be incorrect.Thực hiện lệnh sau:

ALTER TABLE NEWEMPLOYEE

MODIFY ( EMP_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.

A screenshot of a data AI-generated content may be incorrect.

Nhận xét:

Oracle thông báo: Table NEWEMPLOYEE altered.

Cột FIRST_NAME thay đổi độ dài từ 20 → 80 ký tự và cho phép NULL.

Cột GIOITINH thay đổi độ dài từ 50 → 100 ký tự.

Cấu trúc bảng được cập nhật đúng yêu cầu, dữ liệu không bị ảnh hưởng.

Xóa một column ra khỏi Table

Cú pháp lệnh:

ALTER TABLE table_name

DROP COLUMN column_name;

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ả:

A screenshot of a computer AI-generated content may be incorrect.

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 EMP_NAME của table và NEWEMPLOYEE thành TEN_NHANVIEN,ghi nhận lại kết quả:

A screenshot of a computer AI-generated content may be incorrect.

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ả:

A screenshot of a computer AI-generated content may be incorrect.

Lệnh xóa bảng

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 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ả:

A screenshot of a computer AI-generated content may be incorrect.

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.
  • 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ả:

A screenshot of a computer AI-generated content may be incorrect.

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)

VALUES (100,5,5,2000,TO_DATE('1-1-2023', 'dd-mm-yyyy'));

Ghi nhận lại kết quả:

A screenshot of a computer AI-generated content may be incorrect.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:

A screenshot of a computer AI-generated content may be incorrect.

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

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:

A screenshot of a computer AI-generated content may be incorrect.

Từ đó, giải thích cú pháp INNER JOIN:

SELECT columns

FROM table1

INNER JOIN table2

ON table1.column = table2.column;

SELECT columns: chọn các cột muốn hiển thị.

FROM table1: từ bảng thứ nhất.

OIN table2: bảng thứ hai cần nối.

N table1.column = table2.column: điều kiện nối, thường là cột có giá trị chung giữa hai bảng.

Kết quả: chỉ hiển thị các dòng dữ liệu có giá trị trùng nhau giữa hai bảng theo cột nối. Các dòng không trùng (không có quan hệ) sẽ bị loại bỏ

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;

Hai câu truy vấn cho kết quả hoàn toàn giống nhau

Cả hai đều thực hiện phép nối trong (INNER JOIN) – chỉ lấy những dòng dữ liệu có giá trị trùng nhau giữa hai bảng.

Hãy chứng minh điều đó với dữ liệu 2 bảng SUPPLIERS ORDERS ở trên:

Lệnh 1: (Inner Join)

SELECT ORDERS.ORDER_NO, SUPPLIERS.SUPPLIER_ID, SUPPLIERS.SUPPLIER_NAME

FROM SUPPLIERS

NNER JOIN ORDERS

N SUPPLIERS.SUPPLIER_ID = ORDERS.SUPPLIER_ID;

A screenshot of a computer AI-generated content may be incorrect.

Lệnh 2: (Where)

SELECT ORDERS.ORDER_NO, SUPPLIERS.SUPPLIER_ID, SUPPLIERS.SUPPLIER_NAME

FROM SUPPLIERS, ORDERS

WHERE SUPPLIERS.SUPPLIER_ID = ORDERS.SUPPLIER_ID;

A screenshot of a computer AI-generated content may be incorrect.

Nhận xét:

Hai lệnh này truy vấn cho ra kết quả giống nhau, đều chỉ hiện thị các bản ghi các giá trị SUPPLIERS_ID giống nhau.

Outer Join

Gồm có:

  • Left Outer Join,
  • Outer Join,
  • Full Outer Join,

Left Outer Join

Kết quả trả về sẽ như sau: Bảng thứ nhất (phía bên trái) sẽ lấy tất cả record cho dù có thỏa điều kiện ở ON hay không, còn bảng thứ hai (phía bên phải) thì chỉ lấy những record nào thỏa điều kiện ở ON. Những column nào không thỏa điều kiện ON sẽ có giá trị NULL.

Hãy thực hiện lệnh sau:

SELECT ORDERS.ORDER_NO, SUPPLIERS.SUPPLIER_ID, SUPPLIERS.SUPPLIER_NAME

FROM SUPPLIERS

LEFT JOIN ORDERS

ON SUPPLIERS.SUPPLIER_ID = ORDERS.SUPPLIER_ID;

Ghi nhận lại kết quả thu được và nhận xét:

A screenshot of a computer AI-generated content may be incorrect.

Từ đó, giải thích cú pháp LEFT JOIN:

SELECT columns

FROM table1

LEFT [OUTER] JOIN table2

ON table1.column = table2.column;

Thành phần

Ý nghĩa

SELECT columns

Chọn các cột cần hiển thị trong kết quả.

FROM table1

Xác định bảng bên trái của phép nối. Đây là bảng chính, dữ liệu của bảng này sẽ được giữ lại toàn bộ.

LEFT [OUTER] JOIN table2

Thực hiện phép nối ngoài trái giữa hai bảng. Câu lệnh có thể viết là LEFT JOIN hoặc LEFT OUTER JOIN (từ “OUTER” có thể bỏ qua mà vẫn đúng).

ON table1.column = table2.column

Điều kiện nối: xác định cách liên kết hai bảng, thường là giữa cột khóa chính của bảng 1 và cột khóa ngoại của bảng 2.

Right Outer Join

Kết quả trả về sẽ như sau: lấy tất cả record ở bảng thứ hai (bảng bên phải) và chỉ những record thỏa điều kiện ON ở bảng thứ nhất (bảng bên trái). Column nào không thỏa điều kiện ON sẽ có giá trị NULL.

Hãy thực hiện lệnh sau:

SELECT ORDERS.ORDER_NO, SUPPLIERS.SUPPLIER_ID, SUPPLIERS.SUPPLIER_NAME

FROM SUPPLIERS

RIGHT JOIN ORDERS

ON SUPPLIERS.SUPPLIER_ID = ORDERS.SUPPLIER_ID;

Ghi nhận lại kết quả thu được và nhận xét:

A screenshot of a table AI-generated content may be incorrect.

RIGHT OUTER JOIN (hay RIGHT JOIN) sẽ:

  • Lấy tất cả các dòng của bảng bên phải (ORDERS).
  • Ghép thêm dữ liệu của bảng bên trái (SUPPLIERS) nếu điều kiện ON đúng.
  • Nếu không tìm thấy dòng khớp bên trái, các cột bên trái sẽ có giá trị NULL.

Từ đó, giải thích cú pháp RIGHT JOIN:

SELECT columns

FROM table1

RIGHT [OUTER] JOIN table2

ON table1.column = table2.column;

Thành phần

Ý nghĩa

SELECT columns

Chọn các cột cần hiển thị trong kết quả.

FROM table1

Xác định bảng bên trái trong phép nối.

RIGHT [OUTER] JOIN table2

Thực hiện phép nối ngoài phải — lấy tất cả các dòng của bảng bên phải (table2), và chỉ ghép dữ liệu từ bảng bên trái (table1) nếu điều kiện đúng. (Từ khóa OUTER có thể bỏ mà vẫn đúng)

ON table1.column = table2.column

Điều kiện để nối hai bảng — thường là khóa chung (primary key và foreign key).

Full Outer Join

Kết quả trả về sẽ như sau: lấy tất cả các record ở bảng thứ nhất lẫn bảng thứ hai. Column nào không thỏa điều kiện ở ON sẽ có giá trị NULL.

Hãy thực hiện lệnh sau:

SELECT ORDERS.ORDER_NO, SUPPLIERS.SUPPLIER_ID, SUPPLIERS.SUPPLIER_NAME

FROM SUPPLIERS

FULL JOIN ORDERS

ON SUPPLIERS.SUPPLIER_ID = ORDERS.SUPPLIER_ID;

Ghi nhận lại kết quả thu được và nhận xét:

A screenshot of a computer AI-generated content may be incorrect.

FULL JOIN hiển thị toàn bộ dữ liệu từ cả hai bảng SUPPLIERS và ORDERS, dù có hay không có mối liên kết giữa chúng.

• Các giá trị không trùng khớp được hiển thị với NULL ở cột thuộc bảng còn lại.

• Phép FULL JOIN = LEFT JOIN + RIGHT JOIN.

Từ đó, giải thích cú pháp FULL JOIN:

SELECT columns

FROM table1

FULL [OUTER] JOIN table2

ON table1.column = table2.column;

SELECT columns: Chọn các cột cần hiển thị (có thể đến từ một hoặc cả hai bảng)

FROM table1: Là bảng thứ nhất (bên trái) trong phép nối.

FULL [OUTER] JOIN table2: Là bảng thứ hai (bên phải). Oracle sẽ giữ lại toàn bộ dữ liệu của cả hai bảng, dù có khớp điều kiện hay không.

N table1.column = table2.column: Điều kiện nối – xác định mối liên hệ giữa hai bảng. Nếu giá trị không trùng nhau, cột thuộc bảng còn lại sẽ có giá trị NULL.