Tạo và quản lý đối tượng 6 - 46.1.2 Quy tắc đặt tên Xem sách 6.1.3 Câu lệnh tạo bảng CREATE TABLE CREATE TABLE tablename colunm datatype [Default expr]... 6.1.3 Câu lệnh tạo bảng CREATE
Trang 1TẠO VÀ QUẢN LÝ ĐỐI
TƯỢNG
- Lý thuyết: 3 tiết
- Thực hành: 4 tiết
Trang 2Chương 6 Tạo và quản lý đối tượng 6 - 2
6.1 Đối tượng cơ sở dữ liệu
Trang 36.1 Định nghĨa
Đối tượng cơ sở dữ liệu
Bảng (Table): lưu trữ dl, gồm các hàng và cột
Khung nhìn (View): Tập con dữ liệu từ một hay nhiều bảng
Sequence: Bộ sinh ra giá trị số tuần tự
Chỉ mục (Index): Nâng cao khả năng thực thi câu truy vấn
Synonym: Thay thế tên cho đối tượng
Ngoài ra còn một số đối tượng khác
Tạo và quản lý đối tượng
Trang 4Chương 6 Tạo và quản lý đối tượng 6 - 4
6.1.2 Quy tắc đặt tên (Xem sách)
6.1.3 Câu lệnh tạo bảng (CREATE TABLE)
CREATE TABLE tablename (colunm datatype [Default expr]
Trang 56.1.3 Câu lệnh tạo bảng (CREATE TABLE)
tablename Tên bảng cần tạo
column Tên cột trong bảng
datatype Kiểu dữ liệu của cột
[DEFAULT expr] Giá trị mặc định của cột.
[col_constraint] Ràng buộc của bản thân cột.
[table_constraint] Ràng buộc của toàn bảng
[AS subquery] Câu truy vấn con
Tạo và quản lý đối tượng
Trang 6Chương 6 Tạo và quản lý đối tượng 6 - 6
6.1.3 Câu lệnh tạo bảng (CREATE TABLE)
Ví dụ: Tạo bảng Dept
CREATE TABLE Dept
(DeptNo NUMBER(2) constraint pk Primary Key,
Dname VARCHAR2(14),
Loc VARCHAR2(13))
Tạo và quản lý đối tượng
Trang 76.1.3 Câu lệnh tạo bảng (CREATE TABLE)
Ví dụ: Tạo bảng Emp gồm có các cột Empid, firstname, Job, Salary, Deptid; trong đó Empid là khóa chính,
Deptid là khóa ngoại liên kết đến bảng Dept thông qua
trường DeptId
Tạo và quản lý đối tượng
Trang 8Chương 6 Tạo và quản lý đối tượng 6 - 8
6.1.3 Câu lệnh tạo bảng (CREATE TABLE)
CREATE TABLE Emp
(EmpId Number Not Null Constraint PK_EMP Primary Key,
firstname Varchar2(30) Not Null
Job Varchar2(9),
Salary Number(10,2) Constraint CK_SAL
CHECK(Salary>500),
DeptId number(2) Constraint NN_Deptid Not Null
Constraint FK_Deptid REFERENCES DEPT(Deptid))
Tạo và quản lý đối tượng
Trang 96.1.3 Câu lệnh tạo bảng (CREATE TABLE)
- Tạo bảng bằng cách sử dụng câu lệnh
truy vấn con
CREATE TABLE tablename
[(column, column…)]
AS Subquery;
Tạo và quản lý đối tượng
Trang 10Chương 6 Tạo và quản lý đối tượng 6 - 10
6.1.3 Câu lệnh tạo bảng (CREATE TABLE)
Ví dụ: Tạo bảng Dept10 dựa vào bảng emp thông qua câu lệnh truy vấn con
Tạo và quản lý đối tượng
CREATE TABLE Dept10
AS SELECT EmpId, Firstname, Job, SAL FROM EMP
WHERE DeptId =10
Trang 116.1.4 Các kiểu dữ liệu cơ bản
6.1.4.1 Kiểu dữ liệu chuỗi
- CHAR:
Chiều dài cố định
Tối đa 255 byte
- VARCHAR2:
Chiều dài thay đổi
Tối đa 2000 byte
Tạo và quản lý đối tượng
Trang 12Chương 6 Tạo và quản lý đối tượng 6 - 12
6.1.4 Các kiểu dữ liệu cơ bản
6.1.4.2 Kiểu dữ liệu số
- NUMBER
NUMBER(p, s): P là phần nguyên (1-38), s là phần thập phân
NUMBER(p): Không có phần thập phân.
NUMBER: Số với dấu chấm động với số chữ số
trước dấu thập phân bằng 38
FLOAT(b): dấu chấm động với độ chính xác nhị
phân là b (1-126)
Tạo và quản lý đối tượng
Trang 136.1.4 Các kiểu dữ liệu cơ bản
6.1.4.3 Kiểu dữ liệu ngày tháng
Chứa dữ liệu kiểu ngày và thời gian
Có thể thực hiện các phép toán cộng và trừ
Ngày Julian: Là giá trị số cho biết số ngày kể từ
ngày 1 tháng giêng năm 4712 trước công nguyên
Tạo và quản lý đối tượng
Trang 14Chương 6 Tạo và quản lý đối tượng 6 - 14
6.1.4 Các kiểu dữ liệu cơ bản
6.1.4.4 Kiểu LONG
Chiều dài biến đổi,
Tối đa 2 gigabyte
Một bảng không thể chứa nhiều hơn một cột kiểu LONG
Các hàm không thể trả về dữ liệu kiểu LONG
Không được có mặt trong mệnh đề WHERE,
GROUP BY, ORDER BY, CONNECT BY hoặc với từ khóa DISTINCT trong câu lệnh SELECT
Tạo và quản lý đối tượng
Trang 156.1.4 Các kiểu dữ liệu cơ bản
6.1.4.5 Kiểu RAW và kiểu LONG RAW
Chứa các chuỗi byte, dữ liệu nhị phân như hình
ảnh, âm thanh
Dữ liệu kiểu RAW chỉ có thể gán hoặc truy cập chứ không được thực hiện các thao tác như đối với chuỗi
ký tự
Kiểu RAW giống như kiểu VARCHAR2
Kiểu LONG RAW giống kiểu LONG
Tạo và quản lý đối tượng
Trang 16Chương 6 Tạo và quản lý đối tượng 6 - 16
6.1.4 Các kiểu dữ liệu cơ bản
block Chuỗi hệ hexa cho biết block chứa row
row Chuỗi hệ hexa cho biết row trong block
file Chuỗi hệ hexa cho biết tệp tin csdl chứa
block
Tạo và quản lý đối tượng
Trang 176.1.4 Các kiểu dữ liệu cơ bản
6.1.4.7 Chuyển đổi kiểu
- Chuyển đổi mặc định: Oracle sẽ tự động chuyển kiểu:
Khi INSERT hoặc UPDATE gán giá trị cho cột có
Trang 18Chương 6 Tạo và quản lý đối tượng 6 - 18
6.1.4 Các kiểu dữ liệu cơ bản
6.1.4.7 Chuyển đổi kiểu
- Chuyển đổi mặc định: Oracle sẽ tự động chuyển kiểu:
Khi INSERT hoặc UPDATE gán giá trị cho cột có
Trang 196.1.4 Các kiểu dữ liệu cơ bản
6.1.4.7 Chuyển đổi kiểu
- Người sử dụng tự chuyển đổi: Oracle cung cấp các hàm để chuyển đổi kiểu sau:
TO_NUMBER Chuyển sang kiểu số
TO_CHAR Chuyển sang kiểu ký tự
TO_DATE Chuyển sang kiểu ngày
CAST (SQL Server) CAST(COL AS DATATYPE)
Tạo và quản lý đối tượng
Trang 20Chương 6 Tạo và quản lý đối tượng 6 - 20
6.1.4 Các kiểu dữ liệu cơ bản
Trang 216.1.4 Các kiểu dữ liệu cơ bản
6.1.5 Ràng buộc (Constraint)
- Định nghĩa ràng buộc
CREATE TABLE tablename
(column datatype [DEFAULT expr]
Trang 22Chương 6 Tạo và quản lý đối tượng 6 - 22
6.1.4 Các kiểu dữ liệu cơ bản
Loc CHAR(13))
Tạo và quản lý đối tượng
Trang 236.1.4 Các kiểu dữ liệu cơ bản
6.1.5 Ràng buộc (Constraint)
- UNIQUE
Ví dụ: Tạo bảng Dept với ràng buộc cột Deptid
không được có giá trị trùng nhau
CREATE TABLE Dept ( Deptid NUMBER(2) NOT NULL, DeptdName CHAR(14),
Loc CHAR(13),
CONSTRAINT UNQ_DEPTNO UNIQUE(DeptId))
Tạo và quản lý đối tượng
Trang 24Chương 6 Tạo và quản lý đối tượng 6 - 24
6.1.4 Các kiểu dữ liệu cơ bản
6.1.5 Ràng buộc (Constraint)
- PRIMARY KEY: là dạng UNIQUE cấp cao nhất
Cú pháp khi đặt ràng buộc ở mức bảng
[CONSTRAINT constraint_name] PRIMARY KEY (column, Column, )
Cú pháp khi đặt ràng buộc ở mức cột
[CONSTRAINT constraint_name] PRIMARY KEY
Tạo và quản lý đối tượng
Trang 256.1.4 Các kiểu dữ liệu cơ bản
6.1.5 Ràng buộc (Constraint)
- PRIMARY KEY
Ví dụ: Tạo bảng Dept với cột DeptId là khóa chính.CREATE TABLE Dept (
DeptId NUMBER(2) NOT NULL CONSTRAINT
PK_DEPT PRIMARY KEY,
DeptName CHAR(14),
Loc CHAR(13))
Tạo và quản lý đối tượng
Trang 26Chương 6 Tạo và quản lý đối tượng 6 - 26
6.1.4 Các kiểu dữ liệu cơ bản
6.1.5 Ràng buộc (Constraint)
- FOREIGN KEY (Referential)
ràng buộc tham chiếu giữa bảng này với bảng
khác
từ khoá ON DELETE CASCADE
từ khoá ON UPDATE CASCADE
Tạo và quản lý đối tượng
Trang 276.1.4 Các kiểu dữ liệu cơ bản
6.1.5 Ràng buộc (Constraint)
- CHECK
Ràng buộc kiểm tra giá trị
Ví dụ: Tạo bảng Emp gồm có các cột EmpId,
Firstname, salary DeptId với các ràng buộc sau:
Cột EmpId là khóa chính
Cột Firstname không được chứa giá trị NULL
Cột Salary chứa giá trị >500
Cột DeptId là khóa ngoại liên kết đến bảng Dept
Tạo và quản lý đối tượng
Trang 28Chương 6 Tạo và quản lý đối tượng 6 - 28
6.1.4 Các kiểu dữ liệu cơ bản
6.1.5 Ràng buộc (Constraint)
- CHECK
Tạo và quản lý đối tượng
CREATE TABLE Emp
(EmpId Number(5) Not null Constraint Pk_emp Primary Key,
Firstname VARCHAR2(30) Not null,
salary Number(10,2) Constraint Ck_sal
CHECK(salary>500),
DeptId Number(5) Constraint NN_DeptId Not null
Constraint FK_DeptId References
SCOTT.Dept(DeptId))
Trang 296.1.6 Câu lệnh sửa đổi bảng (ALTER TABLE)
Thêm một cột mới vào bảng
Chỉnh sửa thuộc tính của cột đã có trong bảng
Định nghĩa một giá trị mặc định cho cột mới
Xóa một hay nhiều cột
Tạo và quản lý đối tượng
Trang 30Chương 6 Tạo và quản lý đối tượng 6 - 30
6.1.6 Câu lệnh sửa đổi bảng (ALTER TABLE)
Cú pháp
ALTER TABLE tablename
ADD (column datatype [DEFAULT
Expr], …)
ALTER TABLE tablename
MODIFY (column datatype [DEFAULT Expr], …)
ALTER TABLE tablename
DROP(column)
Tạo và quản lý đối tượng
Trang 316.1.6 Câu lệnh sửa đổi bảng (ALTER TABLE)
sau đó chuyển thành NOT NULL
Không thể chuyển đổi kiểu khác nhau nếu cột đã chứa số liệu
Không thể dùng mệnh đề MODIFY để định nghĩa
Tạo và quản lý đối tượng
Trang 32Chương 6 Tạo và quản lý đối tượng 6 - 32
6.1.6 Câu lệnh sửa đổi bảng (ALTER TABLE)
Ví dụ: Thêm cột mới có tên Job_id vào bảng Dept10
ALTER TABLE Dept10 ADD (Job_id CHAR(9))
Sửa độ lớn cột Ename thành 25
ALTER TABLE Emp MODIFY (Ename CHAR(25))
Xóa ràng buộc khóa ngoại trên cột emp_mgr
ALTER TABLE Emp DROP CONSTRAINT emp_mgr
Xóa ràng buộc khóa chính của bảng Emp
ALTER TABLE DROP PRIMARY KEY
Tạo và quản lý đối tượng
Trang 336.1.7 Câu lệnh xóa bảng (DROP TABLE)
xóa một bảng trong cơ sở dữ liệu
Khi một bảng bị xóa thì tất cả dữ liệu trong bảng, chỉ mục liên quan đều bị xóa và không thể khôi phục lại
Tạo và quản lý đối tượng
DROP TABLE tablename [CASCADE
CONSTRAINTS]
Trong đó:
CASCADE CONSTRAINTS Xóa tất cả các ràng buộc
toàn vẹn liên quan đến bảng bị xóa
Trang 34Chương 6 Tạo và quản lý đối tượng 6 - 34
6.1.7 Câu lệnh xóa bảng (DROP TABLE)
Một số nguyên tắc khi xóa bảng
Tất cả dữ liệu trong bảng đều bị xóa
View và synonym liên quan vẫn còn nhưng không có giá trị
Các chuyển tác chưa giải quyết xong sẽ được
Trang 356.1.7 Câu lệnh xóa bảng (DROP TABLE)
Một số nguyên tắc khi xóa bảng
Tất cả dữ liệu trong bảng đều bị xóa
View và synonym liên quan vẫn còn nhưng không có giá trị
Các chuyển tác chưa giải quyết xong sẽ được
Trang 36Chương 6 Tạo và quản lý đối tượng 6 - 36
6.2 Tạo khung nhìn (View)
6.2.1 Định nghĩa
Khung nhìn là một bảng ảo
cho phép xem dữ liệu từ một bảng hay một khung
nhìn khác
Giới hạn truy cập dữ liệu
Tạo những câu lệnh truy vấn đơn giản từ kết quả của câu lệnh truy vấn phức tạp
Cung cấp dữ liệu độc lập cho người dùng và các
Trang 37Tạo và quản lý đối tượng
Trang 38Chương 6 Tạo và quản lý đối tượng 6 - 38
6.2 Tạo khung nhìn (View)
Trang 396.2 Tạo khung nhìn (View)
6.2.2 Tạo khung nhìn
Trong đó:
OR REPLACE đè lên view cùng tên đã tồn tại
FORCE Tạo view cả khi bảng hay view nào đó
không tồn tại trong câu lệnh SELECT
WITH CHECK OPTION Chỉ có những dòng có thể truy cập tới view mới có thể được chèn hay cập nhât
CONSTRAINT Tên của ràng buộc CHECK OPTION WITH READ ONLY Chỉ cho phép đọc trên view
Tạo và quản lý đối tượng
Trang 40Chương 6 Tạo và quản lý đối tượng 6 - 40
6.2 Tạo khung nhìn (View)
6.2.2 Tạo khung nhìn
Ví dụ: Tạo khung nhìn tên dept_sumary hiển thị tên
phòng ban, mức lương thấp nhất, cao nhất và mức
lương trung bình của mỗi phòng ban
CREATE VIEW dept_sumary (Name, Minsal, Maxsal,
Avgsal)
AS
SELECT Deptname, min(salary), max(salary),
avg(salary)
FROM Emp, Dept
WHERE emp.DeptId = dept.DeptId
GROUP BY Deptname
Tạo và quản lý đối tượng
Trang 416.2 Tạo khung nhìn (View)
6.2.2 Tạo khung nhìn
Kết quả thực hiện:
Tạo và quản lý đối tượng
Trang 42Chương 6 Tạo và quản lý đối tượng 6 - 42
6.2 Tạo khung nhìn (View)
6.2.2 Tạo khung nhìn
Ví dụ: Tạo khung nhìn tên emp_view cho phép xem dữ liệu các cột EmpId, Firstname và Salary của bảng Emp.CREATE VIEW emp_view
AS
SELECT Empid, Firstname, salary
FROM Emp WHERE DeptId = 10
Tạo và quản lý đối tượng
Trang 436.2 Tạo khung nhìn (View)
CREATE OR REPLACE VIEW empvu80
(Id_number, Name, Job, salary, Id_Dept)AS
SELECT Empid, Firstname, Job, Sal, deptid
Tạo và quản lý đối tượng
Trang 44Chương 6 Tạo và quản lý đối tượng 6 - 44
6.2 Tạo khung nhìn (View)
6.2.3 Chỉnh sửa khung nhìn
- Không thể thao tác trên view, khi truy vấn của view chứa các toán tử JOIN, SET, DISTINCT, GROUP BY,
GROUP
- Không thể chèn trên view, trên bảng có những cột
NOT NULL mà không dùng DEFAULT VALUE
- Không thể chèn trên view nếu khung nhìn này có
dùng biểu thức DECODE
- Những câu lệnh truy vấn của view không thể tham khảo vào 2 cột giả NEXTVAL và CURRVAL (NEXTVAL,
CURRVAL dùng cho sequence)
Tạo và quản lý đối tượng
Trang 456.2 Tạo khung nhìn (View)
6.2.4 Xóa khung nhìn
Dữ liệu trong cơ sở dữ liệu vẫn không bị mất
Cú pháp
DROP VIEW viewname
Ví dụ: Xóa view tên emp80 trong cơ sở dữ liệu
DROP VIEW emp80
Tạo và quản lý đối tượng
Trang 46Chương 6 Tạo và quản lý đối tượng 6 - 46
Trang 47Chương 6 Tạo và quản lý đối tượng 6 - 47
6.3 Một số đối tượng khác
6.3.1 SEQUENCE
- Tạo Sequence
Trong đó:
INCREMENT BY n Chỉ định giá trị khoảng cách là n
START WITH n Chỉ định số đầu tiên của dãy tuần tự là n
MAXVALUE n Giá trị lớn nhất của dãy số tuần tự là n
MINVALUE n Giá trị nhỏ nhất của dãy số
tuần tự là n
Tạo và quản lý đối tượng
Trang 48Chương 6 Tạo và quản lý đối tượng 6 - 48
CREATE SEQUENCE Dept_sequence
Trang 49Chúng ta phải chỉ rõ tên sequence trước các cột giả.
sequence.CURRVAL,
Tạo và quản lý đối tượng
Trang 50Chương 6 Tạo và quản lý đối tượng 6 - 50
6.3 Một số đối tượng khác
6.3.1 SEQUENCE
- Cột giả
Ví dụ: Chèn một hàng mới vào bảng Dept
INSERT INTO Dept (Dept_id, Dname, Loc)
VALUES(Dept_sequence.NEXTVAL, ’Support’, 2500)
Tạo và quản lý đối tượng
Trang 516.3 Một số đối tượng khác
6.3.1 SEQUENCE
- Thay đổi sequence
ALTER SEQUENCE sequence_name
Trang 52Chương 6 Tạo và quản lý đối tượng 6 - 52
6.3 Một số đối tượng khác
6.3.1 SEQUENCE
- Huỷ sequence
DROP SEQUENCE sequence_name
Ví dụ: Xóa sequence Dept_sequence
DROP SEQUENCE Dept_sequence
Tạo và quản lý đối tượng
Trang 536.3 Một số đối tượng khác
6.3.2 Chỉ mục (Index)
Chỉ mục bao gồm một giá trị khóa và ROWID
Chỉ mục hoàn toàn độc lập với bảng
- Tạo chỉ mục
CREATE [UNIQUE]] INDEX index_name
ON table ( column [,column ])
Ví dụ: Tạo chỉ mục cho cột firstname trong bảng Emp CREATE INDEX Index_firstname ON Emp(firstname)
Tạo và quản lý đối tượng
Trang 54Chương 6 Tạo và quản lý đối tượng 6 - 54
6.3 Một số đối tượng khác
6.3.2 Chỉ mục (Index)
- Sử dụng chỉ mục
Dùng chỉ mục để truy vấn nhanh hơn
Dùng chỉ mục khi lấy dữ liệu <15% số hàng trong bảng
Chỉ mục những cột nào dùng để nối giữa các bảng lẫn nhau
Không nên dùng chỉ mục cho các bảng chỉ có vài hàng
Khóa chính và khóa duy nhất tự động có chỉ mục,
nhưng nên có chỉ mục cho khóa ngoại
Tạo và quản lý đối tượng
Trang 556.3 Một số đối tượng khác
6.3.2 Chỉ mục (Index)
- Xoá chỉ mục
DROP INDEX index_name
Ví dụ: Xóa chỉ mục trên cột Firstname của bảng Emp
DROP INDEX Index_firstname
Tạo và quản lý đối tượng
Trang 56Chương 6 Tạo và quản lý đối tượng 6 - 56
PUBLIC Tạo ra synonym dùng chung
synonym Tên của synonym.
object Xác định đối tượng của synonym
Tạo và quản lý đối tượng
Trang 576.3 Một số đối tượng khác
6.3.3 Synonym
- Tạo Synonym
Ví dụ: Tạo tên ngắn hơn cho view DEPT_SUM_VU
CREATE SYNONYM d_sumFOR dept_sum_vu;
Ví dụ: Tạo tên ngắn hơn cho view DEPT_SUM_VU và có tính chất public
CREATE PUBLIC SYNONYM p_sum FOR
dept_sum_vu
Tạo và quản lý đối tượng
Trang 58Chương 6 Tạo và quản lý đối tượng 6 - 58
6.3 Một số đối tượng khác
6.3.3 Synonym
- Xóa Synonym
DROP SYNONYM synonym
Ví dụ: Xóa synonym d_sum trong cơ sở dữ liệu
DROP SYNONYM d_sum Chỉ có những người quản trị cơ sở dữ liệu mới có quyền xóa synonym public
Ví dụ: Xoá synonym public p_sum trong cơ sở dữ liệu
DROP PUBLIC SYNONYM p_sum
Tạo và quản lý đối tượng
Trang 59Tạo và quản lý đối tượng
Câu hỏi và bài tập
Trả lời câu hỏi phần 6.4 trong giáo trình
Chuẩn bị nội dung chương 7.