Truy vấn Sql để tạo một bảng ví dụ. Cách tạo cơ sở dữ liệu trong môi trường SQL Server

1 phiếu bầu

Chào mừng đến với trang blog của tôi. Hôm nay chúng ta sẽ nói về truy vấn sql cho người mới bắt đầu. Một số quản trị trang web có thể có một câu hỏi. Tại sao phải học sql? Không thể qua được sao?

Hóa ra điều này sẽ không đủ để tạo ra một dự án Internet chuyên nghiệp. Sql được sử dụng để làm việc với cơ sở dữ liệu và tạo ứng dụng cho WordPress. Hãy xem cách sử dụng truy vấn chi tiết hơn.

Nó là gì

Sql-ngôn ngữ truy vấn có cấu trúc. Được thiết kế để xác định loại dữ liệu, cung cấp quyền truy cập vào dữ liệu đó và xử lý thông tin trong khoảng thời gian ngắn. Nó mô tả các thành phần hoặc một số kết quả mà bạn muốn thấy trên dự án Internet.

Nói một cách đơn giản, ngôn ngữ lập trình này cho phép bạn thêm, thay đổi, tìm kiếm và hiển thị thông tin trong cơ sở dữ liệu. Sự phổ biến của mysql là do nó được sử dụng để tạo các dự án Internet động dựa trên cơ sở dữ liệu. Vì vậy, để phát triển một blog chức năng, bạn cần học ngôn ngữ này.

Nó có thể làm gì

Ngôn ngữ sql cho phép bạn:

  • tạo bảng;
  • thay đổi để nhận và lưu trữ dữ liệu khác nhau;
  • kết hợp thông tin thành các khối;
  • bảo vệ dữ liệu;
  • tạo yêu cầu trong quyền truy cập.

Quan trọng! Khi bạn hiểu sql, bạn có thể viết ứng dụng cho WordPress ở bất kỳ mức độ phức tạp nào.

Cấu trúc gì

Cơ sở dữ liệu bao gồm các bảng có thể được trình bày dưới dạng tệp Excel.

Nó có tên, cột và hàng với một số thông tin. Bạn có thể tạo các bảng như vậy bằng cách trợ giúp về sql yêu cầu.

Những gì bạn cần biết


Những điểm chính để học Sql

Như đã lưu ý ở trên, các truy vấn được sử dụng để xử lý và nhập thông tin mới trong cơ sở dữ liệu bao gồm các bảng. Mỗi dòng là một mục riêng biệt. Vì vậy, hãy tạo một cơ sở dữ liệu. Để làm điều này, hãy viết lệnh:

Tạo cơ sở dữ liệu 'bazaname'

Chúng tôi viết tên cơ sở dữ liệu bằng tiếng Latin trong dấu ngoặc kép. Hãy cố gắng nghĩ ra một cái tên rõ ràng cho nó. Không tạo cơ sở dữ liệu như “111”, “www” và những thứ tương tự.

Sau khi tạo cơ sở dữ liệu, hãy cài đặt:

ĐẶT TÊN 'utf-8'

Điều này là cần thiết để nội dung trên trang web được hiển thị chính xác.

Bây giờ hãy tạo một bảng:

TẠO BẢNG 'bazaname' . 'bàn' (

id INT(8) KHÔNG NULL AUTO_INCREMENT KHÓA CHÍNH,

nhật ký VARCHAR(10),

vượt qua VARCHAR (10),

ngày NGÀY

Ở dòng thứ hai chúng ta viết ba thuộc tính. Hãy xem ý nghĩa của chúng:

  • Thuộc tính NOT NULL có nghĩa là ô sẽ không trống (trường này là bắt buộc);
  • Giá trị AUTO_INCREMENT là tự động hoàn thành;
  • KHÓA CHÍNH - khóa chính.

Cách thêm thông tin

Để điền các giá trị vào các trường của bảng đã tạo, câu lệnh INSERT được sử dụng. Chúng tôi viết các dòng mã sau:

CHÈN VÀO 'bảng'

(đăng nhập, vượt qua, ngày) GIÁ TRỊ

("Vasa", '87654321', '21-06-2017 18:38:44');

Trong ngoặc, chúng tôi chỉ ra tên của các cột và trong cột tiếp theo - các giá trị.

Quan trọng! Duy trì tính nhất quán trong tên và giá trị cột.

Cách cập nhật thông tin

Để thực hiện việc này, hãy sử dụng lệnh UPDATE. Hãy xem cách thay đổi mật khẩu cho một người dùng cụ thể. Chúng tôi viết các dòng mã sau:

CẬP NHẬT 'bảng' SET pass = '12345678' WHERE id = '1'

Bây giờ hãy thay đổi mật khẩu '12345678'. Những thay đổi xảy ra ở dòng có “id”=1. Nếu bạn không viết lệnh WHERE, tất cả các dòng sẽ thay đổi, không phải một dòng cụ thể.

Tôi khuyên bạn nên mua cuốn sách " SQL dành cho người mới bắt đầu " Với sự trợ giúp của nó, bạn có thể từng bước làm việc chuyên nghiệp với cơ sở dữ liệu. Mọi thông tin đều được cấu trúc theo nguyên tắc từ đơn giản đến phức tạp và sẽ được tiếp nhận tốt.

Làm thế nào để xóa một mục

Nếu bạn viết sai, hãy sửa nó bằng lệnh DELETE. Hoạt động tương tự như CẬP NHẬT. Chúng tôi viết đoạn mã sau:

XÓA TỪ 'bảng' Ở ĐÂU id = '1'

Thông tin lấy mẫu

Để lấy các giá trị từ cơ sở dữ liệu, hãy sử dụng lệnh SELECT. Chúng tôi viết đoạn mã sau:

CHỌN * TỪ 'bảng' Ở ĐÂU id = '1'

TRONG trong ví dụ này Trong bảng, chọn tất cả các trường có sẵn. Điều này xảy ra nếu bạn nhập dấu hoa thị “*” vào lệnh. Nếu bạn cần chọn một số giá trị mẫu, hãy viết điều này:

CHỌN nhật ký, chuyển TỪ bảng WHERE id = '1'

Cần lưu ý rằng khả năng làm việc với cơ sở dữ liệu sẽ không đủ. Để tạo một dự án Internet chuyên nghiệp, bạn sẽ phải học cách thêm dữ liệu từ cơ sở dữ liệu vào các trang. Để làm điều này, hãy làm quen với ngôn ngữ lập trình web PHP. Nó sẽ giúp bạn điều này khóa học tuyệt vời của Mikhail Ruskov .


Xóa một bảng

Xảy ra khi sử dụng yêu cầu DROP. Để làm điều này, chúng tôi sẽ viết những dòng sau:

LÀM RƠI bảng BẢNG;

Hiển thị bản ghi từ bảng dựa trên điều kiện cụ thể

Hãy xem xét mã này:

CHỌN id, quốc gia, thành phố TỪ bảng WHERE người>150000000

Nó sẽ hiển thị hồ sơ của các quốc gia có dân số hơn một trăm năm mươi triệu người.

Một hiệp hội

Có thể liên kết nhiều bảng với nhau bằng cách sử dụng Join. Xem cách nó hoạt động chi tiết hơn trong video này:

PHP và MySQL

Một lần nữa tôi muốn nhấn mạnh rằng các yêu cầu khi tạo một dự án Internet là điều bình thường. Để sử dụng chúng trong các tài liệu PHP, hãy làm theo thuật toán sau:

  • Kết nối với cơ sở dữ liệu bằng lệnh mysql_connect();
  • Sử dụng mysql_select_db(), chúng tôi chọn cơ sở dữ liệu mong muốn;
  • Chúng tôi xử lý yêu cầu bằng mysql_fetch_array();
  • Đóng kết nối bằng lệnh mysql_close().

Quan trọng! Làm việc với cơ sở dữ liệu không khó. Điều chính là viết yêu cầu một cách chính xác.

Quản trị web mới bắt đầu sẽ nghĩ về nó. Bạn nên đọc gì về chủ đề này? Tôi muốn giới thiệu cuốn sách của Martin Graber " SQL dành cho người bình thường " Nó được viết theo cách mà người mới bắt đầu sẽ hiểu mọi thứ. Hãy sử dụng nó như một cuốn sách tham khảo.

Nhưng đây là một lý thuyết. Điều này hoạt động như thế nào trong thực tế? Trên thực tế, một dự án Internet không chỉ phải được tạo ra mà còn phải được đưa lên TOP Google và Yandex. Khóa học video sẽ giúp bạn điều này “ Tạo và quảng bá trang web ».


Video hướng dẫn

Vẫn còn thắc mắc? Xem video trực tuyến để biết thêm chi tiết.

Phần kết luận

Vì vậy, việc tìm ra cách viết truy vấn sql không khó như bạn tưởng, nhưng bất kỳ quản trị trang web nào cũng cần phải làm điều này. Các khóa học video được mô tả ở trên sẽ giúp giải quyết vấn đề này. Đăng ký nhóm VKontakte của tôi là người đầu tiên biết khi nào có thông tin thú vị mới xuất hiện.

Như vậy, chúng ta đã làm quen với các kiểu dữ liệu, bây giờ chúng ta sẽ cải thiện các bảng cho diễn đàn của mình. Chúng ta hãy nhìn vào chúng trước tiên. Và hãy bắt đầu với bảng người dùng. Chúng tôi có 4 cột trong đó:

Id_user là các giá trị nguyên, nghĩa là kiểu sẽ là int, hãy giới hạn ở 10 ký tự - int (10).
tên - Chuỗi giá trị varchar, hãy giới hạn ở 20 ký tự - varchar(20).
email là giá trị chuỗi varchar, hãy giới hạn ở 50 ký tự - varchar(50).
mật khẩu là giá trị chuỗi varchar, chúng tôi sẽ giới hạn ở 15 ký tự - varchar(15).

Tất cả các giá trị trường đều là bắt buộc, nghĩa là bạn cần thêm loại NOT NULL.

Id_user int (10) KHÔNG NULL
tên varchar(20) KHÔNG NULL
email varchar(50) KHÔNG NULL

Cột đầu tiên, như bạn nhớ từ mô hình khái niệm cơ sở dữ liệu của chúng tôi, là khóa chính (nghĩa là các giá trị của nó là duy nhất và chúng xác định duy nhất bản ghi). Bạn có thể tự mình giám sát tính duy nhất, nhưng điều đó không hợp lý. Có một thuộc tính đặc biệt trong SQL cho việc này - AUTO_INCREMENT, khi truy cập vào bảng để thêm dữ liệu sẽ tính giá trị lớn nhất của cột này, tăng giá trị kết quả lên 1 và nhập vào cột. Do đó, một số duy nhất được tạo tự động trong cột này và do đó loại NOT NULL là dư thừa. Vì vậy, hãy gán một thuộc tính cho cột bằng khóa chính:


tên varchar(20) KHÔNG NULL
email varchar(50) KHÔNG NULL
mật khẩu varchar(15) KHÔNG NULL

Bây giờ chúng ta cần xác định rằng trường id_user là khóa chính. Để làm điều này trong SQL, chúng tôi sử dụng từ khóa KHÓA CHÍNH(), tên được ghi trong ngoặc trường khóa. Hãy thực hiện thay đổi:

Id_user int (10) AUTO_INCREMENT
tên varchar(20) KHÔNG NULL
email varchar(50) KHÔNG NULL
mật khẩu varchar(15) KHÔNG NULL
KHÓA CHÍNH (id_user)

Vì vậy, bảng đã sẵn sàng và phiên bản cuối cùng của nó trông như thế này:

Tạo người dùng bảng (
id_user int (10) AUTO_INCREMENT,
tên varchar(20) KHÔNG NULL,
email varchar(50) KHÔNG NULL,
mật khẩu varchar(15) KHÔNG NULL,
KHÓA CHÍNH (id_user)
);

Bây giờ chúng ta hãy nhìn vào bảng thứ hai - chủ đề. Lập luận tương tự, ta có các trường sau:



id_author int (10) KHÔNG NULL
KHÓA CHÍNH (id_topic)

Nhưng trong mô hình cơ sở dữ liệu của chúng tôi, trường id_author là khóa ngoại, tức là. nó chỉ có thể có các giá trị nằm trong trường id_user của bảng người dùng. Để chỉ ra điều này trong SQL có một từ khóa KHÓA NGOÀI(), có cú pháp sau:

KHÓA NGOÀI (column_name_which_is_forign_key) TÀI LIỆU THAM KHẢO parent_table_name (parent_column_name);

Hãy chỉ ra rằng id_author là khóa ngoại:

Id_topic int (10) AUTO_INCREMENT
topic_name varchar(100) KHÔNG NULL
id_author int (10) KHÔNG NULL
KHÓA CHÍNH (id_topic)
KHÓA NGOÀI (id_author) THAM KHẢO người dùng (id_user)

Bảng đã sẵn sàng và phiên bản cuối cùng của nó trông như thế này:

Tạo chủ đề bảng (
id_topic int (10) AUTO_INCREMENT,
topic_name varchar(100) KHÔNG NULL,

KHÓA CHÍNH (id_topic),
KHÓA NGOÀI (id_author) THAM KHẢO người dùng (id_user)
);

Bảng cuối cùng còn lại là bài viết. Mọi thứ đều tương tự ở đây, chỉ có hai khóa ngoại:

Tạo bài viết trong bảng (
id_post int (10) AUTO_INCREMENT,
văn bản tin nhắn KHÔNG NULL,
id_author int (10) KHÔNG NULL,
id_topic int (10) KHÔNG NULL,
KHÓA CHÍNH (id_post),
KHÓA NGOÀI (id_author) THAM KHẢO người dùng (id_user),
KHÓA NGOẠI TỆ (id_topic) TÀI LIỆU THAM KHẢO chủ đề (id_topic)
);

Xin lưu ý rằng một bảng có thể có nhiều khóa ngoại, nhưng trong MySQL chỉ có thể có một khóa chính. Trong bài học đầu tiên chúng ta đã xóa cơ sở dữ liệu diễn đàn, đã đến lúc tạo lại nó.

Hãy khởi động máy chủ MySQL(Bắt đầu - Chương trình - MySQL - My Máy chủ SQL 5.1 - Lệnh MySQL Line Client), nhập mật khẩu, tạo diễn đàn cơ sở dữ liệu (tạo diễn đàn cơ sở dữ liệu;), chọn nó để sử dụng (sử dụng diễn đàn;) và tạo ba bảng của chúng tôi:

Xin lưu ý rằng một lệnh có thể được viết trên nhiều dòng bằng phím Enter (MySQL tự động thay thế ký hiệu dòng mới->) và chỉ sau khi nhấn dấu phân cách (dấu chấm phẩy) Nhập phím dẫn đến yêu cầu được thực thi.

Hãy nhớ rằng, nếu bạn làm sai điều gì đó, bạn luôn có thể xóa một bảng hoặc toàn bộ cơ sở dữ liệu bằng câu lệnh DROP. Sửa chữa một cái gì đó trong dòng lệnh cực kỳ bất tiện, vì vậy đôi khi (đặc biệt là ở giai đoạn đầu), việc viết truy vấn trong một số trình soạn thảo, chẳng hạn như Notepad, sau đó sao chép và dán chúng vào một cửa sổ đen sẽ dễ dàng hơn.

Vì vậy, các bảng đã được tạo, để đảm bảo điều này, chúng ta hãy nhớ đến nhóm hiển thị bảng:

Và cuối cùng, hãy xem cấu trúc của bảng bài viết cuối cùng của chúng ta:

Bây giờ ý nghĩa của tất cả các trường của cấu trúc đã trở nên rõ ràng, ngoại trừ trường DEFAULT. Đây là trường giá trị mặc định. Chúng ta có thể chỉ định giá trị mặc định cho một số cột (hoặc tất cả). Ví dụ: nếu chúng ta có một trường có tên "Đã kết hôn" và nhập ENUM ("có", "không") thì sẽ hợp lý nếu đặt một trong các giá trị làm giá trị mặc định. Cú pháp sẽ là:

Enum đã kết hôn ("có", "không") KHÔNG mặc định NULL ("có")

Những thứ kia. từ khóa này được viết với khoảng trắng sau loại dữ liệu và giá trị mặc định được chỉ định trong dấu ngoặc đơn.

Nhưng hãy quay lại bàn của chúng ta. Bây giờ chúng ta cần nhập dữ liệu vào bảng của mình. Trên các trang web, bạn thường nhập thông tin vào một số biểu mẫu html, sau đó một tập lệnh bằng một số ngôn ngữ (php, java...) sẽ trích xuất dữ liệu này từ biểu mẫu và nhập vào cơ sở dữ liệu. Anh ta thực hiện điều này thông qua truy vấn SQL để nhập dữ liệu vào cơ sở dữ liệu. Chúng ta chưa biết cách viết tập lệnh bằng PHP, nhưng bây giờ chúng ta sẽ học cách gửi truy vấn SQL để nhập dữ liệu.

Với mục đích này, toán tử được sử dụng CHÈN. Có hai loại cú pháp bạn có thể sử dụng. Tùy chọn đầu tiên được sử dụng để nhập dữ liệu vào tất cả các trường của bảng:

XÁC NHẬN VÀO tên_bảng GIÁ TRỊ ("first_column_value",,"second_column_value", ..., "last_column_value");


Hãy thử thêm các giá trị sau vào bảng người dùng của chúng tôi:

CHÈN VÀO GIÁ TRỊ của người dùng ("1","sergey", " [email được bảo vệ]", "1111");

Tùy chọn thứ hai được sử dụng để nhập dữ liệu vào một số trường của bảng:

XÁC NHẬN VÀO tên_bảng ("cột_name", "tên_cột") GIÁ TRỊ ("cột_value đầu tiên",,"cột_value thứ hai");


Trong bảng người dùng của chúng tôi, tất cả các trường đều bắt buộc, nhưng trường đầu tiên của chúng tôi có từ khóa AUTO_INCREMENT (tức là nó được điền tự động), vì vậy chúng tôi có thể bỏ qua cột này:

XÁC NHẬN VÀO người dùng (tên, email, mật khẩu) GIÁ TRỊ ("valera", " [email được bảo vệ]", "2222");

Nếu chúng ta có các trường có loại NULL, tức là tùy chọn, chúng ta cũng có thể bỏ qua chúng. Nhưng nếu bạn cố gắng để trống trường có giá trị NOT NULL, máy chủ sẽ hiển thị thông báo lỗi và sẽ không hoàn thành yêu cầu. Ngoài ra, khi nhập dữ liệu, máy chủ sẽ kiểm tra mối quan hệ giữa các bảng. Do đó, bạn sẽ không thể thêm giá trị vào trường là khóa ngoại không tồn tại trong bảng liên quan. Bạn sẽ xác minh điều này bằng cách nhập dữ liệu vào hai bảng còn lại.

Nhưng trước tiên, hãy thêm thông tin về một vài người dùng nữa. Để thêm nhiều dòng cùng một lúc, bạn chỉ cần liệt kê các dấu ngoặc đơn có các giá trị cách nhau bằng dấu phẩy:

Bây giờ chúng ta hãy nhập dữ liệu vào bảng thứ hai - chủ đề. Mọi thứ đều giống nhau, nhưng chúng ta phải nhớ rằng các giá trị trong trường id_author phải có trong bảng người dùng:

Bây giờ, hãy thử thêm một chủ đề khác, nhưng với id_author, chủ đề này không có trong bảng người dùng (vì chúng tôi chỉ thêm 5 người dùng vào bảng người dùng nên id=6 không tồn tại):

Máy chủ báo lỗi và nói rằng nó không thể nhập dòng như vậy bởi vì trường là khóa ngoại chứa giá trị không có trong bảng người dùng liên quan.

Bây giờ, hãy thêm một vài hàng vào bảng bài viết, hãy nhớ rằng chúng ta có 2 khóa ngoại trong đó, tức là. id_author và id_topic mà chúng ta sẽ nhập phải có trong các bảng được liên kết với chúng:

Vậy là chúng ta có 3 bảng chứa dữ liệu. Câu hỏi đặt ra - làm thế nào để xem dữ liệu nào được lưu trữ trong các bảng. Đây là những gì chúng ta sẽ làm trong bài học tiếp theo.

Cho đến thời điểm này, chúng tôi đã truy vấn các bảng dữ liệu và thực thi các lệnh để truy xuất dữ liệu đó, giả sử rằng những bảng đó đã được ai đó tạo trước chúng tôi. Đây thực sự là tình huống thực tế nhất khi Không một số lượng lớn mọi người tạo các bảng sau đó được người khác sử dụng. Mục tiêu của chúng tôi trước tiên là cung cấp thông tin rộng rãi hơn và sau đó chuyển sang các vấn đề cụ thể hơn.

Trong chương này, chúng ta sẽ thảo luận về việc tạo, sửa đổi và xóa bảng. Tất cả điều này áp dụng cho chính các bảng chứ không áp dụng cho dữ liệu chứa trong đó. Cho dù bạn có tự mình thực hiện các thao tác này hay không thì việc hiểu khái niệm về chúng sẽ nâng cao hiểu biết của bạn về ngôn ngữ SQL và bản chất của các bảng bạn sử dụng. Chương này giới thiệu cho chúng ta một khu vực của SQL gọi là DDL (Ngôn ngữ định nghĩa dữ liệu), nơi các đối tượng được tạo. dữ liệu SQL.

Chương này cũng sẽ trình bày một loại đối tượng dữ liệu SQL khác - Index. Các chỉ mục được sử dụng để giúp tìm kiếm hiệu quả hơn và đôi khi làm cho các giá trị khác nhau. Chúng thường hoạt động mà bạn không nhận thấy, nhưng nếu bạn cố gắng đặt các giá trị vào một bảng và chúng bị từ chối vì chúng không phải là duy nhất, điều đó có nghĩa là một hàng khác có cùng giá trị cho trường đó và trường đó có chỉ mục duy nhất hoặc một ràng buộc quyết định tính duy nhất của nó. Thảo luận về những điều trên sẽ tiếp tục trong Chương 18.

LỆNH TẠO BẢNG

Các bảng được tạo bằng lệnh CREATE TABLE. Lệnh này tạo một bảng trống - một bảng không có hàng. Các giá trị được nhập bằng lệnh DML INSERT (Xem Chương 15). Lệnh CREATE TABLE về cơ bản xác định các bảng bằng cách mô tả một tập hợp các tên cột được chỉ định theo một thứ tự cụ thể. Nó cũng xác định kiểu dữ liệu và kích thước cột. Mỗi bảng phải có ít nhất một cột.

Cú pháp lệnh CREATE TABLE: CREATE TABLE ( [()], [()] ...); Như đã thảo luận trong Chương 2, các kiểu dữ liệu khác nhau đáng kể giữa các chương trình. Để tương thích với tiêu chuẩn, ít nhất chúng phải hỗ trợ tiêu chuẩn loại ANSI. Nó được mô tả trong Phụ lục B.

Vì khoảng trống được dùng để ngăn cách các phần Lệnh SQL, chúng không thể là một phần của tên bảng (hoặc bất kỳ đối tượng nào khác chẳng hạn như chỉ mục). Dấu gạch dưới (_) thường được sử dụng để phân tách các từ trong tên bảng.

Ý nghĩa của đối số kích thước phụ thuộc vào kiểu dữ liệu. Nếu bạn không chỉ định nó, hệ thống của bạn sẽ tự động gán giá trị. Vì Giá trị kiểu số, Cái này - lối thoát tốt nhất bởi vì trong trường hợp này, tất cả các tầng loại này của bạn sẽ có cùng kích thước, điều này giúp bạn thoát khỏi các vấn đề về khả năng tương thích chung của chúng (xem Chương 14). Ngoài ra, việc sử dụng đối số kích thước với một số bộ số không hẳn là một vấn đề đơn giản. Nếu bạn cần lưu trữ số lượng lớn, chắc chắn bạn sẽ cần đảm bảo rằng sàn đủ rộng để chứa chúng.

Một loại dữ liệu mà về cơ bản bạn nên gán kích thước cho là CHAR. Đối số kích thước là một số nguyên chỉ định số lượng ký tự tối đa mà trường có thể chứa. Trên thực tế, số lượng ký tự trong trường có thể từ 0 (nếu trường là NULL) đến số này. Theo mặc định, đối số kích thước là 1, có nghĩa là trường chỉ có thể chứa một chữ cái. Tất nhiên đây không phải là điều bạn mong muốn.

Các bảng thuộc về người dùng đã tạo ra chúng và tên của tất cả các bảng thuộc về tới người dùng này phải khác nhau cũng như tên của tất cả các cột trong một bảng nhất định. Bảng riêng biệt co thể sử dụng cùng tên các cột, ngay cả khi chúng thuộc về cùng một người dùng. Một ví dụ về điều này là cột thành phố trong bảng Khách hàng và trong bảng Người bán. Người dùng không phải là chủ sở hữu bảng có thể tham khảo các bảng này bằng cách sử dụng tên chủ sở hữu bảng theo sau là dấu chấm; ví dụ: bảng Nhân viên do Smith tạo sẽ được gọi là Smith.Employees khi được một số người dùng khác nhắc đến (chúng tôi hiểu rằng Smith là Mã định danh quyền (ID) được người dùng báo cáo (ID đã giải quyết của bạn là tên của bạn trong SQL. Kết quả này được thảo luận trong Chương 2 và sẽ được tiếp tục trong Chương 22).

Lệnh này sẽ tạo bảng Nhân viên bán hàng: TẠO BẢNG Nhân viên bán hàng (snum integer, sname char (10), city char (10), comm declmal); Thứ tự của các cột trong bảng được xác định theo thứ tự chúng được liệt kê. Cột không được phân tách bằng dấu ngắt dòng (để dễ đọc) mà được phân tách bằng dấu phẩy.

CHỈ SỐ

Chỉ mục là danh sách các cột hoặc nhóm cột được sắp xếp theo thứ tự (chữ cái hoặc số) trong một bảng. Các bảng có thể có một số lượng lớn các hàng và vì các hàng này không nằm trong bất kỳ theo một thứ tự nhất định, việc tìm kiếm chúng bằng giá trị được chỉ định có thể mất thời gian. Địa chỉ chỉ mục vừa là mối quan tâm, vừa cung cấp cách nhóm tất cả các giá trị thành các nhóm của một hoặc nhiều chuỗi khác nhau. Trong Chương 18, chúng tôi sẽ mô tả một cách trực tiếp hơn để buộc các giá trị của bạn phải là duy nhất. Nhưng phương pháp này không tồn tại sớm Phiên bản SQL. Vì tính duy nhất thường là cần thiết nên các chỉ mục được sử dụng cho mục đích này.

Chỉ mục là một công cụ SQL do chính thị trường sinh ra chứ không phải ANSI. Do đó, bản thân tiêu chuẩn ANSI hiện không hỗ trợ các chỉ mục, mặc dù chúng rất hữu ích và được sử dụng rộng rãi.

Khi bạn tạo chỉ mục trên một trường, cơ sở dữ liệu của bạn sẽ ghi nhớ thứ tự tương ứng của tất cả các giá trị của trường đó trong một vùng bộ nhớ. Giả sử rằng bảng Khách hàng của chúng tôi có hàng nghìn mục nhập và bạn muốn tìm một khách hàng có số = 2999. Vì các hàng không được sắp xếp nên chương trình của bạn sẽ duyệt toàn bộ bảng, từng hàng, kiểm tra mỗi lần giá trị của trường cnum bằng giá trị 2999. Tuy nhiên, nếu có một chỉ mục trên trường cnum thì chương trình có thể tiếp cận số 2999 trực tiếp từ chỉ mục và cung cấp thông tin về cách tìm đúng hàng trong bảng.

Mặc dù chỉ mục cải thiện đáng kể hiệu quả truy vấn, nhưng việc sử dụng chỉ mục sẽ khiến các hoạt động sửa đổi DML (chẳng hạn như CHÈN và XÓA) hơi chậm hơn và bản thân chỉ mục đó chiếm nhiều bộ nhớ. Vì vậy, mỗi khi tạo bảng bạn phải đưa ra quyết định có lập chỉ mục cho bảng đó hay không. Các chỉ mục có thể bao gồm nhiều trường. Nếu có nhiều hơn một trường được chỉ định cho cùng một chỉ mục, trường thứ hai sẽ được sắp xếp trong trường thứ nhất, trường thứ ba trong chỉ mục thứ hai, v.v. Nếu bạn có họ và tên ở hai trường khác nhau trong một bảng, bạn có thể tạo chỉ mục để sắp xếp trường trước đó trong trường tiếp theo. Điều này có thể được thực hiện bất kể các cột trong bảng được sắp xếp như thế nào.

Cú pháp tạo chỉ mục thường như sau (hãy nhớ rằng đây không phải là tiêu chuẩn ANSI): TẠO CHỈ SỐ TRÊN

( [,]...); Tất nhiên, bảng phải được tạo sẵn và phải chứa các cột. Chỉ mục này không thể được sử dụng cho bất kỳ mục đích nào khác trong cơ sở dữ liệu (bởi bất kỳ người dùng nào). Sau khi tạo, chỉ mục sẽ ẩn đối với người dùng. Bản thân SQL quyết định khi nào cần tham chiếu đến nó và thực hiện nó một cách tự động. Ví dụ: nếu bảng Khách hàng là bảng được tham chiếu thường xuyên nhất trong các truy vấn của nhân viên bán hàng đối với nhóm khách hàng của chính họ thì việc tạo một chỉ mục như vậy trên trường snum của bảng Khách hàng là phù hợp. TẠO CHỈ SỐ Nhóm khách hàng TRÊN Khách hàng (snum); Giờ đây, người bán có liên quan đến bảng này sẽ có thể tìm được nhóm khách hàng của riêng mình rất nhanh chóng.

ĐỘC ĐÁO CỦA CHỈ SỐ

May mắn thay, chỉ mục trong ví dụ trước không bắt buộc phải là duy nhất, mặc dù quan sát của chúng tôi rằng đây là một trong những mục đích của chỉ mục. Một người bán nhất định có thể có bất kỳ số lượng khách hàng nào. Tuy nhiên, điều này sẽ không xảy ra nếu chúng ta sử dụng từ khóa UNIQUE trước từ khóa INDEX. Trường cnum, với tư cách là khóa chính, sẽ là ứng cử viên đầu tiên cho một chỉ mục duy nhất: TẠO CHỈ SỐ ĐỘC ĐÁO Giám sát khách hàng (cnum); LƯU Ý: lệnh này sẽ bị từ chối nếu đã có các giá trị giống hệt nhau trong trường cnum. Cách tốt nhất xử lý các chỉ mục là tạo chúng ngay sau khi bảng được tạo và trước khi bất kỳ giá trị nào được nhập. Cũng lưu ý rằng, đối với một chỉ mục duy nhất có nhiều giới tính, đó là sự kết hợp của các giá trị, mỗi giá trị có thể không phải là duy nhất.

Ví dụ trước là một cách gián tiếp để làm cho trường cnum đóng vai trò là khóa chính của bảng Khách hàng. Cơ sở dữ liệu hoạt động trên các khóa chính và các khóa khác một cách trực tiếp hơn. Chúng ta sẽ thảo luận sâu hơn về phát hiện này trong Chương 18 và .

XÓA CHỈ SỐ

Thuộc tính chính của một chỉ mục là nó được đặt tên - vì vậy nó có thể bị xóa. Thông thường, người dùng không biết đến sự tồn tại của chỉ mục. SQL tự động xác định xem người dùng có được phép sử dụng chỉ mục hay không và nếu có thì cho phép sử dụng chỉ mục đó. Tuy nhiên, nếu bạn muốn xóa một chỉ mục thì bạn phải biết nó. Cú pháp này được sử dụng để loại bỏ một chỉ mục: DROP INDEX ; Việc xóa chỉ mục không ảnh hưởng đến nội dung của các trường.

THAY ĐỔI BẢNG SAU KHI ĐƯỢC TẠO

Lệnh ALTER TABLE không phải là một phần của tiêu chuẩn ANSI; nhưng nó là một hình thức có thể truy cập rộng rãi và khá có ý nghĩa, mặc dù khả năng của nó có phần hạn chế. Nó được sử dụng để thay đổi định nghĩa của một bảng hiện có. Thông thường, nó thêm các cột vào một bảng. Đôi khi nó có thể xóa hoặc thay đổi kích thước các cột và trong một số chương trình, thêm hoặc xóa các ràng buộc (được thảo luận trong Chương 18). Cú pháp điển hình để thêm một cột vào bảng là: ALTER TABLE
THÊM VÀO ; Cột sẽ được thêm giá trị NULL cho tất cả các hàng trong bảng. Cột mới sẽ trở thành cột cuối cùng trong bảng. Trên thực tế, bạn có thể thêm nhiều cột mới cùng một lúc, được phân tách bằng dấu phẩy, trong một lệnh. Có thể xóa hoặc thay đổi cột. Thông thường, việc thay đổi một cột có thể chỉ đơn giản là tăng kích thước của nó hoặc thêm/xóa một ràng buộc. Hệ thống của bạn phải đảm bảo rằng mọi thay đổi không xung đột với dữ liệu hiện có - ví dụ: nếu bạn cố gắng thêm một ràng buộc vào một cột đã có giá trị, nếu vi phạm, ràng buộc đó sẽ bị từ chối. Tốt nhất nên kiểm tra lại điều này. Ít nhất, hãy kiểm tra tài liệu hệ thống của bạn để xem liệu nó có đảm bảo rằng đây là nguyên nhân hay không. Do tính chất không chuẩn của lệnh ALTER TABLE, bạn vẫn cần xem phần tài liệu hệ thống nói về các trường hợp đặc biệt.

ALTER TABLE - không có tác dụng khi bảng phải được xác định lại, nhưng bạn nên thiết kế cơ sở dữ liệu của mình để tránh phụ thuộc quá nhiều vào nó nếu có thể. Việc thay đổi cấu trúc của một bảng khi nó đã được sử dụng là rất nguy hiểm! Hãy xem xét kỹ các bảng, là bảng phụ với dữ liệu được trích xuất từ ​​bảng khác (xem Chương 20), không hoạt động chính xác trong một thời gian dài và các chương trình sử dụng SQL lồng nhau (Chương 25) không thực thi chính xác hoặc không phải lúc nào cũng đúng. Ngoài ra, thay đổi có thể xóa tất cả người dùng có quyền truy cập vào bảng. Vì những lý do này, bạn nên thiết kế các bảng của mình để chỉ sử dụng ALTER TABLE như là phương sách cuối cùng.

Nếu hệ thống của bạn không hỗ trợ ALTER TABLE hoặc nếu bạn muốn tránh sử dụng nó, bạn chỉ cần tạo bảng mới, Với sự thay đổi cần thiết khi tạo và sử dụng lệnh INSERT với truy vấn SELECT * để ghi lại dữ liệu từ bảng cũ vào đó. Người dùng đã được cấp quyền truy cập vào bảng cũ (xem Chương 22) phải được cấp quyền truy cập vào bảng mới.

XÓA BẢNG

Bạn phải là chủ sở hữu (tức là người tạo) của bảng thì mới có thể xóa nó. Vì vậy, đừng lo lắng về việc vô tình phá hủy dữ liệu của bạn, trước tiên SQL sẽ yêu cầu bạn dọn sạch bảng trước khi xóa nó khỏi cơ sở dữ liệu. Không thể xóa một bảng có các hàng trong đó. Tham khảo Chương 15 để biết chi tiết về cách xóa hàng khỏi bảng. Cú pháp để loại bỏ bảng của bạn, tất nhiên là giả sử nó trống, như sau: DROP TABLE< table name >; Khi lệnh này được đưa ra, bảng không còn được nó nhận dạng nữa và không có lệnh nào có thể được trao cho đối tượng này. Bạn phải đảm bảo rằng bảng này không được tham chiếu bởi khóa ngoại đến bảng khác (Khóa ngoại được thảo luận trong Chương 19) và nó không được sử dụng trong định nghĩa của Chế độ xem (Chương 20).

Lệnh này thực tế không phải là một phần của tiêu chuẩn ANSI nhưng nhìn chung nó được hỗ trợ và hữu ích. May mắn thay, nó đơn giản hơn và do đó nhất quán hơn ALTER TABLE. Đơn giản là ANSI không có cách nào để phát hiện các bảng bị hỏng hoặc không hợp lệ.

BẢN TÓM TẮT

Bây giờ bạn đã thông thạo những kiến ​​thức cơ bản về định nghĩa dữ liệu. Bạn có thể tạo, sửa đổi và xóa bảng. Mặc dù chỉ có hàm đầu tiên trong số này là một phần của tiêu chuẩn SQL chính thức, nhưng các hàm khác sẽ thay đổi theo thời gian, đặc biệt là ALTER TABLE. DROP TABLE cho phép bạn loại bỏ các bảng vô dụng. Cô ấy chỉ phá hủy bàn trống và do đó không phá hủy dữ liệu.

Bây giờ bạn đã biết về chỉ mục cũng như cách tạo và xóa chúng. SQL không cung cấp cho bạn nhiều quyền kiểm soát đối với những điều này, vì việc triển khai bạn sử dụng thực hiện khá tốt việc xác định tốc độ thực thi các lệnh khác nhau. Chỉ mục là một trong những công cụ cung cấp cho bạn khả năng ảnh hưởng trực tiếp đến hiệu quả của các lệnh SQL. Chúng ta đã thảo luận về các chỉ số ở đây để phân biệt chúng với các ràng buộc mà chúng ta không nên nhầm lẫn với chúng. Các ràng buộc là chủ đề của Chương 18 và Chương 19.

LÀM VIỆC VỚI SQL

1. Viết câu lệnh CREATE TABLE để hiển thị bảng Khách hàng của chúng ta.

2. Viết lệnh cho phép người dùng truy xuất nhanh các đơn hàng được nhóm theo ngày từ bảng Đơn hàng.

3. Nếu bảng Order đã được tạo rồi, làm cách nào bạn có thể buộc trường onum là duy nhất (giả sử rằng tất cả các giá trị hiện tại là duy nhất)?

4. Tạo một chỉ mục cho phép mỗi người bán nhanh chóng tìm thấy các đơn hàng của mình được nhóm theo ngày.

5. Giả sử rằng mỗi người bán chỉ có một khách hàng có xếp hạng nhất định, hãy nhập lệnh sẽ truy xuất xếp hạng đó.

Giới thiệu

Hãy tiếp tục học truy vấn SQL ov vào cơ sở dữ liệu. Ngày nay, một trong những truy vấn SQL đơn giản là truy vấn SQL để tạo bảng cơ sở dữ liệu. Truy vấn chạy dựa trên câu lệnh CREATE TABLE.

Tạo bảng cơ sở dữ liệu

Có một câu lệnh sql được sử dụng để tạo các bảng cơ sở dữ liệu. Tuyên bố: TẠO BẢNG.

Hãy nhớ rằng một bảng cơ sở dữ liệu quan hệ phải có duy nhất:

  • Tên duy nhất;
  • Cột (thuộc tính);
  • Khóa chính.
  • Hàng (bản ghi);

Để bắt đầu, chúng tôi chỉ tạo một bảng và không điền dữ liệu vào bảng.

Theo một cách tốt, hình thức chung bảng với tên độc đáo hàng và cột được chỉ định trong quá trình tạo. Ví dụ: chúng ta sẽ tạo một bảng cơ sở dữ liệu đơn giản và thực hiện mà không cần mô hình khái niệm.

Trong bài viết này chúng ta sẽ tạo một bảng cơ sở dữ liệu với khách hàng. Người mua được lấy làm ví dụ.

Người mua được xác định như thế nào? Chúng tôi quyết định rằng mỗi khách hàng được xác định bởi dữ liệu sau:

  • Họ;
  • Đăng nhập;
  • Mật khẩu;
  • E-mail;
  • Điện thoại.

Hãy nhớ rằng trong bảng bạn phải chỉ định .

Để tạo một bảng cơ sở dữ liệu, chúng ta sử dụng câu lệnh sql CREATE TABLE.

Cú pháp toán tử là:

TẠO BẢNG tên bảng (cột 1, tùy chọn cột loại cột (dấu cách) (dấu cách), cột 2, tùy chọn cột loại cột (dấu cách) (dấu cách), cột 3, tùy chọn cột loại cột (dấu cách) (dấu cách), v.v.)

Trong phiên bản của chúng tôi, tên bảng là: client. Chúng tôi cung cấp các chỉ định cột dữ liệu khách hàng:

  • Tên: đặt là client_customer;
  • Họ: client_subclient;
  • Đăng nhập: client_login;
  • Mật khẩu: client_password;
  • email: client_mail;
  • Điện thoại: client_telefon.

Chúng tôi nghĩ về loại dữ liệu nào sẽ được lưu trữ trong các cột này và chọn loại dữ liệu CHAR (độ dài trường không đổi) hoặc VARCHAR (độ dài trường có thể thay đổi). Trong trường hợp của chúng tôi, kiểu dữ liệu VARCHAR là phù hợp.

Chúng tôi đặc biệt chú ý đến khóa chính. Hãy đặt id của người mua làm khóa chính. Trong các tham số chính, chúng tôi chỉ định rằng đây là khóa chính, nó không thể bằng 0 và đối với bản ghi tiếp theo, nó được tăng thêm một. Thuộc tính cuối cùng được gọi là autoincrement. Chúng ta xem gợi ý trong sách tham khảo (liên kết ở trên) và nhận được một cột có khóa chính:

Số nguyên client_id không phải null khóa chính auto_increment

Viết truy vấn SQL để tạo bảng cơ sở dữ liệu

Chúng tôi tổng hợp tất cả dữ liệu nguồn và nhận được truy vấn SQL sau:

/*Khách hàng bảng người dùng*/ tạo khách hàng bảng (/*client_id sẽ là khóa chính (nhất thiết phải là số nguyên) với mức tăng tự động (+1), điều này sẽ không bao giờ bằng 0*/ số nguyên client_id không phải null khóa chính auto_increment, client_customer varchar(13), /*name */ client_surclient varchar(22), /*họ */ client_login varchar(21), /*login*/ client_passwd varchar(7), / *password*/ client_email varchar(44) /*email*/ client_telefon varchar(26) /*telephone*/);

Ghi chú: Chúng tôi tạo một truy vấn SQL để tạo một bảng trong soạn thảo văn bản như Notepad++. Trong ngoặc đơn, chúng tôi giới hạn độ dài của trường, nó có thể từ 1 đến 255.

Tóm tắt bài viết

  • Trong bài viết này chúng ta đã gặp lần đầu tiên Câu lệnh sql TẠO ngôn ngữ BẢNG
  • Chúng tôi đã tạo một truy vấn SQL để tạo một bảng cơ sở dữ liệu (đầu tiên) có khóa chính.

Đối với điều này bạn sẽ cần hệ thống được cài đặt quản lý cơ sở dữ liệu (DBMS) DB2. Chúng tôi sẽ sử dụng phương ngữ của ngôn ngữ SQL được sử dụng trong DBMS cụ thể này.

Lệnh đầu tiên chúng ta sẽ sử dụng để tạo cơ sở dữ liệu là lệnh CREATE DATABASE. Cú pháp của nó như sau:

TẠO BẢNG TABLE_NAME (kiểu dữ liệu first_column_name, ..., kiểu dữ liệu Last_column_name, khóa chính, các ràng buộc (tùy chọn))

Vì cơ sở dữ liệu của chúng tôi mô hình hóa một mạng lưới các hiệu thuốc nên nó chứa các thực thể như “Dược phẩm” (bảng Dược phẩm trong ví dụ tạo cơ sở dữ liệu của chúng tôi), “Thuốc” (bảng Chuẩn bị trong ví dụ tạo cơ sở dữ liệu của chúng tôi), “Tính sẵn có (của thuốc trong hiệu thuốc)" (Bảng sẵn có trong ví dụ tạo cơ sở dữ liệu của chúng tôi), "Khách hàng" (bảng Khách hàng trong ví dụ tạo cơ sở dữ liệu của chúng tôi) và các bảng khác mà chúng tôi sẽ phân tích chi tiết tại đây.

Có thể có nhiều bài viết dành cho việc phát triển mô hình mối quan hệ thực thể, nhưng nếu chúng ta chủ yếu quan tâm đến các lệnh SQL để tạo cơ sở dữ liệu và các bảng trong đó, thì chúng ta sẽ đồng ý giả định rằng các kết nối giữa các thực thể đã rõ ràng đối với chúng ta. Hình bên dưới thể hiện mô hình cơ sở dữ liệu của chúng tôi với các thuộc tính của các thực thể (bảng) và mối quan hệ giữa các bảng.

Để phóng to hình ảnh, bạn có thể nhấp vào nó bằng nút chuột trái.

Như đã đề cập, ví dụ tạo cơ sở dữ liệu được thảo luận ở đây sử dụng một biến thể của ngôn ngữ SQL được sử dụng trong hệ thống quản lý cơ sở dữ liệu DB2 (DBMS). Nó không phân biệt chữ hoa chữ thường, nghĩa là không quan trọng các lệnh và các từ riêng lẻ trong đó được gõ bằng chữ thường hay chữ hoa. Để minh họa tính năng này, các lệnh được đưa ra mà không có hệ thống đặc biệt, được gõ bằng chữ thường và chữ in hoa.

Bây giờ hãy bắt đầu tạo nhóm. Lệnh SQL đầu tiên của chúng tôi tạo cơ sở dữ liệu PHARMNETWORK:

Mã SQL

TẠO CƠ SỞ DỮ LIỆU PHARMNETWORK

Mô tả bảng DƯỢC PHẨM:

Chúng ta viết lệnh tạo bảng PHARMACY (Dược phẩm), các giá trị của khóa chính PH_ID được tạo tự động từ 1 với bước 1, thực hiện kiểm tra để đảm bảo rằng các giá trị của thuộc tính Địa chỉ trong bảng này bảng là duy nhất:

Mã SQL

TẠO BẢNG PHARMACY(PH_ID smallint KHÔNG NULL ĐƯỢC TẠO LUÔN NHƯ IDENTITY (BẮT ĐẦU VỚI 1, TĂNG THEO 1), Địa chỉ varchar(40) NOT NULL, PRIMARY KEY(PH_ID), CONSTRAINT PH_UNIQ UNIQUE(Address))

Mô tả bảng GROUP:

Chúng ta viết lệnh tạo bảng Group (Nhóm thuốc), các giá trị của khóa chính GR_ID được tạo tự động từ 1 với bước 1, tính duy nhất của tên nhóm được kiểm tra (từ khóa CONSTRAINT được sử dụng cho cái này):

Mã SQL

TẠO NHÓM BẢNG (GR_ID smallint KHÔNG PHẢI NULL ĐƯỢC TẠO LUÔN NHƯ SẮC DANH (BẮT ĐẦU VỚI 1, TĂNG TĂNG BẰNG 1), Tên varchar(40) KHÔNG NULL, PRIMARY KEY(GR_ID), CONSTRAINT GR_UNIQ UNIQUE(Name))

Mô tả bảng CHUẨN BỊ:

Lệnh tạo bảng PREPARATION, các giá trị khóa chính PR_ID được tạo tự động từ 1 với gia số là 1, xác định rằng các giá trị khóa ngoài GR_ID (Nhóm thuốc) không thể chấp nhận Giá trị rỗng, việc kiểm tra tính duy nhất của các giá trị thuộc tính Tên được xác định:

Mã SQL

TẠO BẢN CHUẨN BỊ (PR_ID smallint KHÔNG NULL ĐƯỢC TẠO LUÔN NHƯ SẮC ĐẶT (BẮT ĐẦU VỚI 1, TĂNG THEO 1), Tên varchar(40) KHÔNG NULL, GR_ID int KHÔNG NULL, PRIMARY KEY(PR_ID), ràng buộc PR_UNIQ UNIQUE(Name))

Tiếp theo chúng ta cần quan tâm đến các ràng buộc về tính toàn vẹn. Điều này rất thuận tiện để thực hiện bằng cách sử dụng lệnh bảng thay đổi. Lệnh này được dạy trong lớp BẢNG ALTER SQL - thay đổi bảng cơ sở dữ liệu.

Bây giờ là lúc tạo bảng SẴN SÀNG (Tính sẵn có hoặc Tính sẵn có của thuốc trong hiệu thuốc). Mô tả của cô ấy:

Chúng ta viết lệnh tạo bảng AVAILABILITY. Ngày bắt đầu (không thể là NULL) và ngày kết thúc (mặc định là NULL) được chỉ định.

Mã SQL

TẠO BẢNG SẴN SÀNG (A_ID smallint KHÔNG NULL ĐƯỢC TẠO LUÔN NHƯ SẮC ĐẶT (BẮT ĐẦU VỚI 1, TĂNG TĂNG BẰNG 1), PH_ID INT KHÔNG NULL, PR_ID INT KHÔNG NULL, DateStart varchar(20) KHÔNG NULL, DateEnd varchar(20) DEFAULT NULL, SỐ LƯỢNG INT KHÔNG phải NULL, MART varchar(3) MẶC ĐỊNH NULL, KHÓA CHÍNH(A_ID), CONSTRAINT AVA_UNIQ UNIQUE(PH_ID, PR_ID))

Chúng ta tạo một bảng THIẾU (Thiếu thuốc ở hiệu thuốc, tức là yêu cầu không được đáp ứng). Mô tả của cô ấy:

Chúng tôi viết lệnh tạo bảng DEFICIT:

Mã SQL

TẠO DEFICIT BẢNG (D_ID smallint KHÔNG NULL ĐƯỢC TẠO LUÔN LÀ NHẬN DẠNG (BẮT ĐẦU VỚI 1, TĂNG TĂNG BẰNG 1), PH_ID INT KHÔNG NULL, PR_ID INT KHÔNG NULL, Giải pháp varchar(40) KHÔNG NULL, DateStart varchar(20) KHÔNG NULL, DateEnd varchar (20) GIÁ TRỊ MẶC ĐỊNH)

Còn lại một chút. Chúng ta đã đạt được lệnh tạo bảng Nhân viên. Mô tả của cô ấy:

Chúng tôi viết lệnh tạo bảng Nhân viên, với khóa chính được tạo theo các quy tắc giống như khóa chính của các bảng trước đó mà chúng tồn tại. Khóa ngoại PH_ID Nhân viên được liên kết với PHARMACY (Pharmacy):

Mã SQL

TẠO BẢNG NHÂN VIÊN(E_ID smallint KHÔNG NULL ĐƯỢC TẠO LUÔN NHƯ SẮC ĐẶT (BẮT ĐẦU VỚI 1, TĂNG TÊN 1), F_Name varchar(40) NOT NULL, L_Name varchar(40) NOT NULL, POST varchar(40) NOT NULL, PH_ID INT NOT NULL , KHÓA CHÍNH(E_ID))

Đến lượt đã tạo xong bảng CLIENT. Mô tả của cô ấy:

Chúng tôi viết lệnh tạo bảng CLIENT (Máy khách), cho khóa chính mà mô tả trước đó là đúng. Điểm đặc biệt của bảng này là thuộc tính F_Name và L_Name của nó có giá trị mặc định là NULL. Điều này là do thực tế là khách hàng có thể được đăng ký hoặc chưa đăng ký. bạn giá trị mới nhất họ và tên sẽ không được xác định (nghĩa là NULL):

Mã SQL

TẠO BẢNG KHÁCH HÀNG (C_ID smallint KHÔNG NULL ĐƯỢC TẠO LUÔN NHƯ SẮC ĐẶT (BẮT ĐẦU VỚI 1, TĂNG THEO 1), FName varchar(40) NULL MẶC ĐỊNH, LName varchar(40) NULL MẶC ĐỊNH, DateReg varchar(20), PRIMARY KEY(C_ID))

Bảng áp chót trong cơ sở dữ liệu của chúng tôi là bảng BASKET. Mô tả của cô ấy:

Chúng tôi viết lệnh tạo bảng BASKET (Giỏ hàng), cũng có khóa chính duy nhất và có thể tăng dần và được liên kết bằng khóa ngoại C_ID và E_ID với Khách hàng và Nhân viên, tương ứng:

Mã SQL

TẠO GIỎ BẢNG (BS_ID smallint KHÔNG NULL ĐƯỢC TẠO LUÔN LÀ NHẬN DẠNG (BẮT ĐẦU VỚI 1, TĂNG TĂNG BẰNG 1), C_ID INT KHÔNG NULL, E_ID INT KHÔNG NULL, PRIMARY KEY(BS_ID))

Và cuối cùng, bảng cuối cùng trong cơ sở dữ liệu của chúng tôi là bảng MUA. Mô tả của cô ấy:

Tên trường Loại dữ liệu Sự miêu tả
ĐẤU THẦUnhỏSố ID mua hàng
PH_IDnhỏMã số nhà thuốc
PR_IDnhỏSố nhận dạng thuốc
BS_IDvarchar(40)Số nhận dạng giỏ hàng
Giávarchar(20)Giá
Ngàyvarchar(20)ngày

Chúng tôi viết lệnh tạo bảng MUA, cũng có khóa chính duy nhất và có thể tăng dần và được liên kết khóa ngoại BS_ID, PH_ID, PR_ID tương ứng với Giỏ hàng, Nhà thuốc và Thuốc:

Mã SQL

TẠO BẢNG MUA (B_ID smallint KHÔNG NULL ĐƯỢC TẠO LUÔN LÀ NHẬN DẠNG (BẮT ĐẦU VỚI 1, TĂNG THEO 1), BS_ID INT KHÔNG NULL, PH_ID INT KHÔNG NULL, PR_ID INT KHÔNG NULL, DateB varchar(20) KHÔNG NULL, Giá gấp đôi KHÔNG NULL, KHÓA CHÍNH(B_ID))

Và chỉ để kết thúc chủ đề tạo cơ sở dữ liệu, nội dung lạc đề đã hứa về việc tuân thủ các ràng buộc về tính toàn vẹn khi giải pháp phức tạp hơn việc viết lệnh. Trong ví dụ của chúng tôi, điều kiện sau phải được đáp ứng: khi mua một đơn vị thuốc, giá trị số lượng của loại thuốc này trong bảng SẴN SÀNG sẽ giảm tương ứng. Nói chung, đối với các hoạt động như vậy trong ngôn ngữ SQL Có những công cụ đặc biệt được gọi là trigger. Nhưng yếu tố kích hoạt là một thứ thất thường: trên thực tế, chúng có thể không hoạt động hoặc có thể không hoạt động như dự định. Do đó, bất cứ khi nào có thể, các nhà phát triển đang tìm kiếm các công cụ phần mềm để giải quyết những vấn đề như vậy, một ví dụ được đề cập trong đoạn này.