<< Chapter < Page Chapter >> Page >

VALUES (‘A-9732’, 1200, ‘Perryridge’);

“Cấp cho tất cả các khách hàng vay ở chi nhánh Perryridge một tài khoản với số cân đối là 200$ như một quà tặng sử dụng số vay như số tài khoản“

INSERT INTO Account

SELECT Branch_name, Loan_number, 200

FROM Loan

WHERE Branch_name = ‘Perryridge’

INSERT INTO Depositor

SELECT Customer_name, Loan_number

FROM Borrower, Loan

WHERE Borrower.Loan_number = Loan.Loan_number AND

Branch_name = ‘Perryridge’

Cập nhật (update)

Câu lệnh UPDATE cho phép thay đổi giá trị thuộc tính của các bộ

“Thêm lãi hàng năm vào số cân đối với tỷ lệ lãi suất 5%”

UPDATE Account

SET Balance = Balance*1.05

Giả sử các tài khoản có số cân đối>10000$ được hưởng lãi suất 6%, các tài khoản có số cân đối nhỏ hơn hoặc bằng 10000 được hưởng lãi suất 5%

UPDATE Account

SET Balance = Balance*1.06

WHERE Balance>10000

UPDATE Account

SET Balance = Balance*1.05

WHERE Balance<= 10000

SQL92 đưa vào cấu trúc CASE như sau:

CASE

WHEN P1 THEN Result1

WHEN P2 THEN Result2

...

WHEN Pn THEN Resultn

ELSEResult0

END

trong đó Pi là các vị từ, Resulti là các kết quả trả về của hoạt động CASE tương ứng với vị từ Pi đầu tiên thỏa mãn. Nếu không vị từ Pi nào thỏa mãn CASE trả về Result0.

Với cấu trúc CASE như vậy ta có thể viết lại yêu cầu trên như sau:

UPDATE Account

SET Balance = CASE

WHEN Balance>10000 THEN Balance*1.06

ELSE Balance*1.05

END

“Trả 5% lãi cho các tài khoản có số cân đối lớn hơn số cân đối trung bình”

UPDATE Account

SET Balance = Balance*1.05

WHERE Balance>SELECT AVG(Balance)

FROM Account

Các quan hệ nối

SQL92 cung cấp nhiều cơ chế cho nối các quan hệ bao hàm nối có điều kiện và nối tự nhiên cũng như các dạng của nối ngoài.

Loan INNER JOIN Borrower

ON Loan.Loan_number = Borrower.Loan_number

Nối quan hệ Loan và quan hệ Borrower với điều kiên:

Loan.Loan_number = Borrower.Loan_number

Quan hệ kết quả có các thuộc tính của quan hệ Loan và các thuộc tính của quan hệ Borrower (như vậy thuộc tính Loan_number xuất hiện 2 lần trong quan hệ kết quả).

Để đổi tên quan hệ (kết quả) và các thuộc tính, ta sử dụng mệnh đề AS

Loan INNER JOIN Borrower

ON Loan.Loan_number = Borrower.Loan_number

AS LB(Branch, Loan_number, Amount, Cust, Cust_Loan_number)

Loan LEFT OUTER JOIN Borrower

ON Loan.Loan_number = Borrower.Loan_number

Phép nối ngoài trái được tính như sau: Đầu tiên tính kết quả của nối trong INNER JOIN. Sau đó đối với mỗi bộ t của quan hệ trái (Loan) không tương xứng với bộ nào trong quan hệ bên phải (borrower) khi đó thêm vào kết quả bộ r gồm các giá trị thuộc tính trái là các giá trị thuộc tính của t, các thuộc tính còn lại (phải) được đặt là null.

Loan NATURAL INNER JOIN Borrower

Là nối tự nhiên của quan hệ Loan và quan hệ Borrower (thuộc tính trùng tên là Loan_number).

Ngôn ngữ định nghĩa dữ liệu (ddl)

DDL SQL cho phép đặc tả:

  • Sơ đồ cho mỗi quan hệ
  • Miền giá trị kết hợp với mỗi thuộc tính
  • các ràng buộc toàn vẹn
  • tập các chỉ mục được duy trì cho mỗi quan hệ
  • thông tin về an toàn và quyền cho mỗi quan hệ
  • cấu trúc lưu trữ vật lý của mỗi quan hệ trên đĩa

Các kiểu miền trong sql

SQL-92 hỗ trợ nhiều kiểu miền trong đó bao hàm các kiểu sau:

  • char(n) / charater: chuỗi ký tự dộ dài cố định, với độ dài n được xác định bởi người dùng
  • vachar(n) / character varying (n): chuỗi ký tự độ dài thay đổi, với độ dài tối đa được xác dịnh bởi người dung là n
  • int / integer: tập hữu hạn các số nguyên
  • smallint: tập con của tập các số nguyên int
  • numeric(p, d): số thực dấu chấm tĩnh gồm p chữ số (kể cả dấu) và d trong p chữ số là các chữ số phần thập phân
  • real, double precision: số thực dấu chấm động và số thực dấu chấm động chính xác kép
  • float(n): số thực dấu chấm động với độ chính xác được xác định bởi người dùng ít nhất là n chữ số thập phân
  • date: kiểu năm tháng ngày (YYYY, MM, DD)
  • time: kiểu thời gian (HH, MM, SS)

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Hệ quản trị cơ sở dữ liệu. OpenStax CNX. Jul 31, 2009 Download for free at http://cnx.org/content/col10838/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Hệ quản trị cơ sở dữ liệu' conversation and receive update notifications?

Ask