<< Chapter < Page Chapter >> Page >

SQL-92 cho phép định nghĩa miền với cú pháp:

CREATE DOMAIN<tên miền><Type>

Ví dụ: CREATE DOMAIN hoten char(30);

Sau khi đã định nghĩa miền với tên hoten ta có thể sử dụng nó để định nghĩa kiểu của các thuộc tính

Định nghĩa sơ đồ trong sql.

Lệnh CREATE TABLE với cú pháp

CREATE TABLE<tên bảng>(

<Thuộc tính 1><miền giá trị thuộc tính 1>,

...

<Thuộc tính n><miền giá trị thuộc tính n>,

<ràng buộc toàn vẹn 1>,

...

<ràng buộc toàn vẹn k>)

Các ràng buộc toàn vẹn cho phép bao gồm:

primary key ( A i 1 , A i 2 , . . . , A i m size 12{ { size 10{A} } rSub { size 8{ {i} rSub { size 6{1} } } } , { size 10{A} } rSub { size 8{ {i} rSub { size 6{2} } } } , "." "." "." , { size 10{A} } rSub { size 8{ {i} rSub { size 6{m} } } } } {} )

check(P)

Đặc tả primary key chỉ ra rằng các thuộc tính A i 1 , A i 2 , . . . , A i m size 12{ { size 10{A} } rSub { size 8{ {i} rSub { size 6{1} } } } , { size 10{A} } rSub { size 8{ {i} rSub { size 6{2} } } } , "." "." "." , { size 10{A} } rSub { size 8{ {i} rSub { size 6{m} } } } } {} tạo nên khoá chính của quan hệ. Mệnh đề check xác định một vị từ P mà mỗi bộ trong quan hệ phải thoả mãn.

Ví dụ:

CREATE TABLE customer (

customer_nameCHAR(20) not null,

customer_streetCHAR(30),

customer_cityCHAR(30),

PRIMARY KEY(customer_name));

CREATE TABLE branch (

branch_nameCHAR(15) not null,

branch_cityCHAR(30),

assetsINTEGER,

PRIMARY KEY (branch_name),

CHECK (assets>= 0));

CREATE TABLE account (

account_numberCHAR(10) not null,

branch_nameCHAR(15),

balanceINTEGER,

PRIMARY KEY (account_number),

CHECK(balance>= 0));

CREATE TABLE depositor (

customer_nameCHAR(20) not null,

account_numberCHAR(10) not null,

PRIMARY KEY (customer_name, account_namber));

Giá trị null là giá trị hợp lệ cho mọi kiểu trong SQL. Các thuộc tính được khai báo là primary key đòi hỏi phải là not null và duy nhất. do vậy các khai báo not null trong ví dụ trên là dư (trong SQL-92).

CREATE TABLE student (

nameCHAR(15) not null,

student_IDCHAR(10) not null,

degree_levelCHAR(15) not null,

PRIMARY KEY (student_ID),

CHECK (degree_level IN (‘Bachelors’, ‘Masters’, ‘Doctorats’));

  • Xoá một quan hệ khỏi CSDL sử dụng lệnh Drop table với cú pháp:

DROP TABLE<tên bảng>

  • Thêm thuộc tính vào bảng đang tồn tại sử dụng lệnh Alter table với cú pháp:

ALTER TABLE<tên bảng>ADD<thuộc tính><miền giá trị>

  • Xoá bỏ một thuộc tính khỏi bảng đang tồn tại sử dụng lệnh Alter table với cú pháp:

ALTER TABLE<Tên bảng>DROP<tên thuộc tính>

Sql nhúng (embedded sql)

Một ngôn ngữ trong đó các vấn tin SQL được nhúng gọi là ngôn ngữ chủ (host language), cấu trúc SQL cho phép trong ngôn ngữ chủ tạo nên SQL nhúng. Chương trình được viết trong ngôn ngữ chủ có thể sử dụng cú pháp SQL nhúng để truy xuất và cập nhật dữ liệu được lưu trữ trong CSDL.

BÀI TẬP CHƯƠNG II

  • Xét CSDL bảo hiểm sau:

person(ss#, name, address): Số bảo hiểm ss# sở hữu bởi người tên name ở địa chỉ address

car(license, year, model): Xe hơi số dăng ký license, sản xuất năm year, nhãn hiệu Model

accident(date, driver, damage_amount): tai nạn xảy ra ngày date, do người lái driver, mức hư hại damage_amount

owns(ss#, license): người mang số bảo hiểm ss# sở hữu chiếc xe mang số đăng ký license

log(license, date, driver): ghi sổ chiếc xe mang số đăng ký license, bị tai nạn ngày do người lái driver

các thuộc tính được gạch dưới là các primary key. Viết trong SQL các câu vấn tin sau:

  • Tìm tổng số người xe của họ gặp tai nạn năm 2001
  • Tìm số các tai nạn trong đó xe của"John"liên quan tới
  • Thêm khách hàng mới: ss# =”A-12345”, name ="David”, address ="35 Chevre Road”, license ="109283”, year =”2002”, model ="FORD LASER"vào CSDL
  • xoá các thông tin lien quan dến xe model "MAZDA"của"John Smith”
  • Thêm thông tin tai nạn cho chiếc xe"TOYOTA"của khách hàng mang số bảo hiểm số"A-84626”
  • Xét CSDL nhân viên:

employee (E_name, street, city): Nhân viên có tên E_name, cư trú tại phố street, trong thành phố city

works (E_name, C_name, salary): Nhân viên tên E_name làm việc cho công ty C_name với mức lương salary

copany (C_name, city): Công ty tên C_name đóng tại thành phố city

manages(E_name, M_name): Nhân viên E_name dưới sự quản lý của nhân viên M_name

Viết trong SQL các câu vấn tin sau:

  1. Tìm tên của tất cả các nhân viên làm việc cho First Bank
  2. Tìm tên và thành phố cư trú của các nhân viên làm việc cho First Bank
  3. Tìm tên, phố, thành phố cư trú làm việc cho First Bank hưởng mức lương>10000$
  4. Tìm tất cả các nhân viên trong CSDL sống trong cùng thành phố với công ty mang họ làm việc cho
  5. Tìm tất cả các nhân viên sông trong cùng thành phố, cùng phố với người quản lý của họ
  6. Tìm trong CSDL các nhân viên không làm việc cho First Bank
  7. Tìm trong CSDL, các nhân viên hưởng mức lương cao hơn mọi nhân viên của Small Bank
  8. Giả sử một công ty có thể đóng trong một vaì thành phố. Tìm tất cả các công ty đóng trong mỗi thành phố trong đó Small Bank đóng.
  9. Tìm tất cả các nhân viên hưởng múc lương cao hơn mức lương trung bình của công ty họ làm việc
  10. Tìm công ty có nhiều nhân viên nhất
  11. Tìm công ty có tổng số tiền trả lương nhỏ nhất
  12. Tìm tất cả các công ty có mức lương trung bình cao hơn mức luong trung bình của công ty First Bank
  13. Thay đổi thành phố cư trú của nhân viên"Jones"thành NewTown
  14. Nâng lương cho tất cả các nhân viên của First Bank lên 10%
  15. nâng lương cho các nhà quản lý của công ty First Bank lên 10%
  16. Xoá tất cả các thông tin liên quan tới cong ty Bad Bank

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