Bài viết nhằm giới thiệu đến bạn đọc những nội dung về SQL, lịch sử phát triển của SQL, đặc điểm của SQL và đối tượng làm việc, các kiểu dữ liệu cơ bản của SQL, các tập lệnh cơ bản của SQL. Với các bạn đang học chuyên ngành Công nghệ thông tin thì đây là tài liệu tham khảo hữu ích dành cho các bạn.
Tổng quan ngôn ngữ sql Tng Quan V SQL I_Giới thiệu chung SQL 1>.SQL gì? -SQL viết tắt Structure Query Language,nó công cụ quản lý liệu đ-ợc sử dụng phổ biến nhiều lĩnh vực Hầu hết ngôn ngữ bậc cao có trình hỗ trợ SQL nhVisual BASic,Oracle,Visual C Trong Oracle tất ch-ơng trình ng-ời sử dụng phải sử dụng SQL để truy nhập vào liệu CSDL Oracle Các ch-ơng trình ứng dụng công cụ Oracle cho phép ng-ời sử dụng truy nhập tới CSDL mà không cần sử dụng trực tiếp SQL Nh-ng ứng dụng chạy phải sử dụng SQL 2>.Lịch sử phát triển: -SQL đ-ợc phát triển từ ngôn ngữ SEQUEL2 IBM theo mô hình Codd trung tâm nghiên cứu IBM California ,vào năm 70 cho hệ thống QTCSDL lớn -Đầu tiên SQL đ-ợc sử dụng ngôn ngữ quản lý CSDL chạy máy đơn lẻ Song phát triển nhanh chóng nhu cầu xây dựng CSDL lớn theo mô hình khách chủ( mô hình toàn CSDL đ-ợc tập trung máy chủ (Server)) Mọi thao tác xử lý liệu đ-ợc thực máy chủ lệnh SQL máy trạm dùng để cập nhập lấy thông tin từ máy chủ) Ngày ngôn ngữ lập trình bậc cao có trợ giúp SQL Nhất lĩnh vực phát triển Internet ngôn ngữ SQL đóng vai trò quan trọng Nó đ-ợc sử dụng để nhanh chóng tạo trang Web động SQL đà đ-ợc viện tiêu chuẩn quốc gia Mỹ (ANSI)và tổ chức tiêu chuẩn quốc tế (ISO) chấp nhận nh- ngôn ngữ chuẩn cho CSDL quan hệ Nh-ng chuẩn ch-a đ-a đủ 100%.Nên SQL nhúng ngôn ngữ lập trình khác đà đ-ợc bổ xung mở rộng cho SQL chuẩn cho phù hợp với ứng dụng mình.Do có khác rõ ràng gi-à SQL 3>.Đặc điểm SQL đối t-ợng làm việc: a>Đặc điểm: -SQL ngôn ngữ tựa tiếng Anh -SQL ngôn ngữ phi thủ tục,Nó không yêu cầu ta cách thức truy nhập CSDL nh- Tất thông báo SQL dễ sử dụng khả mắc lỗi -SQL cung cấp tập lệnh phong phú cho công việc hỏi đáp DL +Chèn,cập nhật ,xoá hàng quan hệ +Tạo,sửa đổi,thêm xoá đối t-ợng CSDL Ph¹m Minh Q - Database Comment [none1]: Tỉng quan ngôn ngữ sql +Điều khiển việc truy nhập tới sở liệu t-ợng CSDL để đảm bảo tính bảo mật sở DL +đảm bảo tính quán ràng buộc CSDL -Yêu cầu để sử dụng cho hỏi đáp phải nắm vững đ-ợc cấu trúc CSDL b>Đối t-ợng làm việc SQL: -Là bảng ( tổng quát quan hệ )dữ liệu hai chiêù Các bảng bao gồm nhiều cột hàng.Các cột gọi tr-ờng ,các hàng gọi ghi.Cột với tên gọi kiểu liệu (kiểu dl cột nhất)xác định tạo nên cấu trúc bảng (Ta có thĨ dïng lƯnh Desc[ribe] TABLE-name ®Ĩ xem cÊu tróc cđa bảng ,phần tuỳ chọn[] đ-ợc bỏ Oracle).Khi bảng đà đ-ợc tổ chức hệ thống cho mục đích có CSDL 4>.Các kiểu liệu SQL: -Integer:Số nguyên:-2147483648 đến 2147483647 -Smallinteger:-32768 đến 32767 -Number(n,p):số thập phân độ dài tối đa n kể p chữ số thập phân(không tính dấu chấm) -char (n):xâu có độ dàI cố định n nLệnh SELECT: đối Phạm Minh Quý - Database Tổng quan ngôn ngữ sql *Mệnh đề SELECT t-ơng ứng với toán tử project(phép chiếu ) đại số quan hệ.Nó đ-ợc dùng để tạo danh sách thc tÝnh mµ ta mong mn.Khèi lƯnh SELECT gåm cã ba mệnh đề chính: +SELECT:xác định nội dung cột cấn đ-a +FROM:danh sách quan hệ đ-ợc quét qua +WHERE:ứng với khẳng định lựa chọn đạI số quan hệ.Nó khẳng định liên quan ®Õn c¸c thc tÝnh cđa quan hƯ xt hiƯn mệnh đề FROM: -Một hỏi đáp cuả SELECT th-ờng có d¹ng: SELECT [distinct]*/A1 An FROM r1 rm [WHERE p]; Trong : Ai thuộc tính rj quan hệ (có thể TABLEs,VIEWs )Ta dùng bí danh cho Ai,rj p:là đIều kiện ràng buộc WHERE có không Dùng *để tất thuộc tính quan hệ đ-ợc chọn -Hỏi đáp t-ong đ-ơng với biĨu diƠn sau quan hƯ: A1 An[S p(r1 rm)] -Để loại bỏ giá trị (các hàng) trùng ta thêm từ khoá Distinct vào sau SELECT (tr-ớc SQL thêm từ khoá unique) -Trong khẳng định p:ta dùng liên từ logic and,or,not kết hợp nhiều điều kiện VD1:Để thông tin nhân viên gồm(#,Họ_tên,N_sinh,Chức_vụ,địa_chỉ,l-ơng) SELECT Distinc * FROM R1; *Đ-a (họ_tên,Nsinh,chức_vụ,địa_chỉ,l-ơng,tên_phòng) với đIều kiện l-ơng>500.000 đia_chỉ không Hà nội SELECT Ho_tên,Nsinhn,chức_vụ,địa_chỉ,l-ơng,tên_phòng FROM Nhânviên R1,Liênkêt R2,Phong R3 WHERE (R1.lương>500.000) and (not R1.địa_chỉ=Hà nội) and (R1.#NV=R2.#NV) and (R2.#MP=R3.#MP); -Trong lệnh ta đà dùng R1,R2,R3 làm bí danh cho Nhânviên, Liênkêt,Phong Các bí danh có tác dụng câu lệnh Các ví dụ sau ta dùng R1,R2,R3 để thay cho bảng cho gọn Có toán tử hay đ-ợc dùng với kiểu liệu.Trong mệnh đề WHERE là: In (not In) Between and (not between ) Like(not like) Ph¹m Minh Quý - Database Tổng quan ngôn ngữ sql Is null (not is Null) +To¸n tư In (not In):dùng để kiểm tra giá trị trong(không nằm trong) danh sách đ-ợc Ví d ụ :đ-a ng-ời có đia_chỉ Hà nội Hà tây SELECT * FROM R1 WHERE đia_chỉ in (Hà nội,Hà tây); +To¸n tư Between and (not ) : kiĨm tra gi¸ trị nằm (không nằm giữa) phạm vi đ-ợc VD :đ-a ng-ời có l-ơng nằm khoảng (500.000-:1.000.000) SELECT * FROM R1 WHERE l-ơng between 500.000 and 1.000.000; +Toán tử like (not like):dùng để kiểm tra giá trị giống (không giống) với giá tri sau like,th-ờng sử dụng với xâu ký tự ta xác giá trị cần tìm kiếm giá trị cần tìm kiếm giống mẫu ®ã.Trong SQL ngêi ta sư dơng ký hiƯu % cho xâu _cho ký tự VD:Tìm ng-ời có tên mà có ký tự bÊt kú,ký tù tiỊp theo lµ OA vµ tiÕp theo lµ d·y ký tù bÊt kú: SELECT *FROM R1 WHERE hoten=’_OA%’; +To¸n tư Is Null (not is Null):kiĨm tra cho giá trị rỗng (không rỗng); VD:Đ-a tất nhân viên mà đà cập nhật địa SELECT *FROM R1 WHERE Dia_chi Not Is Null; -Các hàm hay đ-ợc sử dụng mệnh đề SELECT: +AVG:tính giá trị trung bình nhiều tr-ờng bỏ qua giá trị rỗng VD:tính l-ơng TB quan: SELECT AVG(l-ơng) FROM R1; +Count:đ-ợc dùng để đếm (hàng) VD:ĐIểm tổng số ghi từ R1 có l-ong>500.000 SELECT count(*) FROM R1 WHERE l-ơng>500.000 +Hàm Max:tìm giá trị lớn biểu thức: VD:tìm ng-ời có l-ơng lớn nhát R1 có địa Hà Tây SELECT Max(lương) FROM R1 WHERE địa_chỉ=Hà_tây; +Hàm Min:tìm giá trị nhỏ biểu thức: VD:tìm ng-ời có l-ơng nhỏ nhát R1 có địa Hà Tây SELECT Min(l-ơng) FROM R1 WHERE địa_chỉ=Hà_tây; +Hàm Sum:tính tổng giá trị bỏ qua giá trị rỗng VD:Tính tổng l-ơngcủa quan SELECT Sum(l-ơng) FROM R1; -NgoàI mệnh đề ta : +Tìm kiếm theo nhóm nhờ mệnh đề GROUP BYđ-ợc sử dụngđể phân chia thành nhóm nhỏ VD:Đ-a danh sách nhân viên theo nhóm địa Phạm Minh Quý - Database Tổng quan ngôn ngữ sql SELECT *FROM R1 Group by Đia_chỉ; Th-ờng với mệnh đề Group by mệnh đề Having by sử dụng để hạn chế nhóm đ-ợc hiển thị.Chú ý r»ng mƯnh ®Ị Having by chØ ®i víi Group by điều kiện tác động đến nhóm ghi đ-ợc mệnh đề Group by không tác động đến toàn bảng VD: Đ-a danh sách nhóm nhân viên chức vụ có l-ơng >500.000 SELECT * FROM R1 Group by chức_vụ Having by l-ơng>500.000 -Sắp xếp theo nhiều tr-êng ta dïng mƯnh ®Ị ORDER BY (colum1/[ASc|Desc] ) +ASc xếp theo chiều tăng (ngầm định) +Desc xếp theo chiều giảm VD Sắp xếp nhân viên theo chiều giảm theo l-ơng ,nếu mức l-ơng theo xếp theo chiều xếp theo chiều tăng ho_tên SELECT * FROM R1 ORDER BY l-ơng/Desc,ho_tên; 2>Nhóm lệnh INSERT,UPDATE,DELETE: *INSERT: Dùng ®Ĩ chÌn dl vµo mét quan hƯ chóng ta cã thể tạo để chèn vào tập từ hỏi đáp SELECT để chèn vào Có ph¸p cđa lƯnh: INSERT INTO R[A1 An] VALUES(vl1 ) VD:chèn hàng (020,Nguyễn trọng Nghĩa,Bảo vệ,Hà nội,800.000)vào R1 INSERT INTO R1 VALUES (020,Nguyễn trọng Nghĩa,Bảo vệ,Hà nội,800.000); *UPDATE Dùng để sử đổi giá trị hoăc nhiều đà tồn quan hệ cú pháp cuả lệnh UPDATE R SET [WHERE p] VD:-l-ơng tất nhân viên quan tăng 5% UPDATE R1 SET l-ơng=l-ơng*1,05 -chỉ tăng l-ơng ng-ời có l-ơngNhãm lƯnh CREATE,ALTER,DROP: a>LƯnh CREATE Lệnh dùng để tạo quan hệ nh- TABLE,VIEW,INDEX *CREATE TABLE -Bảng cấu trúc để cất giữ hệ thống quan hệ.Có khuôn dạng hai chiều gồm có cột hàng.Nólà yếu tố cho thao tác khác nhau.Có thể nói việc tạo bảng b-ớc quan trọng để thiết lập CSDL -Cú pháp lệnh này: CREATE TABLE table-name(colom_name type(size) ) Khi tạo bảng phải kiểu liệu cột cột có môt kiểu liêụ nhất.Khi tạo bảng ta đ-a ràng buộc Các ràng buộc tr-ờng : primary key,foreign ket ,unique,not null VD:tạo bảng nhân viªn CREATE TABLE NHAN_VIEN (#NV varchar(4) constraint NV_Primary key,ho_tªn Varchar(25),Ng_sinh date,chứcvụ varchar(20),đia_chỉ varchar(30).l-ơng number(7)); VD ta tạo ràng buộc #NV đ-ợc định nghĩa primary key -Ta tạo bảng với cấu trúc liệu từ bảng khác Cú pháp: CREATE TABLE TABLE_name[(colum_name )]AS SELECT statement; VD:tạo bảng có tên NVN (#NV,họ_tên) từ bảng NHAN_VIEN CREATE TABLE NVN AS SELECT #NV,hä_tªn FROM NHAN_VIEN; *CREATE VIEW: -VIEWs giống nh- window mà thông qua window liệu đ-ợc xem thay đổi Nó đ-ợc tạo dựa hay nhiều bảng CSDL.Nó bảng ảo không tồn thực CSDL.Nh-ng đ-ợc truy nhập nh- bảng thông th-ờng.Ta nhận đ-ợc hàng từ VIEW với lệnh SELECT hầu hết tr-ờng hợp việc UPDATE,INSERT,DELETE hàng từ CSDL thông qua VIEW.Có vàI tr-ờng hợp không cho phÐp UPDATE tõ CSDL Ph¹m Minh Quý - Database Tổng quan ngôn ngữ sql -Việc sử dụng VIEW có nhiều hữu ích việc: +Hạn chÕ viÖc truy nhËp CSDL SELECT tõ mét VIEW cã thể hiển thị phần hạn chế CSDL cách nhanh chóng +Cho phép ng-ời dùng tạo hỏi đáp đơn giản để nhận đ-ợc kết từ hỏi đáp phức tạp mà không cần biết cách thức nối bảng nh- +Cung cấp phần tử liệu độc lập cho ng-ời sử dụng ch-ong trình viết ứng dụng dẫn đến đảm bảo cho việc bảo mật liệu ,che dấu liệu khỏi user Cú pháp : CREATE [or REPLACE/FORCE] VIEW view_name [colum ] AS Query,[with check option] -OR REPLACE:cho phép VIEW đ-ợc tạo chí VIEW đà tồn có tên nh- vËy.Do ®ã nã sÏ thay thÕ VIEW cị -FORCE:cho phép tạo VIEW chí bảng sở ch-a tồn nh-ng bảng phải tồn tr-ớc VIEW đ-ợc sử dụng -Mệnh đề WITH CHECK OPTION:chØ r»ng viƯc INSERT,UPDATE thùc hiƯn th«ng qua VIEW không cho phép VD: Tạo VIEW có tên NV_phong từ R1,R2,R3 gồm tr-ờng Họ_tên,phòng CREATE VIEW NV_phong AS SELECT hotªn,tªnphong FROM R1,R2,R3 WHERE (R1.#NV=R2.#NV)and (R2.#MP=R3.#MP) with check option; *CREATE INDEX Bảng số đối t-ợng đặc biệt đ-ợc tạo để cung cấp cho việc truy nhập tới bảng CSDL cách nhanh chóng Cú pháp: CREATE INDEX index_name ON table(colum) VD: CREATE INDEX Nhân _ vien_id ON NHAN_VIEN (Họ_tên); b> Lệnh ALTER -Dùng để thêm hay nhiều tr-ờng vào bảng sửa đổi cột tại.SQL ANSI chuẩn không cho phÐp hủ bá c¸c cét -Có ph¸p: ALTER TABLE TABLE_name ADD | MODIFY | DROP option (colum Datatype ) +ADD:thªm cột +MODIFY:sửa đổi cột +DROP option xoá bỏ ràng buộc VD1:thêm tr-ờng gia đình kiểu char(1) vào R1 ALTER TABLE R1 ADD gia đình char(1); VD2:Thay đổi tr-ờng Địa_chỉ Varchar(30) R1 thành Địa_Chỉ(20): ALTER TABLE R1 MODIFY Địa_Chỉ varchar(20); Phạm Minh Quý - Database Tổng quan ngôn ngữ sql VD3:Huỷ bỏ ràng buộc tr-ờng kho¸ #NV R1 ALTER TABLE R1 DROP constraint NV_prim c>Lệnh DROP -Dùng để xoá bỏ quan hệ,khi ta xoá bỏ bảng sở tất VIEW,INDEX đ-ợc định nghĩa bảng bị xoá bỏ Cú phap: DROP TABLE/VIEW/INDEX Name; VD:Xóa bỏ Nhân_viên_id; DROP INDEX Nhân_viên_id; 4>Tập lệnh GRANT,REVOKE: *Để kiểm tra quyền truy nhËp CSDL dïng lƯnh GRANT Có ph¸p: GRANT privileges ON object TO (user/public)[WITH GRANT OPTION] -c¸c qun (privileges) truy nhËp CSDL: +Read(®äc) +SELECT(chän) +write(ghi) +INSERT(bỉ sung) +UPDATE(sưa ®ỉi) +DELETE,run -Đối t-ợng (object) :là tên quan hệ tên ch-ơng trình -Tên nguời sử dụng:Tên ng-ời ,một nhóm ng-ời danh sách ng-ời public:cho tất ng-ời đ-ợc sử dụng -Từ khoá :with grant OPTION:đảm bảo để ng-ời sử dụng tiếp tục trao qun sư dơng cho ng-êi kh¸c VD:cho phÐp SELECT,INSERT,UPDATE bảng R1 cho Nghĩa,Khôi GRANT SELECT,INSERT,UPDATE ON R1 TO Nghĩa,Khôi with grant option; Nghĩa,Khôi trao quyền cho ng-ời khác *Để huỷ bỏ quyền truy nhập Cú pháp:REVOKE privileges ON object FROM user VD:để huỷ bỏ quyền UPDATE tõ NghÜa: REVOKE UPDATE ON R1 FROM NghÜa; Lêi kết thúc: Trong muốn trình bày với bạn ngôn ngữ SQL chuẩn để nhóm khác tham khảo Nh-ng tài liệu vê SQL chuẩn ,mà tham khảo tµi liƯu vỊ SQL sư dơng cho truy nhËp CSDL ORACLE trình bày có " L¹m dơng" vỊ SQL sư dơng ORACLE Rất mong bạn góp ý kiến! Phạm Minh Quý - Database Tổng quan ngôn ngữ sql Ng-ời trình bầy : Phạm Minh Quý_K40B Tài liệu tham kh¶o : +INTRODUCTION TO ORACLE : SQL PL/SQL AND SQL*PLUS +UNDERSTANDING ORACLE Ph¹m Minh Quý - Database ... góp ý kiến! Phạm Minh Quý - Database Tổng quan ngôn ngữ sql Ng-ời trình bầy : Phạm Minh Quý_K40B Tài liƯu tham kh¶o : +INTRODUCTION TO ORACLE : SQL PL /SQL AND SQL* PLUS +UNDERSTANDING ORACLE Ph¹m... varchar(20); Phạm Minh Quý - Database Tổng quan ngôn ngữ sql VD3:Huỷ bỏ ràng buéc tr-êng kho¸ #NV R1 ALTER TABLE R1 DROP constraint NV_prim c>Lệnh DROP -Dùng để xoá bỏ quan hệ,khi ta xoá bỏ bảng sở tất... trình bày với bạn ngôn ngữ SQL chuẩn để nhóm khác tham khảo Nh-ng tài liệu vê SQL chuẩn ,mà tham khảo tài liệu SQL sử dụng cho truy nhập CSDL ORACLE trình bày cã " L¹m dơng" vỊ SQL sư dơng ORACLE