——— \ ee Quá trình thực thi câu lệnh của SQL*Plus Trang 18 Viện Cơ học và Tin học ứng dụng Báo cáo đề tài Sở KH&CN Bình Dương 12/2009 Câu lệnh dựa trên bộ ký tự chuẩn ASCI Tùy thu
Trang 1VIÊN Cơ HỌC VÀ TIN HỌC ỨNG DỤNG, 7
UNG DUNG CONG NGHE THONG TIN TRONG VIỆC XÂY DỰNG
HỆ THÔNG LƯU TRO VA TRUYEN TAL HINH ANH PHUC | VU
Trang 3
VIEN KHOA HQC VA CONG NGHE VIET NA]
VIEN CO HOC VA TIN HOC UNG DUNG
ỨNG DỤNG CÔNG NGHỆ THÔNG TIN TRONG VIỆC XÂY DỰNG
HỆ THONG LUU TRU VA TRUYEN TAI HINH ANH PHUC VU CHAN DOAN VA TRA CUU (PACS) TAI BENH VIEN DA KHOA
TINH BINH DUONG
Cơ quan chủ trì: Viện Cơ học và Tin học ứng dụng
Địa chỉ: 291 Điện Biên Phủ, Quận 3, thành phố Hồ Chí Minh
Chủ nhiệm đề tài: Th.S Đào Văn Tuyết
bế bó TP Hồ Chí Minh, 06/2010
Trang 4I NỘI DUNG GÓI CÔNG VIỆC 2-s<©+e9EESEEEEeEEEeEEEeECSeCEESEEEetrssstsEessrres 4
1 Tên gói công việc và chức năng gói công việc trong đề tài 22a sccsszecscc 4
2 Nội dung công vVIỆC - - SH ST 1S 11 111111181011 1E KH TH nen Ha 4
3 So bé qua trình nghiên cứu và triển khai gói công việc .- -cc.Scccccoccscs 4
H CÁC THÔNG SÓ CÁU HÌNH HỆ QUẢN TRỊ CSDL ORACLE 5
1 Thông số cấu hình của Server .cc csscccscscsssesssssececssssesssscssssecesssesssecsssscssssecsscessecsen 5
2 Thông số cài đặt hệ quản trị cơ sở đữ liệu OracÌe cccccc St nv na sec rerseea 5
3 Thông số cấu hình Cơ sở đữ liệu DCMDB trén Server eccccscscccscccsscecsssceesssvecessssseee 6
4 Một số lệnh dùng để cầu hình hệ quản trị CSDL Oracle -222222ccczzcccccccc 7
II SỬ DỤNG ORACLIE -2.-S6°CE+eEEE++eEEEEEeEEEEEEEEEEEEEEEEEEEEeEEEEeercrsesrrrrecree 9
Í Ngôn ngữ SQLL L2 SH HT TH HT HT TT T HT HT HH eo 9
2 Các khái niệm cơ bản trong cơ sở dữ liệu - 5-5 St S SE ren rrea 10
2.1 Các thành phần logic trong cơ sở dữ liệu 5s 2c 2t 22 2n EEEerEsrrceee 10
2.2 Cac déi tượng trong cơ sở dữ liệu 22s 222cc 2212222210 2111 EEneee 11
2.3 Cac nhom lénh SQL Co ban cece cccceccsscsessssescessscesceevsusacscaeecaeesssevecseenes 11
3.1 Quy tắc viết lệnh -:- ss 22x 2E1122111212121711111221E221E S1 EEEEEeeEeerree 12
3.2 Câu lệnh truy vấn cơ bản - -s tt E1 1E12111171211E211211 12111121 ee 12
3.3 Phân biệt giá trị dữ liệu trả v - s1 v2 7 EESE12115112112251EEeEEcrre 13
3.4 Gia tr) NUL 6 14
4 SQL*PLUS - Céng cụ tương tác lệnh SQL với cơ sở đữ liệu -Sc se ccsc 15
4.1 Câu lệnh tương tác của SQLŸPlUs 2 c2 1S Snnn HH re Hee, 15 4.2 Phân nhóm câu lệnh trong SQL*Plus ¿52 + Seo SE csrrrrrrrree 16
4.3 Chỉ tiết các lệnh SQL*Plus cơ DAN ccecsessssssessesssessessessecsessecaressecsesevesecesseesns 17
5 Tổng quan về hàm SQL -2¿22+ttSEEEE12E111227112711221110211212112121EEE1EEEce 20
5.1 Cấu trúc hàm SQILL - s22 SE E2112211171121121112E1 215 SEEEEEEEEEnerrrerrree 20
5.2 Một số hàm bổ sung trong Oracle s- 5s S221 2211 22222E1EEEeErree 21
5.3 Cách biểu diễn kết nối tich Decac trong Oracle .ccccescsessesssessseessecsesssseessees 22
5.4 Biến RUNTIME c: 2222222t22222111112221112 27.11 23
6 Table và các lệnh SQL về Table ¿-s©ct E32 SEESEEEEEEEEEEEEEEEEEEcEEvEESErerrreee 24
6.] Lệnh tạo Table, ác c4 ky TH TH TH TT TT T HH 24
6.2 Tham khảo cách tính toán kích thước Table - 555cc xxx 25
6.3 Một số quy tắc khi tạo Table ¿5s 2t SE SE E221 0211 2512E5EEEEEEEEEerreee 26
Trang 2
Trang 5
7 Các kiểu dữ liệu CO DAM ces cecceccesessessseecsuccsusessecevecsusssucsscsuesseestessiessesscssecesseesseee 27
7.1 Kiểu CHAR 5c 2x 2211 22T E122 2111121222 eeerrrcee 27 7.2 Kiểu VARCHAR2 6c St xETEE112711021112111211 7711121112111 eeErrcee 28 7.3 Kiểu VARCHAR Ssc 2x22 71 1212112121211 07121 212 Eeerrerrrereere 28
7.5 Kiểu RAW va kiéu LONGRAW ucceccsccssessseesesesecsececeesecsarsssesssecsesssessseceseceees 29
8 Rang budc dif liéu trong Table ccc cscccscsesessssesescessessesecsececsessescsssececsessecateneers 29
IV QUÁ TRÌNH TẠO CƠ SỞ DỮ LIỆU DCMDB 2c ccsecccssssrcssee 31
V CƠ SỞ DỮ LIỆU CHO HỆ THÓNG PACS SERVER ssscccsseee 44
1 Giới thiệu hệ thống PACS SerVer 5c 2x2 2 11111721 7111111111110711e re 44
1.1 Hệ thống lưu trữ và truyền ảnh PACs gồm có các thành phần chính 44 1.2 Các thành phần của hệ thống PACS Server . -scccscctrerrtreerrrred 45
Các yêu cầu trong việc thiết kế cơ sở đữ liệu cho hệ thống PACS 46
2.1 Tiêu chuẩn hoá hệ thống 2-52 St E1 EEE1E222E7121110711211E11Eeeee 46
2.2 Kiến trúc mở của hệ thống s22 2222222222211 tr crerrriee esse 46
„E2? ca 47
“nề na a Ả 47
Thiét ké Co sé dit ligu cho Hé théng PACS Server sccccsscsssessessssecsesssesseessseesseceees 47
3.1 Scrip sinh co sé dif liéu ctia hé thong PACS .eececcccescccsssesesseeseesteesereseee 47 3.2 Nội dung và cấu trúc bảng đữ liệu đữ liệu - 5252 tecrertrrrrtrrrrrrea 64 TÀI LIỆU THAM KHẢO - 2° c<SSe +9 EEEESEESEEvvEeEsseEeevrevverreerrsrrrsersee 76
Trang >
Trang 6I NOIDUNG GOI CONG VIEC
1 Tên gói công việc và chức năng gói công việc trong đê tài: Ộ
“Thiết kế, xây dựng cơ sở đữ liệu hệ thông cho các module của đề tà?"
Chức năng: xây dựng cơ sở dữ liệu cho các module của đề tài, bao gồm:
Cơ sở đữ liệu cho hệ thống PACS (Picture Archiving Communication System)
Cơ sở đữ liệu cho phần hội chan giữa các phòng: phòng mổ, cấp cứu và hội trường
Cơ sở dữ liệu cho phần mềm tiếp nhận và lưu trữ bệnh nhân tại phòng Siêu âm
Cơ sở đữ liệu cho việc lưu trữ các ảnh sau khi được upload lên Server
Cơ sở dữ liệu cho việc lưu trữ và hiển thị thông tin bệnh nhân
2 Nội dung công việc
Phân tích các yêu cầu về hệ thống Y tế tại bệnh viện để thiết kế cơ sở dữ liệu của
hệ thống, bao gồm: Dữ liệu quản lý ảnh y khoa; Dữ liệu quản lý người dùng (tài khoản cho người dùng); Dữ liệu phục vụ các ca hội chân
Thiết kế cơ sở dữ liệu
Triển khai cài đặt vận hành sử dụng trén hé quan tri CSDL Oracle Chay thir
Kiém tra van hanh hoat động của CSDL
Đào tạo chuyên giao công nghệ khai thác cơ sở dữ liệu 3 Sơ bộ quá trình nghiên cứu và triển khai gói công việc
Thời gian thực hiện: từ tháng 07/2009 đên tháng 11/2009 Quá trình thực hiện: được mô tả qua bảng sau
STT Thời gian thực hiện
của các Bác sỹ tại Bệnh viện
Đa Khoa tỉnh Bình Dương (BVĐKBD)
Tìm hiểu cách cài đặt và cấu
hình hệ quản trị CSDL
Oracle Standard Edition One phién ban 10g (10.0.2.0)
- Vận hành và sử dụng hệ quản trị CSDL Oracle -_ Viết các module truy xuất
dữ liệu trên máy
- Tao bang
- Đưa đữ liệu vào bảng
- Tạo các SP, Function
- Viết module kết nối từ xa
- Đã kết nối vào Oracle từ
các module của các
Trang 4
Trang 7
chương trình viết bằng C#
và Java
Tháng 11/2009 Triển khai hệ quản trị CSDL - Cài đặt một số bang dit
Oracle trén Server Cent OS liệu của các module thực
Linux 5.4 hién trong giai doan I:
* PACS Server
* Module phong Siéu 4m
* Module hội chan
Tu 09 - 12/2009 Thiết kế, cải tiến mô hình cơ - Một số module được triển
sở dữ liệu cho các module khai trong giai đoạn I đã
của hệ thống Tùng bước được thiết kế và chuẩn
chuẩn hóa đữ liệu cho các hóa về dữ liệu
bảng - Dữ liệu của các module
thực hiện giai đoạn II của
đề tài sẽ được chuẩn hóa
dẫn trong quá trình thực thi các gói công việc i Thang 12/2009 Viết báo cáo nghiệm thu giai - 01 Bản báo cáo
đoạn I của cho gói công viéc
| 2.2 của đề tài
Bảng mô tả quá trình thực hiện của gói công việc 2.2 trong dé tai
Il THONG SO CAU HINH CHO HE QUAN TRI CO SO DU LIEU ORACLE
I Thông sô câu hình của Server
" Hostname : demserver.dfck.ioit-hcm.ac.vn
« Dia chi IP : 192.168.1.129
" Hệđiềuhành : CentOS 5.4
* Tai khoan : root Mat khau: sysadmin! !@@##
2 Thông số cài đặt hệ quản trị Cơ sở đữ liệu Oracle
Phiên bản cài đặt : Oracle Standard Edition One 10g, version 10.2.0.0
" Thư mục cài đặt : RACLE_ HOME=”/home/oracle/oracle/product/ 10.2.0/db_1/”
« User Admin : SYS, SYSTEM
« Password : 123456
Trang =:
Trang 8
Fage Peleshed Jal 26, 2008 608-30 ALL Refresh ) View Data Automatically (60 sec)»
General Host CPU Active hy Response
All Policy Ø3 7 Problem Tablespaces 0 Last Backup nía
Hình: Các thông số cấu hình của Cơ sở dữ liệu DCMDB
3 Thông số cầu hình Cơ sở dữ liệu DCMIDB trên Server
Các thông số cầu hình hệ quản trị CSDL của hệ thống PACS Server
" Global Database Name:
“/var/lib/DCMDB”
= _ Thư mục chứa cấu trúc CSDL dưới dang website: $DB_HOME/DBInfo
= Thu muc chứa script sinh CSDL: $DB_HOME/DBScript
= Truy cAp truc tiép vao database: http://dcmserver.dfck.iami.ac.vn:1158/em
Trang 6
Trang 9Sửa cầu hình Thông số cấu hình trong 2 file
listener của thuộc đường dẫn:
$ORACLE_HOME/network/admin Oracle
2 Khoi d6ng listener Chay lệnh sau để khởi dong listener + start: khởi động
$ORACLE_ HOME/bin/,/ Isnrctl
+ start + stop
+ status
3 Kétndéidénhé export ORACLE_SID=xxxx
quan tri CSDL $ORACLE, HOME/bin/.sqlplus
Oracle thông qua /nolog (l)
dòng lệnh
(command line) Hoặc
$ORACLE_ HOME/bin/.sqlplus
“SYS/123 as sysdba” (2)
4 Khởi động Sửa nội dung file:
database SORACLE_ HOME/bin/dbstartup
+ status: xem trang thai
- Lénh (1): chi két nối
với dữ liệu thông qua
listener chứ chưa đăng nhập vào CSDL
- Lệnh (2): đăng nhập vào CSDL bằng quyền
của user SYS, mật
Trang 10khởi động lạ máy ORACLE _SID=TSH1; Chạy lệnh thực thi cập
server, Oracle nhật nội dung vào hệ
cũng được khởi ORACLE_ TERM=xterm; thống: source bashrc
động
PATH=/usr/sbinPATH;
LD_LIBRARY_PATH=E$ORACLE _HOME/Iib:/lib:/usr/lib;
CLASSPATH=$ORACLE_HOME /JREORACLE_HOME/libOR ACLE_HOME/rdbms/jlib;
export ORACLE BASE;
export ORACLE HOME;
6 Lệnh tạo một cơ SORACLE_HOME/bin//dcba Sau khi thực hiện lệnh
sở đữ liệu mới trên, thì màn giao diện
thông qua màn xuất hiện, cho phép ta
hình giao diện chọn các thông số cấu
- Kích thước file
7 Cấu hình để có root# xhost + Muốn cài đặt từ xa thông
thể cài đặt Oracle oracle$ export DISPLAY=:0.0 qua màn hình dòng lệnh,
variable số driver của màn hình
thông qua biến môi tường DISPLAY - DISPLAY variable
Trang 3
Trang 11
8 Thuchién mount SQL> alter database mount,
database sau khi
khởi động
9 Cấu hình CSDL 1 Sửa NLS_LANG 6 ca 2 DB cho
có thé hiển thị giống nhau :
được tiếng Việt
chuẩn UTF-8 regedit tim key
Và chạy file catexp.sql
10 Lệnh kết nối OracleConnector oCon = new
Mô hình cơ sở đữ liệu (CSDL) quan hệ - RDBMS, do E.F Codd đưa ra vào đầu thập
kỷ 70 Từ đó đến nay, nó liên tục phát triển trở thành mô hình CSDL phổ biến bậc nhất
Mô hình quan hệ gồm các thành phần sau:
= Tap hop các đối tượng và / hoặc các mối quan hệ
=_ Tập hợp các xử lý tác động tới các quan hệ
= Rang budc dữ liệu đảm bảo tính chính xác và nhất quán
SQL (Structured Query Language) là tập lệnh truy xuất CSDL quan hệ Ngôn ngữ
SQL được IBM sử dụng đầu tiên trong hệ quản trị CSDL System R vào giữa những năm
70 Hệ ngôn ngữ SQL đầu tiên (SEQUEL2) được IBM công bố vào tháng l1 năm 1976
Năm 1979, tập đoàn Oracle giới thiệu thương phẩm đầu tiên của SQL SQL cũng được
Trang ':
Trang 12
cài đặt trong các hệ quản trị CSDL như DB2 của IBM và SQL/DS
Ngày nay, SQL được sử dụng rộng rãi và đuợc xem là ngôn ngữ chuẩn dé truy cập CSDL
quan hệ
Các chuẩn SQL:
= Nam 1989, viện tiêu chuẩn quốc gia Hoa Kỳ (ANSD công nhận SQL là ngôn ngữ
chuẩn để truy cập CSDL quan hệ trong văn ban ANSI SQL89
" Năm 1989, tổ chức tiêu chuẩn quốc tế (ISO) công nhận SQL ngôn ngữ chuẩn để
truy cập CSDL quan hệ trong văn bản ISO 9075-1989
"_ Tắt cả các hệ quản trị CSDL lớn trên thé giới cho phép truy cập bằng SQL va hau
hết theo chuẩn ANSI
2 Các khái niệm co bản trong cơ sở dữ liệu
2.1 Các thành phân logic trong cơ sở dữ liệu:
Cấu trúc lưu trữ cơ bản nhất trong CSDL quan hệ -
1 Table (RDBMS), bao gom I hoặc nhiều columns (cột dữ liệu) với
0 hoặc nhiêu rows (dòng dữ liệu)
Tổ hợp những giá trị của Column trong bảng Một row còn
2 Row được gọi là I record (ban ghi)
Quy định một loại dữ liệu trong bảng Ví dụ: loại dữ liệu tên phòng ban có trong bảng phòng ban Ta thể hiển thị
3 Column column này thông qua tên column và có thể kèm theo một
vài thông tin khác về column như kiểu đữ liệu, độ dài của
dữ liệu
Giao của column và row Field chính là nơi chứa dữ liệu
4 Eield Nêu không có dữ liệu trong field ta nói field có gia trị là
NULL
Là một column hoặc một tập các column xác định tính duy
5 Primary Key nhất của các rows & trong bảng
Là một column hoặc một tập các columns có tham chiếu tới
6 Foreign Key chính bảng đó hoặc một bảng khác Foreign Key xác định
môi quan hệ giữa các bảng
Trang 1.0
Trang 13Là cấu trúc logic hiển thị dữ liệu từ 1 hoặc nhiều bảng
Sinh các giá trị cho Primary Key Chỉ số tăng tính thực thi cho các câu lệnh truy vẫn Tên tương ứng của đối tượng
Tập hợp các câu lệnh thực hiện được viết bởi ngôn ngữ SQL va PL/SQL, bao g6m Procedure, function, package
Những lệnh này được gọi là các lệnh thao tac dt liệu
DML (Data Manipulation Language)
Là 3 lệnh dùng để thiết lập, thay đổi hay xóa bỏ cầu trúc
đữ liệu như: table, view, index Những lệnh này được gọi
la cdc lénh dinh nghia di ligu DDL (Data Definition
Language)
Trang ii
Trang 14Viện Cơ học va Tin học ứng dụng
GRANT REVOKE
3 Lệnh truy van co ban
3.1 Quy tac viet lénh:
Quan ly viéc thay đỗi dữ liệu bang cac lénh DML Viéc thay đôi dữ liệu có thê được nhóm lại thành các
transaction
2 lệnh này dùng để gán hoặc hủy các quyền truy nhập vào
CSDL Oracle và các cấu trúc bên trong nó Những lệnh này được gọi là các lệnh điều khiển đữ liệu DCL (Data
Control Language)
= Cac l€nh trong SQL thudc loai khéng phan biét chit hoa hay chit thuong
"Nội dung của một câu lệnh SQL có thê được trải dài trên nhiêu dòng
=" CaAc từ khóa không được phép viết tắt hay phân cách trên nhiều dòng
= Các mệnh đề thông thường được đặt trên nhiều dòng khác nhau
x Có thê dùng các ký tự đặc biệt +, -, \, *, đê biêu diễn giá trị trong câu lệnh
« Lénh két thic boi dâu châm phay (;) 3.2 Câu lệnh truy vấn cơ bản
Cú pháp:
SELECT FROM
Với:
SELECT DISTINCT
Phân tiêu để của cột dữ liệu trả về
FROM table Tén bảng chứa dữ liệu truy vẫn
Vi du:
SELECT
FROM emp;
Cấu trúc của lệnh truy vẫn gồm có hai phần:
» _ Mệnh đê chọn lựa bao gôm Lệnh SELECT và tên cột dữ liệu trả về " Mệnh đề biều diễn nơi chứa bao gôm FROM và tên bảng
Trang 12
Trang 15Biểu thức toán học: Trong mệnh đề SELECT biểu thức toán học có thể các gia tri
(column hoặc hàng sô), các toán tử, các hàm Các toán tử được dùng là (+), (-), (*®), (/)
Độ ưu tiên của các toán tử giông trong phân sô học
Vị dụ:
SELECT ename, sal *12, comm FROM emp;
SELECT ename, (sal+250)*12 FROM emp;
Tiêu đề của cột (column alias): Trong m¢nh dé SELECT, column alias 1a phan nhãn
hiển thị của column khi lấy số liệu ra Trong column alias không được có dâu cách và
viết cách sau tên column một dấu cách Column alias được chấp nhận có đấu cách khi
được đặt trong dấu nháy kép (““°?)
Vị dụ: (ANUAL chinh 1a column alias)
SELECT ename, SAL*12 ANUAL, comm FROM emp;
Ghép tiếp các cột đữ liệu: Toán tt ghép tiép chudi (||) cho phép ghép tiép dit liéu
trong các cột khác nhau của cùng một dòng đữ liệu với nhau thành một chuôi Ta có thê
có nhiêu toán tử ghép chuỗi trong cùng một column alias
Vi du:
SELECT empno|{!ename EMPLOYEE
Ghép tiép chuỗi ký f¿: Trong mệnh đề SELECT, ta có thể thực hiện ghép tiếp bắt kỳ
ký tự nào, biểu thức hay số nào mà không phải là column hoặc column alias
Vi du:
SELECT empno||ename|| ‘WORK IN DEPARTMENT’
FROM emp;
3.3 Phân biệt giá trị dữ liệu trả về
Trong thực tế nhiều khi giá trị dữ liệu trên các dòng dữ liệu kết xuất trùng nhau Gây
nhiều bất tiện Để có thể lấy được chỉ các dòng đữ liệu phân biệt với nhau Ta sử dụng
mệnh đề DISTINCT trong câu lệnh truy vấn Vi du:
Trang ¡ ?
Trang 163.4 Gia tri NULL
Cột có giá trị rỗng (NULL) là cột chưa được gán giá trị, nói cách khác nó chưa được
khởi tạo giá trị Các cột với bất cứ kiêu đữ liệu nào cũng có thể có trị NULL, trừ khi được
nó là khóa hay có ràng buộc toàn vẹn NOT NULL Trong biểu thức có bất kỳ giá trị
NULL nao két quả cũng là NULL
Vi du:
SELECT ename, sal*12 + comm ANUAL SAL FROM emp;
NULL trong cdc ham cua SQL: Trong cac hàm làm việc với từng cột hay hàm vô
hướng (scalar function) Các hàm loại này trả vỆ tri null khi có tham sô NULL, trừ hàm
NVL va TRANSLATE có thê trả vê giá trị thực Cú pháp của ham NVL:
NVL (NUMBERCOLDUMN, 9) NVL (CHARCOLUMN, ‘STRING’ )
NVL(comm,0) tra vé tri 0 khi comm 1a null
SELECT ename, sal*12 + NVL(comm,0) ANUAL SAL FROM emp;
Trong các hàm làm việc với nhóm các cột (group function): Hầu hết các hàm lam
việc trên nhóm bỏ qua trị null, ví dụ như khi sử dụng hàm AVG để tính trung bình cho
một cột có các giá trị 1000, NULL, NULL, NULL, 2000 Khi đó trung bình được tính là
(1000+2000) /2=1500, như vậy trị null bị bỏ qua chứ không phải xem là trị 0
NULL trong cdc biéu thức so sánh, điều kiện: Đề kiểm tra có phải NULL hay không
dùng các toán tử IS NULL hoặc IS NOT NULL Nếu trong biểu thức so sánh có trị null
tham gia và kết quả của biểu thức phụ thuộc vào trị null thì kết quả là không xác định, tuy
nhiên trong biểu thức DECODE, hai giá trị null được xem là bằng nhau trong phép so
sánh
Trang 14
Trang 17
Oracle xem các biểu thức với kết quả không xác định tương đương với FALsE (Ví
dụ: comm = NULL) có kết quả không xác định và do đó biểu thức so sánh xem như cho
két qua FALSE Trong câu lệnh sau không có mẫu tin nào được chọn
SELECT * FROM emp WHERE comm=NULL;
Nêu muôn chọn các nhân viên có comm là NUL1, thì phải dùng toán tử 1S NULL
SELECT * FROM emp WHERE comm IS NULL;
4 SQL*PLUS - Céng cu tuong tác lệnh SQL với cơ sở đữ liệu
4.1 Câu lệnh tương tác của SQL*Plus
Oracle hỗ trợ công cụ SQL*Plus cho phép người sử dụng có thể tương tác trực tiếp
với Oracle Server thông qua các câu lệnh SQL và PL/SQL Theo đó người sử dụng có thể
tương tác với Oracle Server thông qua hai loại câu lệnh:
Câu lệnh SQL,
» Câu lệnh của bản thân chương trình SQL*Plus
SGL and SGL*Plus Interaction
Quá trình thực thi câu lệnh của SQL*Plus
Khác biệt giữa lệnh SQL và SQL*Plus
Trang 18Thao tác trên các trên các dữ liệu có trong
các bảng đã được định nghĩa trong database Không thao tác với dữ liệu trong database
Câu lệnh được nạp vào bộ nhớ đệm trên
một hoặc nhiêu dòng Câu lệnh được 1 tải trực › tiếp khong thông qua bộ đệm
4.2 Phân nhóm câu lệnh trong SQL*Plus
Các câu lệnh SQL*Plus có thể phân thành các nhóm chính sau:
nt gs Tác động và gây ảnh hưởng tới môi trường làm việc của
Môi trường SQL*Plus trong phiên làm việc hiện tại
Định dạng dữ liệu Định dạng lại dữ liệu trả về từ Server
Thao tác file Lưu giữ, nạp và chạy các file scrIpts
Thực hiện lệnh Gửi các lệnh SQL có trong bộ đệm lên Server
Soạn thảo Sửa đổi lại lệnh SQL có trong bộ đệm
Cho phép người dùng có thể tạo các biến sử dụng trong câu lệnh
Tương tác SQL và thao tác với các biến đó như: nhập đữ liệu, kết xuất dữ
liệu
Các lệnh khác Các lệnh khác cho phép kết nôi tới cơ sở dữ liệu và hiên thị các
cột dữ liệu theo như định dạng
Trang 19password Mật khẩu truy nhập
DEPTNO NOT NULL NUMBER (2) DNAME VARCHAR2 (14)
Trang 20T[NPUT] text Thêm dòng có chứa text
L[IST] Liệt kê toàn bộ các dòng trong SQL buffer
L[IST] n Liét ké dong n
L(IST] mn Liét ké dong m dén n
R[UN] Hiển thị và chạy lệnh trong buffer
N Nháy dén dong n
N text Thay dong n bởi đoạn text
0 text Chén 1 dong trudc dong |
Ghi nội dung buffer thành file
APPEND: dé ghi thém vao file
REPLACE: đề chèn lên nội dung file cũ
Trang 21TRU [NCATED] Xóa chuỗi tại dòng đầu tiên khi hiển thị
WRA [PPED] Phủ cuối của dòng tiếp theo
Ví dụ 1: Chỉnh định dạng và nhãn của column
COLUMN ename HEADING ‘Employee|Name’ FORMAT Al5
COLUMN sal JUSTIFY LEFT FORMAT $ 99,990.00 COLUMN hiredate FORMAT A9 NULL * Not hired’
Ví dụ 2: Hiển thị định đạng hiện tại của column
COLUMN COLUMN ename
Ví dụ 3: Xóa định dạng hiện tại của column
COLUMN ename CLEAR CLEAR COLUMN
Cac loai dinh dang
Dinh dang Diễn giải Ví dụ Kết quả
An Hiền thị dài nhat n ký tự dùng cho các
9 Hiện thị số, không bao gồm số 0 999999 1234
Trang 22
Hiển thị dấu thập phân 9999.99 1234.00
, Hiển thị dấu phân chia hàng nghìn 9, 999 7 1,234 ——
5 Tổng quan về hàm SQL
5.1 Cấu trúc hàm SQL
Hàm SQL sử dụng để làm tăng khả năng sử dụng câu lệnh SQL Hàm SQL có thé
nhận nhiều tham số đầu vào và trả về chỉ một giá trị/ một bảng hoặc không trả về giá trị
s Thực hiện việc tính toán ngay trên dữ liệu
= Có thể thao tác, thay đổi ngay trên dữ liệu trả về
“_ Có thể thao tác trên nhóm các dữ liệu trả về
"_ Có thể định dạng lại các đữ liệu có kiểu số, hay kiểu thời gian
= Có thể chuyển đôi kiểu dữ liệu trả về
Hàm SQL có thể phân ra làm 2 loại:
= Hàm tác động trên từng dòng dữ liệu: Giá trị trả về tương ứng với từng dữ liệu
đầu vào tại mỗi dòng đữ liệu
" Hàm tác động trên nhóm các dòng dữ liệu: Giá trị trả về tương ứng với các phép
thao tác trên nhóm đữ liệu trả về
Trang 2Ö
Trang 23Hinh: Phan loai ham SQL
5.2 Một số hàm bổ sung trong Oracle
Hàm NULLIF
Cú pháp: NULLIF(exprl, expr2)
" Hàm trả về giá trị NULL nếu biểu thức thứ nhất bằng biểu thức thứ 2
= Trong trường hợp ngược lại, nó trả về giá trị của biểu thức thứ nhất
Hàm COALSCE
Cú pháp: COALESCE(exprl, expr2, expr3, .)
" Trả về giá trị của tham sô đâu tiên khác null
WHEN 2002 THEN 'NEW HIRE'
WHEN 1997 THEN 'FIVE YEARS SERVICE'
WHEN 1992 THEN 'TEN YEARS SERVICE’
ELSE 'NO AWARD THIS YEAR' END ) AS AWARD FROM EMP;
CASE biểu thức SELECT ENAME, SAL, (CASE
WHEN JOB = ‘DBA’ THEN SAL * 1.5 WHEN HIREDATE < SYSDATE - MIN (’05-00’)THEN SAL * 1.25 WHEN DEPTNO IN (40,30,10) THEN SAL * 1.1 ELSE SAL * 9
Trang 21
Trang 24
Viện Co hoc va Tin học ứng dụng Báo cáo đề tài Sở KH&CN Bình Dương 12/2009
END) AS NBW SAL FROM EMP;
5.3 Cách biểu điễn kết nối tich Decac trong Oracle
CROSS JOIN (Cartesian Product)
SELECT E.ENAME, D.DNAME FROM EMP E CROSS JOIN DEPT D;
NATURAL JOIN (Equijoin on All Identically Named Columns)
SELECT E.ENAME, D.DNAME FROM EMP E NATURAL JOIN DEPT D;
Mệnh đề usine (Tuong ty nhu Natural Join, nhung cho phép chi rõ tên cột được
sử dung trong phép kêt nôi)
SELECT E.ENAME, D.DNAME FROM EMP E JOIN DEPT D USING (DEPTNO) ;
Mệnh dé on (Chi ré tên cột tham gia trong phép kết nối)
SELECT E.ENAME, D.DNAME FROM EMP E JOIN DEPT D ON (E.DEPTNO = D.DEPTNO);
Kết nối trai LEFT OUTER JOIN
SELECT E.ENAME, D.DNAME FROM EMP E LEFT OUTER JOIN DEPT D ON(E.DEPTNO = D.DEPTNO);
Két néi trai RIGHT OUTER JOIN
SELECT E.ENAME, D.DNAME FROM EMP E RIGHT OUTER JOIN DEPT D ON(E.DEPTNO= D.DEPTNO);
Két néi FULL OUTER JOIN (All records from both tables—Identical to a union of
left outer join and right outer join)
SELECT E.ENAME, D.DNAME FROM EMP E FULL OUTER JOIN DEPT D ON(E.DEPTNO = D.DEPTNO) ;
diện cho các mẫu tin trùng nhau TH se
UNION ALL Kêt hợp kêt quả của nhiêu câu hỏi với nhau, các mẫu tin trùng
nhau cũng được lặp lại
INTERSET Lấy phần giao các kết quả của nhiều câu hỏi
Lây kết quả có trong câu hỏi thứ nhất mà không có trong câu hỏi MINUS thir hai (cau hoi sau toan tr MINUS) Ẩ NA Lai Am
Vi du:
Trang 25Select job from emp where deptno = 10 Union
Select job from emp where deptno = 30;
Dữ liệu thay thế trong câu lệnh: Dùng (s) để chỉ phần thay thế trong câu lệnh
Nếu dùng (««) chỉ biến thay thế thì sau câu lệnh biến thay thế vẫn còn tồn tại
Ví dụ I:
SELECT * FROM emp
WHERE &Condition Enter value for condition: sal > 1000
5.4 Bién RUNTIME
Khi này câu lệnh trên tương đương với:
SELECT * FROM emp WHERE sal > 1000
Khai báo và gán trị cho các biên, ví dụ khai báo biên cond cé gia tri 'sal>10'
DEFINE condition = 'sal > 10'
Khi đó câu lệnh sau không yêu câu nhập vào gia tri cho codition SELECT * FROM emp
Vi du:
DEFINE REM=’ SAL*12+NVL (COMM, 0)’
SELECT ENAME, JOB, &REM FROM EKP ORDER BY & REM;
Lénh ACCEPT
Khai bao va gan tri cho biên với dòng hiện thị
ACCEPT variable [NUMBER/CHAR] [PROMPT/NOPROMPT 'text'] HIDE
Vi du:
ACCEPT Salary NUMBER PROMPT 'Salary figure: '
Trang 23
Trang 26
Salary figure : 3000
Từ khoá hide cho phép che chuỗi nhập liệu, hay dùng khi nhập password
ACCEPT password CHAR PROMPT 'Enter password: ' HIDE Password : ***
[PCTFREE integer] [PCTUSED integer]
{INITRANS integer] [MAXTRANS integer]
Tên toán tử Diễn giải ¡
tablename Tên table cần tạo
column Tén column trong table
[datatype] Kiểu đữ liệu của column
[DEFAULT expr] | G ia tri mac dinh cua column trong trường hợp NULL là expr |
[PCTFREE integer] | Phần trăm không gian còn trống
[PCTUSED integer] | Phần trăm không gian đã sử dụng
storage_clause] # INITIAL - dung lượng khởi tạo;
" NEXT - dung lượng tăng tiếp theo;
Trang 24
Trang 27
- MINEXTENTSL S mổ tông nhỏ nhất een
" MAXEXTENTS- % mo rong lớn nhât;
» PCTINCREASE - Toc do tang hàng năm
Vi du 2:
CREATE TABLE EMP SAL (NAME, SALARY, GRADE)
AS SELECT ENAME, SAL, GRADE FROM EMP, SALGARDE
WHERE EMP.SAL BETWEEN LOSAL AND HISAL ;
Để tạo một table mới, chúng ta cần phải chuẩn bị một số thông tin sau:
e Table phải được chuẩn hóa
e Những column mà cho phép null nên định nghĩa sau dé tiết kiệm nơi lưu trữ
e Gộp các table lại nếu có thé
Chỉ định các thông số pcfree và pctused
Có thể chỉ định 2 thông số initstran, maxtrans
Có thê chỉ định tablespace cho table
Có thể ước lượng kích thước table, va các thông số cho storage
6.2 Tham khảo cách tính toán kích thước Table
a) Tính toán dung lượng đĩa cân thiệt cho data block header theo công thức sau:
(TABLE DIRECTORY + ROW DIRECTORY)
Trong đó:
EIXED HEADER = 57 bytes
VARIABLE TRANSACTION HEADER = 23*giá trị của thông số instrans
TABLE DIRECTORY =4 ROW DIRECTORY = 2* số lượng row trong block
b) Tính dung lượng trống tối thiểu để chứa dữ liệu của data block theo công thức:
Khoảng đĩa trống để chứa data = (block size -total block
header) - (block size -(fixed header + variable transaction header))* (pctree/100)
Có thé biết block size bằng cách dùng lệnh
show parameters db block size
Trang 25
Trang 28Viện Cơ học và Tin học ứng dụng Báo cáo đề tài Sở KH&CN Bình Dương 12/2009
c) Tính toán dung lượng đĩa trống kết hợp bằng giá trị mỗi row
d) Tính toán k ích thước trung bình của row:
Kích thước trung bình của row = row header + A + B+€C
A = Tổng chiều dài của các cột <= 250 byte
B = Tổng chiều dài của các cột > 250 byte
C = Khoảng đĩa trống kết hợp
e) Quyết định số row trung bình cho một block
avg rows /block = available space/average row size
f) Tính toán số lượng block
Block = số row / số row trung bình cho một block
6.3 Một số quy tắc khi tạo Table
a) Quy tac dat tén Object
e Tên không chứa dấu nháy (") Không phân biệt chữ hoa chữ thường
Tên phải bắt đầu bằng ký tự chữ trong bộ ký tự của CSDL,
Tên không được trùng với các từ đã dùng bởi Oracle
Tên không được cách khoảng trống Tên đài tir 1 đến 30 ký tự, ngoại trừ tên CSDL không quá 8 ký tự và tên liên
kết có thể đài đến 128 ký tự
e Tên chỉ có thể chứa ký tự số trong tập ký tự của CSDL Có thể dùng các ký
tự _, $, # Oracle không khuyến khích dùng các ký tự $ và #
e Tên có thể đặt trong cặp dấn nháy kép, khi đó tên có thể bao gồm các ký tự bất kỳ, có thể bao gồm khoảng trống, có thể dùng các từ khóa của Oracle, phân biệt chữ hoa chữ thường
e Tên phải duy nhất trong "không gian tên" nhất định Các object thuộc cùng không gian tên phải có tên khác nhau
Các bí danh của cột, bí danh bảng, tên người sử dụng, mật khâu mặc dù không phải
là các object hoặc các thành phần con của object nhưng cũng phải được đặt tên theo các
quy tắc trên, ngoại trừ
Bí danh cột, bí danh bảng chỉ tổn tại khi thực hiện các lệnh SQL và không được lưu
trữ trong CSDL, do vậy không áp dụng quy tắc 9 về không gian tên Mật khẩu không
thuộc về không gian tên nào và do đó cũng không áp dụng quy tắc 9 Nên đặt tên theo
một quy tắc đặt tên thống nhất
b) Qu y tắc tham chiếu đến Object
Trang 25
Trang 29part Thành phần của object
Oracle gidi quyết việc tham chiếu các Object
Khi tham chiếu đến một object trong câu lệnh SQL, Oracle phân tích câu lệnh và và
xác định các object trong không gian tên Sau khi xác định các object, Oracle thực hiện
các thao tác mà câu lệnh quy định trén object Néu tén object truy cập không thuộc không
gian tên thì câu lệnh không được thực hiện và có thông báo lỗi
Câu lệnh sau thêm một mẫu tin vào bảng DEPT
INSERT INTO Dept VALUES (50, 'SUPPOR', 'PARIS')
Theo ngữ cảnh của câu lệnh, Oracle xác định bảng DEPT có thể là:
" Một table trong schema của bạn
" Một view trong schema của bạn
“ Đồng nghĩa riêng cho table hoặc view
“ Đồng nghĩa chung cho table hoặc view Tham chiếu đến các object không thuộc quyên sở hữu
Để tham chiếu đến các object khong thuộc schema hiện thời, phải chỉ ra tên của
schema chứa object muốn truy cập
schema.object
Vi du: Dé xa table EMP trong schema SCOTT
DROP TABLE scott.emp
Tham chiếu các object từ xa
Để truy cập đến một CSDL ở xa, sau tên object phải chỉ ra tên liên kết CSDL
(database link) của CSDL chứa object muốn truy cập Database link là một schema
object, Oracle dùng để thâm nhập và truy xuất CSDL từ xa
7 Các kiểu đữ liệu cơ bản
7.1 Kiểu CHAR
Kiểu CHAR dùng để khai báo một chuỗi có chiều dài cố định, khi khai báo biến hoặc
cột kiểu CHAR với chiều dài chỉ định thì tất cả các mục tin của biến hay cột này đều có
cùng chiều dài được chỉ định Các mục tin ngắn hơn Oracle sẽ tự động thêm vào các
Trang 27
Trang 30Kiểu VARCHAR2 dùng để khai báo chuỗi ký tự với chiều dài thay đổi Khi khai báo
một biến hoặc cột kiểu VARCHAR2 phải chỉ ra chiều dài tối đa, các mục tin chứa trong biến hay cột kiểu VARCHAR2 có chiều đài thực sự là chiều dài của mục tin Oracle không cho phép gán mục tin đài hơn chiều đài tối đa chỉ định đối với kiểu VARCHAR2 Chiều dài tối đa kiểu VARCHAR2 là 2000 byte
7.3 Kiểu VARCHAR
Hiện tại Oracle xem kiêu VARCHAR2 và VARCHAR là như nhau, tuy nhiên Oracle khuyên nên dùng VARCHAR2 Oracle dự định trong tuong lai ding kiéu VARCHAR dé chứa các chuỗi với chiều dài biến đổi, nhưng trong phép so sánh sẽ được chỉ định theo nhiều ngữ nghĩa khá nhau
NUMBER (p) Số có dấu chấm thập phân có định bằng p va scale bằng 0
NUMBER Số với dấu chấm động với p= 3 scale không được áp dụng cho số với
dấu chấm động
Ví dụ sau cho thấy cách thức Oracle lưu trữ dữ liệu kiểu số tùy theo cách định
precision và scale khác nhau
Trang 31
7.5 Kiểu RAW và kiểu LONGRAW
Kiểu RAW và LONG RAW dùng để chứa các chuỗi byte, các dữ liệu nhị phân như
hình ảnh, âm thanh Các 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 và kiểu LONG RAW giống kiểu LONG,
chỉ khác nhau ở chỗ Oracle tự động chuyển đổi các giá trị kiểu CHAR, VARCHAR2 và
LONG giữa tập hợp ký tự của CSDL và tập ký tự của các ứng dụng
8 Rang buộc dữ liệu trong Table
Các dạng ràng buộc (consfraint) bao gồm:
Là ràng buộc coluimn trông hoặc không trông Ví dụ mệnh đê ràng buộc:
CREATE TABLE DEPT (
DEPTNO NUMBER (2) NOT NULL, DNAME CHAR(14),
LOC CHAR (13),
8.2 UNIQUE ;
Chỉ ra ràng buộc duy nhat, cac gid tri cha column chi trong ménh dé UNIQUE trong
các row của table phải có giá trị khác biệt Giá trị null là cho phép nêu UNIQUE dựa trên
một cột
Vi du:
CREATE TABLE DEPT ( DEPTNO NUMBER (2), DNAME CHAR (14), LOC CHAR (13),
CONSTRAINT UNQ DEPT LOC UNIQUE(DNAME, LOC));
8.3 PRIMARY KEY
Chi ra ràng buộc duy nhat (giéng UNIQUE), tuy nhién khoa !a dang khoa UNIQUE cap
cao nhất Một table chỉ có thể có một PRIMARY KEY Các giá trị trong PRIMARY KEY phải
NOT NULL
Cú pháp khi dat CONSTRAINT 6 mltc TABLE:
[CONSTRAINT constraint_name] PRIMARY KEY (column, Column )
Trang 29
Trang 32
Cú pháp khi đặt CONSTRAINT ở mỨc COLUMN
[CONSTRAINT constraint name] PRIMARY KEY
8.4 FOREIGN KEY (Referential Key)
Chỉ ra mối liên hệ ràng buộc tham chiếu giữa table này với table khác, hoặc trong chính | table No chỉ ra mối liên hệ cha-con và chỉ ràng buộc giữa FOREIGN KEY bang này VỚI PRIMARY KEY hoặc UNIQUE KEY của bảng khác Ví dụ quan hệ g1ữa DEPT Và EMP thông qua trường DRPTNO
Từ khoá ON DELETE CASCADE được hỉ định trong dạng khoá này để chỉ khi dữ liệu
cha bị xoá (trong bang DEPT) thi đữ liệu con cũng tự động bị xoá theo (trong bảng EMP)
Trang 33
IV QUÁ TRÌNH TẠO CƠ SỞ DỮ LIỆU DCMDB
Từ màn hình Terminal thực hiện các lệnh, cửa sô DatabaseConfig xuât hiện:
Welcame tc Database Configuration Assistant for Oracle database
The Da:abase Configuration assistart erabl2s you to create a database, con‘igu’e catadas2 3ptions in an extstng jalabase, delete a database, and manage database templates
Trang 34
Viện Cơ học và Tin học ứng dụng Báo cáo đề tài Sở KH&CN Bình Dương 12/2009
Trang 35Clobal Database Name: IDCVDB
4 da:abase is refersnced by at least one Oracle instance which is tniquely identif ed fram
any other instance on this computer bv an Oracle System Idantiier (SIC)
Each Oracle database may be maragad centrally us ng che Oracle =nterprise Warager G-id
Control or tocally using the Orécle Enterprise Manager Database Control Choose :he management option that you would fike to use to menace this database
l¥ Contigure the Catagas2 with Ente-prise Manager
T lise Grid Contral ‘or ñ
Wltayerienl Zep ie
@ Use Datacase Control for Detabase Maiag2ment
I~ Enable Email Notifications
Trang 36© Use Different Passwords
Use the File System for Database storage
Automatic Storage Nanaqemert simplfies dacabase storage admin stration and oatimizes datakase layout for 1/C performance To use this option you must either
specify d sel uf disks UL Greate an ASM disk yruuy ur splify an existing 45M disk yrlup
™ Raw Devices Kaw dartitions or vclurres can provide the rejulred shared storage tor Keal Application
Clustars (RAC) catazas2¢ if you cdo not use Automatiz Storage Management and a Cluster
File Syste is nct available You need to 1ave cr2atec) one raw device for eac1 datafile, control file, and tog file you are planning to creat2 in the dalabase
Trang 37
Soac fy locations for the Detabase files to be created:
§ Use Database File Locetiors fram Template
f Use Common Location for All Datzbase Files
Mutiglex Redo Logs anc Cortral Files
if you went to speci'y different locations for any database files, pick either of the
ajove options anc ase the Sto-age pége :o saecfy each tocation
Choose the reccvery options for tre database:
i Specity Has? KecoveryArea
This $ used as the default for all backup anc recovery operaticns, and is also required
for automati: backtp using Energprise Menacer Oracle recornmands tiat the database
fies and recoveyfiles 3e located on physicaly ciffe-ent disks for data protection and
perfcrmance
Flash Recovery Area: ORACLE BASEV/flash.recovery, Browse }
Flash Recovery Area Size: [2048 ; |MBWes - +|
Trang 38PeIrar†A03: '4a 2 Show Memcry Distriburion |
© Lusiom Shared Memory Management: © Aimermatic © anual
To:al Memory for Oracle:
errpty paramaters, if any
All Initialization Perameters |
Cancel | Help =| „ý Ba:k | Next >) Enish |
Báo cáo đề tài Sở KH&CN Bình Duong 12/2009
Trang 36
Trang 39
A block is the smallest unit of starage far allocatiot and for |jO, & cannot be chang2d
once tie database is created
Byes
Sp2cify the maximum number of ocerating systerr user processes that can be
simultaneously ccnnect t this database Tre value of this pararrete~ must be 6 or yrealer (5 fur the ba-Kyruun processus plus 2 fur each ube putes)
© Use Lnicode (AL32LTF8) Settirg characte’ set to Unizod2 (AL3 2UTF8) enables you to store multiple lenglage groups
® Choose from the list of character sats
Database Character Ser; _ [U"F8 - Uniccde 3.0 UTF-8 Universal character se ~|
Trang 40
Select the mode in wich you want vour dacabase to operate by default:
© Dedicated Server Mode
For eack client connection the database will allocate a resource dediceted to serving
Litly Uta! Clie Us Unis rude wher the nuribe: uf tutal cles Cunections is expected
tf he small ar when clisnte will he meking persisten:, Inng-running requests tn the
database
6 Shared Server Moce Several client connecticns share a databese-allocated cool of resources Use this mode when a larg2 number of users need t2 ccnnect ta the database simultaneously while
cfficiently utilizing system rescurc2z The Oracle shared server featur2 will be crablad
Shar3d Servers specifies the number of server processes tral you want 10 create when
B>_JRedo Log GrouEs database creation This page displays a tree listing and summary view (multi-colunn
lists) to allow you to chaige and view tre following okjecis:
Fram any object type fo der, click Create 10 create a new object To delete an object,
select the specific object from within the object tye “older end click Uelete
Important: [f you select a database tenplate including cata files, you will rot be able to
@UU UF rerriuve Cala files, tablespaces, ur rullback seyrrierits, Selecting this type uf template alinws you ta change the ‘nllewing:
= Destination of the datafiles
« Contro! filzs cr log qrouns