1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu bài giảng sql

39 215 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 39
Dung lượng 160,42 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các từ khoá + các biểu thức -> các điều khoản Các điều khoản -> câu lệnh SQL select from where điều khoản Selectđiều khoảnFromđiều khoản WhereDanh sách tên cột : các tên cột cách nhau

Trang 1

Bài giảng Sql

Biên tập bởi:

Vien CNTT – DHQG Hanoi

Trang 4

Sql server

Giới thiệu chung về SQL

Vài nét khái quát

Lịch sử

SQL ra đời vào năm 1970 - tại Phòng thí nghiệm của IBM, San Jose, California

Là một ngôn ngữ mô tả, phi thủ tục - Non procedural language

Các câu lệnh mô tả yêu cầu cần phải Làm gì - What, chứ không cần nêu từng bước tiến hành Làm như thế nào - How

Tên gọi sql = Structured Query Language, nghĩa là ngôn ngữ truy vấn (thông tin) có cấutrúc

Thực chất không chỉ có Query mà SQL còn thực hiện nhiều chức năng khác như bổxung thêm dữ liệu, sửa đổi cập nhật thông tin, huỷ thông tin, liên kết lưu trữ thông tin.Vậy phải gọi là

Structured Add, Modify, Delete, Join, Store, Trigger & Query Language

Ngày nay SQL thực tế đa trở thành chuẩn - De facto Standard - để truy vấn và xử lí dữliệu trong hầu hết các hệ quản trị CSDL

Ngôn ngữ SQL được dùng trong các ứng dụng CSDL theo mô hình Client-Server Cácchương trình khách gửi yêu cầu truy vấn thông tin dưới dạng các câu lệnh SQL Chươngtrình chủ dịch vụ - Server CSDL - sẽ thực hiện yêu cầu và gửi lại kết quả cho chươngtrình khách

Có hai họ sản phẩm, để cài đặt cho PC và để cìa đạt trong các hệ thống lớn VLDB very large DB

-Ví dụ một số hệ quản trị CSDL điển hình

MicroSoft Access

Personal oracle - SQL* Plus

Trang 5

MicroSoft Query.

OBBC - Open Database Connectivity.

Là thư viện các hàm (chức năng) cung cấp một giao diện trình ứng dụng - API -chungtới hệ thống DB

Không phụ thuộc vào nhà cung cấp hệ quản trị DBMS, ( non vendor- specific)

Các nhà cung cấp thường thêm các tính năng ngoài chuẩn, ví dụ : Transact-SQL củaMicroSoft & Sybase, PL/SQL của Oracle

ODBC đã thành chuẩn, nhiều sản phẩm chấp nhận và phát triển các công cụ dùng chuẩnnày : Visual Basic, Visual C++, Foxpro, Borland Delphi, Power Builder

Cần cân nhắc

ODBC : portability, nhưng chậm hơn

Vendor specific : nhanh hơn, tối ưu hơn

Trang 6

SQL trong chương trình ứng dụng.

Ba kiểu tương tác với ứng dụng

- Mođun : các thủ tục làm sẵn thông qua các tham số, gọi và trả kết quả về

- Nhúng trực tiếp : các câu lệnh SQL trong chương trình

- Gọi trực tiếp : tương tác

Nhúng là hình thức làm việc tĩnh - static : câu lệnh được biên dịch ra, không thay đổiđược khi chạy

Hiện nay Dynamic SQL : cho phép chuẩn bị câu lệnh SQL trong khi chạy Các thànhphần của câu lệnh SQL được ghép nối lại trong thời gian chạy, cho phép mức linh hoạtrất cao trong khai thác CSDL

Giống như chuyển từ compiler sang interpreter

Trang 7

Odbc có tính năng Dynamic.

Chuẩn ANSI 1992 : SQL-92

định nghĩa 3 mức tương thích của một hệ quản trị CSDL với SQL - SQL compliance :entry, intermediate, full

Trang 8

Truy vấn thông tin

SQL Query

Một câu lệnh SQL thường gọi là một Query Như trên đã nêu, Query không chỉ đơn giản

là hỏi - truy vấn thông tin từ CSDL để phục vụ NSD

Một SQL query có thể

- tạo lập hay huỷ một bảng

- thêm, xoá, cập nhật một dòng, một trường

- tiùm kiếm trong nhiều bảng có liên quan

- thay đổi chế độ an toàn

Trong chương này ta chỉ tập chung vào chức năng hay sử dụng nhất của một SQL Query

là truy vấn thông tin

Cú pháp chung - câu lệnh SELECT.

- câu lệnh SQL không phân biệt chứ in hoa, viết thường (Nhưng kiểu dữ liệu Char =xâu kí tự thì có phân biệt)

- dấu cách có thể là : các khoảng trắng, dấu table, dấu xuống dòng

- kết thúc câu lệnh có thể là : dấu chấm phẩy hoặc không có gì tuỳ theo từng hệ thống

Ví dụ

SELECT NAME, STARTTERM, ENDTERM

FROM PRESIDENTS

WHERE NAME = 'LINCOLN'

Select name, startterm, endterm

From presidents

Trang 9

Select name, startterm, endterm From presidents Where name = 'LINCOLN'

Các thành phần cơ bản.

Các từ khoá + các biểu thức -> các điều khoản

Các điều khoản -> câu lệnh SQL

select <danh sách tên cột>from <tên bảng>

where <điều kiện tìm kiếm>

điều khoản Selectđiều khoảnFromđiều khoản WhereDanh sách tên cột :

các tên cột cách nhau dấu phẩy

thứ tự giống như đã liệt kê, có thể khác với thứ tự vốn có trong bảng

* = tất cả các cột theo thứ tự vốn có

Vi dụ :

Giả sử có bảng tên là Employee với các trường (các cột) tên là Badge, Name,Departement, BirthYear, Salary Sau này ta sẽ viết ngắn gọn như sau : Employee (Badge, Name, Departement, BirthYear, Salary )

Câu lệnh sau đây sẽ hiện toàn thể nội dung của bảng

SELECT * FROM EMPLOYEE

Badge Name Department Birth year Salary

1051 Fred Sanders Sales 1965 36000.00

3211 Stan Humphries Field Service 1974 22000.00

6732 Fred Stanhope Field Service 1958 56000.00

4411 Sue Sommers Logistics 1965 40000.00

5522 Lance Finepoint Library 1970 24000.00

1997 Mark McGuire Field Service 1966 36000.00

9998 Sally Springer Sales 1973 22000.00

Trang 10

7773 Ludmilla Valencia Software 1969 36000.00

8883 Barbara Lint Field Service 1966 40000.00

8005 Jeffrey Vickers Mailroom 1965 42000.00

7779 Jim Walker Unit Manager 1971 24000.00

Từ khoá DISTINCT / ALL

DISTINCT = chỉ lấy những dòng khác nhau

Nghĩa là nếu có nhiều dòng giống nhau chỉ lấy một đại diện

ALL = tất cả các dòng, kể cả trùng nhau

đây là mặc định , không cần gõ ALL

Cú pháp

Select DISTINCT <danh sách tên cột>

Select ALL <danh sách tên cột>

Trang 11

Biểu thức, điều kiện & toán tử.

Biểu thức :

Là một tập hợp các toán hạng và toán tử, trả lại một giá trị : số, lôgic, xâu

Ví dụ

Biểu thức số : (Salary * 1.05)

Biểu thức lôgic : Name = ' Barbara Lint' , Salary <= 50,000.00

Biểu thức xâu : Name + Phone

Các biểu thức được sử dụng trong câu lệnh QSL :

- Trong điều khoản SELECT để kết xuất thông tin trực tiếp

- Làm điều kiện tìm kiếm trong điều khoản WHERE, HAVING

Biểu thức điều kiện & Điều khoản Where.

Điều kiện là một biểu thức lôgic

Một biểu thức điều kiện được dùng kèm với từ khoá Where để tạo thành điều khoảnWhere, ấn định tiêu chuẩn tìm kiếm thông tin xuất ra Chỉ những dữ liệu thảo điều kiện

đã nêu mới được đưa vào kết quả truy vấn

Ví dụ Câu lệnh sau đây chỉ tìm và xuất ra các thông tin về cán bộ thuộc phòng bán hàng

- Sales

SELECT Name, Departement, Salary

FROM EMPLOYEE

WHERE Departement = 'Sales'

Name Department Salary

Bob Smith Sales 24000.00

Fred Sanders Sales 36000.00

Sally Springer Sales 22000.00

Trang 12

Toán tử số học.

Là các thành phần để xây dựng biểu thức

Các phép toán số học, phép so sánh, phép toán xâu kí tự

Toán tử số học : cộng, trừ , nhân, chia, modulo ( a % b hoặc Mod (a,b) )

Các biểu thức số học, biểu thức xâu có thể sử dụng trong điều khoản SELECT để kếtxuất thông tin trực tiếp

Ví dụ 1: giả sử mọi người đều được phụ cấp thêm 5 phần trăm lương Có thể hiển thịmức thực lĩnh như sau

SELECT Name, Salary * 1.05

FROM EMPLOYEE

Ví dụ 2 : Giả sử có tệp csdl PRICE về giá hàng hoá gồm các trường Item - tên hàng,Wholesale - giá bán buôn Nếu quy định giá bán lẻ là cộng thêm 0.15 thì có thể hiển thịbằng câu lênh sau

SELECT Item, Wholesale, Wholesale + 0.15

FROM PRICE

ALIAS - Tên hiệu

Trong các ví dụ trên tên cột sẽ được hiển thị là Salary * 1.05 hoặc Wholesale + 0.15

không được đẹp mắt và gợi tả nội dung cho lắm

Có thể đặt lại tên cột cho sát nội dung, gợi tả hơn : thay Salary *1.05 bằng Newamount

- số thực lĩnh, thay wholesale + 0.15 bằng retail - giá bán lẻ.

SELECT Name, Salary * 1.05 Newamount

Trang 13

Lưu ý : cú pháp sử dụng Alias là

<biểu thức tên cột> <Alias> cách nhau khoảng trắng

Một số hệ thống có thể quy định khác, ví dụ dùng cú pháp với dấu bằng

<biểu thức tên cột> = <Alias>

Các ví dụ & điều khoản where

Điều kiện tìm kiếm được thể hiện trong diều khoản Where Không chỉ có so sánh bằngnhau mà có thể dùng các phép so sánh bất kì hoặc biểu thức lôgic phức tạp

Ví dụ : - tìm những người lương lớn hơn 30000.00

SELECT Name, Salary

FROM EMPLOYEE

WHERE Salary > 30000.00

- tìm những người lương lớn hơn 30000.00 mà không ở phòng bán hàng

SELECT Name, Salary , Departement

FROM EMPLOYEE

Trang 14

WHERE (Salary > 30000.00) AND (Departement <> 'Sales' )

Toán tử xâu

-LIKE : khi không biét thật chính xác một phần của xâu hoặc chỉ quan tâm đến một phầnnoà đó của xâu, có thể dùng Like với các kí tự đại diện %, _

Kí tự đại diện % thay cho một xâu con bất kì

Kí tự dại diện _ thay cho một kí tự bất kì

Ví dụ : bảng mã vùng điện thoại AREACODE gồm có các trường : TênTỉnh, MãVùng,MãVùng TênTỉnh

Dùng để nối các xâu lại tạo thành biểu thức xâu lớn hơn

Ví dụ có bảng FRIENDS gồm các trường FirstName, LastName, TelNum

Có thể hiên thị tên đầy đủ bằng câu lệnh

SELECT FirstName || LastName FullName

FROM FRIENDS

Trang 15

Toán tử lôgic

AND, OR, NOT,

Các phép toán lôgic có thể dùng để xây dựng các biểu thức điều kiện phức tạp hơn trongđiều khoản Where

Hai bảng phải có cấu trúc giống nhau

UNION : hợp hai kết quả select, có loại bỏ trùng nhau.

UNION ALL : hợp hai kết quả select, không loại bỏ trùng nhau.

INTERSECT : giao hai kết quả select

MINUS : hiệu hai kết quả

Trang 16

Các câu lệnh SQL thông thường két xuất dữ liệu lần lượt theo từng dòng của bảng.

Các hàm tập đoàn - Aggegate function - Xử lí dữ liệu thuộc mọi dòng trong toàn bộ mộtcột ( hoặc một nhóm dòng thoả điều kiện nào đó) và cho ra chỉ một kết quả Chúng dôikhi cũng đợc gọi là hàm nhóm - Group function

Count : đếm số dòng thoả mãn điều khoản Where

Ví dụ: đếm số nhân viên của phòng bán hàng

select count (*)

from employee

where Department = 'Sales'

Nếu không có điều khoản Where thì là đếm toàn bộ nhân viên

Trang 17

Bị lỗi Nếu không phải kiểu số

Select AVG (Salary)

from employee

MAX : cho giá trị cực đại trong cột

Có thể áp dụng cho cột kỉểu số và cả cột kiểu Char

Select MAX(Salary)

from employee

MIN : cho giá trị cực tiểu trong cột

Có thể áp dụng cho cột kiểu số và cả cột kiểu Char

Select MIN(Name)

from employee

VARIANCE :

Cho bình phương của độ lêch tiêu chuẩn

Chỉ áp dụng được cho cột kiểu số

Select VARIANCE(Salary)

from employee

STDDEV : độ lệch tiêu chuẩn - Standard Deviation

Chỉ áp dụng cho cột kiểu số

Ngày tháng và Thời gian.

SYSDATE : Thời gian hệ thống

Dùng để so sánh : tìm các công việc chưa bắt đầu, đã kết thúc

ADD_MONTHS :

Trang 18

Dịch lùi lại, cộng thêm một số tháng từ một ngày cho trước

Ví dụ : Giả sử có CSDL về quản lí dự án gồm các trường Công việc, Ngày bắt đầu, ngàykết thúc

PROJECT ( Task, StartDate, EndDate, ) Giả sử có sự cố làm dự án chậm mất haitháng Để hiển thị các công việc còn chưa két thúc được cần dùng hàm Add_month (Enddate, 2)

Select Task, StartDate, EnDDate Original_End, ADD_MONTHS (EndDate, 2)

From PROJECT

MONTH_BETWEEN :

Đếm số tháng giữa hai mốc ngày

Ví dụ

Select Task, StartDate, EndDate ,

MONTHS_BETWEEN( StartDate, EndDate) Duration

From PROJECT

Các hàm số học.

ABS : giá trị tuyệt đối

CEIL : số trần - số nguyên nhỏ nhất lớn hơn hay bằng đối số

FLOOR : số sàn - số nguyên lớn nhất bé hơn hay bằng đối số

Cac hàm lượng giác

COS , COSH, SIN, SINH, TAN, TANH

đối số là Radian

EXP

LN

LOG (x, b) : log b x

Trang 19

POWER ( a, b) : a b

MOD ( a,b) : a mod b

SIGN : cho dấu = -1 nếu đối số là âm

CONCAT : nối hai xâu

INITCAP : chuẩn hoá xâu, kí tự đầu là in hoa, các kí tự sau là chữ thường

LOWER, UPPER : chuyển đổi cả xâu (mọi kí tự) thành chữ in thường, in hoa

LPAD, RPAD : độn thêm kí tự vào bên trái, bên phải của xâu cho đủ độ rộng

Lpad ( xâu, độ rộng, kí tự mẫu để điền thêm)

Ví dụ

Néu chỉ có hai đối là xâu và độ rộng, không cho kí tự mẫu thì mặc định là khoảng trống.LTRIM, RTRIM :

Ltrim ( xâu, kí tự cần xoá bỏ)

Nếu chỉ có một đối xâu, không cho kí tự mẫu thì mặc định là khoảng trống

REPLACE : thay thế một (các) xâu con bằng một xâu khác

Replay (xâu, xâu con cần tìm, xâu thay thế)

Tìm xâu con và thay thế mỗi khi gặp bằng xâu thay thế

Trang 20

Nếu không có đối thứ 3 - không cho xâu thay thế, thì mặc định là rỗng.

SUBSTR : Trích ra xâu con

SubStr ( xâu, pos , num)

Pos = vị trí bắt đầu

Num = số kí tự trích ra = độ dài xâu con

Nếu pos là số âm thì tính từ cuối xâu mẹ Lưu ý rằng độ rộng trường ấn định trước nên

có thể tính lùi

TRANSLATE Dịch từng kí tự thành kí tự mã hoá tương ứng

Translate (xâu đích, xâu kí tự nguồn, xâu kí tự mã hoá)

Ví dụ : để mã hoá chuyển mọi kí số thành N, kí tự chữ cái thành C

Translate (Firstname, 0123456789ABCDE

NNNNNNNNCCCC

INSTR : tìm kiếm một kí tự mẫu, cho biết vị trí trong xâu

Instr( xâu, mẫu tìm kiếm, vị trí bắt đầu, mẫu thứ mấy)

Ví dụ instr (LastName, 'O', 2, 1)

Bắt dầu từ vị trí thứ 2 trong LastName, tìm vị trí đầu tiên xuất hiện của kí tự O,

LENGTH : cho độ dài xâu

Các hàm chuyển đổi.

TO_CHAR : chuyển thành xâu kí tự

Chuyển một số nguyên thành xâu kí số biểu diễn số đó

TO_NUMBER

Chuyển xâu kí số thành giá trị số

Trang 21

Các hàm khác

GREATEST : cho hạng tử lớn nhất trong dãy các đối

LEAST cho hạng tử nhỏ nhất trong dãy các đối

USER : cho biết tên của người đang sử dụng DB

Điều khoản WHERE.

Một biểu thức điều kiện được dùng kèm với từ khoá Where để tạo thành điều khoảnWhere, ấn định tiêu chuẩn tìm kiếm thông tin xuất ra Chỉ những dữ liệu thoả điều kiện

đã nêu mới được đưa vào kết quả truy vấn

Biểu thưc diều kiện trong điều khoản Where có thể dùng bất kì các phép so sánh số học,các phép toán lôgic nào

Điều khoản STARTING WITH.

Giống như LIKE ( <biểu thức> %)

Điều khoản ORDER BY

Dùng để két xuất thông tin ra theo thứ tự của một cột được chọn làm khoá sắp xếp

Có thể sắp theo nhiều, trước hết sắp theo cột thứ nhất trong danh sách khoá, sau đó trongtừng nhóm cùng cột thứ nhất lai sắp theo cột thứ 2

select *

from employee

Trang 22

order by department, badge desc

ASC : tăng dần, là lựa chon mặc định

DESC : giảm dần

Có thể thay tên cột bằng số thứ tự cột trong bảng

Điều khoản GROUP BY

Khác với ORDER BY in ra mọi dòng theo nhóm không loại bỏ các giá trị trùng lặp, xử

lí cả nhóm dòng cùng giá trị như một đơn vị

select department, count(*) headcount

Điều khoản HAVING

Where không làm việc với các hàm xử lí (tập đoàn) nhóm như AVG, SUM

Trang 23

from table_1, table_2

đây là phép nối tự nhiên, không có điều kiện gì (thiếu điều khoản Where)

kết quả của nối tự nhiên là tích Đề các

Nếu bảng 1 có m dòng, bảng 2 có n dòng thì kết quả sẽ gồm m*n dòng

Nối có điều kiện

Việc chuẩn hoá loại bỏ dư thừa dữ liệu làm cho bảng nhỏ hơn và cơ sở dữ liệu gồmnhiều bảng hơn Rất thông thường, các truy vấn SQL lien quan đến nhiều bảng Điềukhoản Where thể hiện mối liên hệ này

Ví dụ : Có CSDL gồm ba bảng

CUSTOMER (Name, Address, Phone)

Trang 24

ODERS ( OrderOn, Name, PartNum,Quantity)

PART (PartNum, Description, Price)

select o.orderon, o.name, o.partnum,

p.description, o.quantity * p.price total

from order o, part p

where o.partnum = p.partnum

Có thể bổ xung thêm điều kiện vào điều khoản Where để thực hiện các truy vấn chi tiếthơn ví dụ

where o.partnum = p.partnum

and p.price >

Câu lệnh lồng nhau

Câu lệnh con SubQueries

Là một truy vấn khác, đóng vai trò là một phần của điều khoản Where

where name = "bob smith")

Điều kiện lôgic = ở trên đòi hỏi kết quả của câu lệnh con phải đơn trị, nghĩa là chỉ trả vềmột dòng Nếu thay câu lệnh con như sau

(

Trang 25

select department

from employee

where name like "% smith")

Thì có thể mắc lỗi khi có nhiều người tên là smith và ở các phòng chức năng khác nhau

Ví dụ2 :

select o.orderon, o.name, o.partnum,

p.description, o.quantity * p.price total

from order o, part p

where o.partnum = p.partnum

and o.quantity * p.price >

(select AVG(o.quantity * p.price)

from order o, part p

where o.partnum = p.partnum )

Các câu lệnh con lồng nhau.

Các Subqueries có thể lồng nhau nhiều mức, tuỳ theo khả năng cụ thể của từng hệ thốngSQL

from order o, part p

where o.partnum = p.partnum

Ngày đăng: 28/11/2014, 17:13

TỪ KHÓA LIÊN QUAN