Khái niệm tạo và sử dụng bảng sql. Tạo cơ sở dữ liệu bằng SQL

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ủa trường khóa được ghi trong ngoặc. 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 - Máy chủ MySQL 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ý tự dòng mới ->) và chỉ sau khi dấu phân cách (dấu chấm phẩy) nhấn phím Enter mới thực hiện truy vấn.

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 cách nhau bằng dấu cách sau loại dữ liệu và giá trị mặc định được biểu thị 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.

Cài đặt phần mềm SQL Quản lý máy chủ Phòng thu. Phần mềm này có thể được tải xuống miễn phí từ trang web của Microsoft. Nó cho phép bạn kết nối và quản lý máy chủ SQL của mình thông qua GUI thay vì sử dụng dòng lệnh.

Khởi chạy Studio quản lý máy chủ SQL. Khi khởi chạy chương trình lần đầu tiên, bạn sẽ được yêu cầu chọn máy chủ để kết nối. Nếu bạn đã có máy chủ và đang làm việc cũng như có các quyền cần thiết để kết nối với máy chủ đó, bạn có thể nhập địa chỉ máy chủ và thông tin nhận dạng. Nếu bạn muốn tạo cơ sở dữ liệu cục bộ, hãy đặt tên cơ sở dữ liệu thành Tên cơ sở dữ liệu là. và loại xác thực là "Xác thực Windows".

  • Nhấp vào nút Kết nối để tiếp tục.
  • Xác định vị trí cho thư mục Cơ sở dữ liệu. Sau khi kết nối với máy chủ (cục bộ hoặc từ xa), cửa sổ Object Explorer sẽ mở ở phía bên trái màn hình. Ở đầu cây Object Explorer sẽ là máy chủ mà bạn được kết nối. Nếu cây không được mở rộng, hãy nhấp vào biểu tượng "+" bên cạnh. Xác định vị trí thư mục cơ sở dữ liệu cơ sở dữ liệu.

    Tạo nên căn cứ mới dữ liệu. Nhấp chuột phải vào thư mục Cơ sở dữ liệu và chọn "Cơ sở dữ liệu mới...". Một cửa sổ sẽ xuất hiện cho phép bạn định cấu hình cơ sở dữ liệu trước khi tạo. Đặt tên cho cơ sở dữ liệu sẽ giúp bạn xác định nó. Hầu hết người dùng có thể để các cài đặt còn lại ở giá trị mặc định.

    • Bạn sẽ nhận thấy rằng khi bạn nhập tên cơ sở dữ liệu có hai tập tin bổ sung sẽ được tạo tự động: Dữ liệu và Nhật ký. Tệp Dữ liệu chứa tất cả dữ liệu trong cơ sở dữ liệu của bạn, trong khi tệp Nhật ký theo dõi các thay đổi đối với cơ sở dữ liệu.
    • Nhấn OK để tạo cơ sở dữ liệu. Bạn sẽ thấy cơ sở dữ liệu mới của mình xuất hiện trong thư mục Cơ sở dữ liệu mở rộng. Nó sẽ có biểu tượng chiếc mũ đội đầu.
  • Tạo một bảng. Cơ sở dữ liệu chỉ có thể lưu trữ dữ liệu nếu bạn tạo cấu trúc cho dữ liệu đó. Bảng chứa thông tin bạn nhập vào cơ sở dữ liệu của mình và bạn sẽ cần tạo nó trước khi có thể tiếp tục. Mở rộng cơ sở dữ liệu mới trong thư mục Cơ sở dữ liệu và nhấp chuột phải vào thư mục Bảng và chọn "Bảng mới ...".

    • Windows sẽ mở phần còn lại của màn hình, cho phép bạn quản lý bảng tính mới của mình.
  • Tạo khóa chính. Chúng tôi khuyên bạn nên tạo khóa chính làm cột đầu tiên trong bảng của mình. Nó hoạt động như một số nhận dạng hoặc số hồ sơ, cho phép bạn dễ dàng truy xuất những hồ sơ đó sau này. Để tạo nó, hãy nhập "ID" vào cột trường Tên, nhập int vào trường Loại dữ liệu và bỏ chọn hộp kiểm "Cho phép giá trị rỗng". Nhấp vào biểu tượng Khóa trên thanh công cụ để đặt cột này làm Khóa chính.

    • Bạn không muốn cho phép giá trị null vì bạn luôn muốn có ít nhất một mục nhập "1". Nếu bạn cho phép 0, mục nhập đầu tiên của bạn sẽ là "0".
    • Trong cửa sổ Thuộc tính Cột, cuộn xuống cho đến khi bạn tìm thấy tùy chọn Thông số nhận dạng. Mở rộng nó và đặt "(ls Identity)" thành "Có". Tùy chọn này sẽ tự động tăng giá trị cột ID cho mỗi mục nhập, tự động đánh số cho mỗi mục nhập mới.
  • Hiểu cách các bảng được cấu trúc. Các bảng được tạo thành từ các trường hoặc cột. Mỗi cột đại diện cho một khía cạnh của bản ghi cơ sở dữ liệu. Ví dụ: nếu bạn đang tạo cơ sở dữ liệu nhân viên, bạn có thể có cột "FirstName", cột "Họ", cột "Địa chỉ" và cột "Số điện thoại".

    Tạo các cột còn lại. Khi điền xong các trường cho Khóa chính, bạn sẽ thấy các trường mới xuất hiện bên dưới khóa đó. Điều này sẽ cho phép bạn nhập cột tiếp theo. Điền vào các trường mà bạn thấy phù hợp và đảm bảo bạn chọn đúng loại dữ liệu cho thông tin bạn sẽ nhập vào cột này:

    • nchar(#) - Kiểu dữ liệu này nên được sử dụng cho văn bản, như tên, địa chỉ, v.v. Số trong ngoặc đơn là số ký tự tối đa được phép cho trường này. Đặt giới hạn sẽ đảm bảo rằng kích thước cơ sở dữ liệu của bạn vẫn có thể quản lý được. Số điện thoại phải được lưu ở định dạng này vì bạn không thực hiện hàm toán học với họ.
    • int là số nguyên và thường được sử dụng trong trường định danh.
    • thập phân (x, y) - sẽ lưu trữ các số ở dạng thập phân và các số trong ngoặc tương ứng biểu thị tổng số chữ số và số chữ số sau số thập phân. Ví dụ: số thập phân (6,2) sẽ lưu trữ các số dưới dạng 0000,00.
  • Lưu bảng của bạn. Khi tạo xong các cột, bạn sẽ cần lưu bảng trước khi nhập thông tin. Bấm vào biểu tượng Lưu trên thanh công cụ, sau đó nhập tên cho bảng. Bạn nên đặt tên bảng theo cách giúp bạn nhận ra nội dung, đặc biệt đối với cơ sở dữ liệu lớn dữ liệu với nhiều bảng.

    Thêm dữ liệu vào bảng của bạn. Sau khi lưu bảng, bạn có thể bắt đầu thêm dữ liệu vào bảng. Mở thư mục Bảng trong Object Explorer. Nếu bảng mới của bạn không được liệt kê, hãy bấm chuột phải vào thư mục Bảng và chọn Làm mới. Nhấp chuột phải vào bảng và chọn "Chỉnh sửa 200 hàng trên cùng".

    87

    Tham số table_name là tên của bảng cơ sở được tạo. Số tiền tối đa Số lượng bảng mà một cơ sở dữ liệu có thể chứa bị giới hạn bởi số lượng đối tượng cơ sở dữ liệu, không thể vượt quá 2 tỷ, bao gồm bảng, dạng xem, thủ tục được lưu trữ, trình kích hoạt và ràng buộc. Các tham số col_name1, col_name2, ... cho biết tên các cột trong bảng, còn các tham số type1, type2, ... cho biết kiểu dữ liệu của các cột tương ứng.

    Tên của một đối tượng cơ sở dữ liệu thường có thể bao gồm bốn phần, có dạng:

    ]]tên của môn học

    Ở đây object_name là tên của đối tượng cơ sở dữ liệu, lược đồ_name là tên của lược đồ mà đối tượng thuộc về, server_name và db_name là tên của máy chủ và cơ sở dữ liệu mà đối tượng thuộc về. Tên bảng được nhóm với tên lược đồ phải rõ ràng trong cơ sở dữ liệu. Tương tự, tên cột phải rõ ràng trong bảng.

    Bây giờ chúng ta hãy xem xét ràng buộc liên quan đến sự hiện diện hay vắng mặt của các giá trị NULL trong một cột. Nếu một cột không được thiết lập để cho phép các giá trị NULL (NOT NULL), thì cột đó không thể chứa các giá trị NULL và hệ thống sẽ trả về thông báo lỗi nếu bạn cố gắng chèn một giá trị như vậy.

    Như đã đề cập, đối tượng cơ sở dữ liệu (trong trong trường hợp này table) luôn được tạo trong lược đồ cơ sở dữ liệu. Người dùng chỉ có thể tạo các bảng trong lược đồ mà họ có quyền THAY ĐỔI. Bất kỳ người dùng nào có vai trò sysadmin, db_ddladmin hoặc db_owner đều có thể tạo bảng trong bất kỳ lược đồ nào.

    Người tạo bảng không nhất thiết phải là chủ sở hữu của bảng. Điều này có nghĩa là một người dùng có thể tạo các bảng thuộc sở hữu của người dùng khác. Tương tự, một bảng được tạo bằng câu lệnh CREATE TABLE không cần phải thuộc về cơ sở dữ liệu hiện tại miễn là tên bảng được bắt đầu bằng một tên lược đồ và cơ sở dữ liệu (hiện có) khác.

    Lược đồ chứa bảng có thể có hai tên mặc định. Nếu một bảng được chỉ định mà không có tên lược đồ rõ ràng, hệ thống sẽ tra cứu tên bảng trong lược đồ mặc định thích hợp. Nếu không tìm thấy tên đối tượng trong lược đồ mặc định, hệ thống sẽ tìm kiếm trong lược đồ dbo. Tên bảng phải luôn được chỉ định cùng với tên lược đồ tương ứng. Điều này sẽ tránh được những điều không chắc chắn có thể xảy ra.

    Ví dụ dưới đây cho thấy cách tạo tất cả các bảng trong cơ sở dữ liệu SampleDb. (Cơ sở dữ liệu SampleDb phải được đặt làm cơ sở dữ liệu hiện tại.)

    SỬ DỤNG SampleDb; TẠO BẢNG Phòng ban (Số CHAR (4) NOT NULL, DepartmentName NCHAR (40) NOT NULL, Vị trí NCHAR (40) NULL); TẠO BẢNG. ( CHAR (4) KHÔNG NULL, NCHAR (15) KHÔNG NULL, FLOAT (53) NULL); TẠO BẢNG dbo.Employee (Id INT KHÔNG NULL, FirstName NCHAR (20) NOT NULL, LastName NCHAR (20) NOT NULL, DepartamentNumber CHAR (4) NULL); TẠO BẢNG dbo.Works_on (EmpId INT KHÔNG NULL, ProjectNumber CHAR (4) NOT NULL, Job NCHAR (15) NULL, EnterDate DATE NULL);

    Ngoài kiểu dữ liệu và giá trị có phải là NULL hay không, bạn có thể chỉ định các tham số sau trong đặc tả cột:

      mệnh đề DEFAULT;

      Thuộc tính IDENTITY.

    mệnh đề MẶC ĐỊNH trong đặc tả cột cho biết giá trị mặc định của cột, tức là Khi một hàng mới được chèn vào bảng, một ô trong cột đó sẽ chứa giá trị đã chỉ định, giá trị này sẽ vẫn ở trong ô trừ khi một giá trị khác được nhập vào đó. Bạn có thể sử dụng một hằng số làm giá trị mặc định, chẳng hạn như một trong các chức năng hệ thống chẳng hạn như USER, CURRENT_USER, SESSION_USER, SYSTEM_USER, CURRENT_TIMESTAMP và NULL.

    Cột định danh được tạo bằng cách chỉ định một thuộc tính DANH TÍNH, chỉ có thể có các giá trị số nguyên, thường được hệ thống gán ngầm. Mỗi giá trị tiếp theo được chèn vào cột như vậy được tính bằng cách tăng giá trị cuối cùng được chèn vào cột này. Do đó, định nghĩa của một cột có thuộc tính IDENTITY chứa (rõ ràng hoặc ngầm định) giá trị ban đầu và bước tăng (cột này còn gọi là cột tăng tự động).

    Dưới đây là một ví dụ về cách sử dụng các hướng dẫn này:

    SỬ DỤNG SampleDb; TẠO BẢNG Thông tin người dùng (-- Đối với cột Id, IDENTITY(10,5) tự động tăng sẽ được sử dụng, -- tức là khi chèn dữ liệu, phần tử đầu tiên sẽ được gán -- giá trị 10, giá trị thứ hai là 15, giá trị thứ ba 20, v.v. Id INT NOT NULL PRIMARY KEY IDENTITY (10,5), Đăng nhập VARCHAR(40) NOT NULL, -- Trường Ngày sinh sẽ được đặt thành ngày mặc định -- (trừ khi trường này được chỉ định rõ ràng khi chèn dữ liệu) Ngày sinh NGÀY THỜI GIAN MẶC ĐỊNH (-- Mặc định - 30 năm kể từ ngay hiện tại DATEADD(năm, -30, GETDATE())))

    TẠO câu lệnh BẢNG và các ràng buộc toàn vẹn khai báo

    Một trong những điều nhất những đặc điểm quan trọng Những gì DBMS phải cung cấp là cách đảm bảo tính toàn vẹn của dữ liệu. Các ràng buộc được sử dụng để xác thực dữ liệu khi nó được sửa đổi hoặc chèn vào được gọi là các ràng buộc để đảm bảo tính toàn vẹn (CONSTRAINT toàn vẹn). Việc đảm bảo tính toàn vẹn dữ liệu có thể được thực hiện bởi người dùng trong chương trình ứng dụng hoặc bởi hệ thống quản lý cơ sở dữ liệu. Hầu hết lợi thế quan trọng Các ràng buộc toàn vẹn được cung cấp bởi hệ thống quản lý cơ sở dữ liệu như sau:

      độ tin cậy của dữ liệu tăng lên;

      thời gian lập trình giảm;

      đơn giản hóa việc bảo trì.

    Việc xác định các ràng buộc toàn vẹn thông qua DBMS sẽ cải thiện độ tin cậy của dữ liệu bằng cách loại bỏ khả năng người lập trình ứng dụng có thể quên triển khai chúng. Nếu các ràng buộc toàn vẹn được cung cấp chương trình ứng dụng, thì tất cả các ứng dụng bị ảnh hưởng bởi những hạn chế này phải chứa mã thích hợp. Nếu mã bị thiếu ngay cả trong một ứng dụng, tính toàn vẹn của dữ liệu sẽ bị nghi ngờ.

    Nếu các ràng buộc toàn vẹn không được hệ thống quản lý cơ sở dữ liệu cung cấp thì chúng phải được xác định trong mỗi chương trình ứng dụng sử dụng dữ liệu có trong ràng buộc. Ngược lại, nếu các ràng buộc toàn vẹn được hệ thống quản lý cơ sở dữ liệu cung cấp thì chúng chỉ cần được xác định một lần. Ngoài ra, mã cho các ràng buộc do ứng dụng cung cấp thường phức tạp hơn so với các ràng buộc tương tự do DBMS cung cấp.

    Nếu các ràng buộc toàn vẹn được DBMS cung cấp, thì nếu các ràng buộc đó thay đổi, thì những thay đổi tương ứng trong mã chỉ cần được thực hiện một lần - trong hệ thống quản lý cơ sở dữ liệu. Và nếu các hạn chế được cung cấp bởi các ứng dụng thì việc sửa đổi để phản ánh những thay đổi về các hạn chế phải được thực hiện trong từng ứng dụng đó.

    Hệ thống quản lý cơ sở dữ liệu cung cấp hai loại ràng buộc toàn vẹn:

      các ràng buộc khai báo để đảm bảo tính toàn vẹn;

      các ràng buộc về thủ tục để đảm bảo tính toàn vẹn, được thực hiện thông qua các trình kích hoạt.

    Các ràng buộc khai báo được xác định bằng cách sử dụng các câu lệnh DDL CREATE TABLE và ALTER TABLE. Những hạn chế này có thể ở cấp độ cột hoặc cấp độ bảng. Các ràng buộc cấp độ cột được xác định cùng với kiểu dữ liệu và các thuộc tính cột khác trong khai báo cột, trong khi các ràng buộc cấp độ bảng luôn được xác định ở cuối câu lệnh CREATE TABLE hoặc ALTER TABLE sau khi tất cả các cột đã được xác định.

    Chỉ có một điểm khác biệt giữa ràng buộc cấp độ cột và ràng buộc cấp độ bảng: ràng buộc cấp độ cột chỉ có thể áp dụng cho một cột, trong khi ràng buộc cấp độ bảng có thể trải rộng trên nhiều cột trong một bảng.

    Mỗi ràng buộc khai báo được đặt một tên. Tên này có thể được chỉ định rõ ràng bằng cách sử dụng tùy chọn HẠN CHẾ trong câu lệnh CREATE TABLE hoặc ALTER TABLE. Nếu tùy chọn CONSTRAINT không được chỉ định, tên ràng buộc sẽ được Công cụ cơ sở dữ liệu gán ngầm. Chúng tôi khuyên bạn nên sử dụng tên ràng buộc rõ ràng vì điều này có thể cải thiện đáng kể việc tìm kiếm các ràng buộc đó.

    Các hạn chế khai báo có thể được nhóm thành các loại sau:

      mệnh đề DEFAULT;

      điều khoản ĐỘC ĐÁO;

      mệnh đề PRIMARY KEY;

      mệnh đề KIỂM TRA;

      tính toàn vẹn tham chiếu và mệnh đề FOREIGN KEY.

    Việc sử dụng mệnh đề DEFAULT để xác định ràng buộc mặc định đã được trình bày trước đó. Tất cả các hạn chế khác sẽ được thảo luận trong các phần tiếp theo.

    Ưu đãi ĐỘC ĐÁO

    Đôi khi một số cột hoặc một nhóm cột trong bảng có các giá trị duy nhất, cho phép chúng được sử dụng làm khóa chính. Các cột hoặc nhóm cột có thể dùng làm khóa chính được gọi là khóa tiềm năng (khóa ứng viên). Mỗi khóa ứng viên được xác định bằng một mệnh đề ĐỘC NHẤT trong câu lệnh CREATE TABLE hoặc ALTER TABLE. Cú pháp mệnh đề UNIQUE như sau:

    Tùy chọn CONSTRAINT trong mệnh đề UNIQUE gán tên rõ ràng cho khóa ứng viên. Lựa chọn được nhóm hoặc KHÔNG BAO GỒMĐiều này là do Công cụ cơ sở dữ liệu tạo một chỉ mục trên mỗi khóa bảng tiềm năng. Chỉ mục này có thể được nhóm lại, trong đó thứ tự vật lý của các hàng được xác định theo thứ tự được lập chỉ mục của các giá trị cột. Nếu thứ tự hàng không được chỉ định thì chỉ mục sẽ không được phân cụm. Giá trị mặc định là KHÔNG BAO GỒM. Tham số col_name1 chỉ định tên của cột tạo khóa ứng cử viên. (Khóa ứng viên có thể có tối đa 16 cột.)

    Việc sử dụng mệnh đề UNIQUE được thể hiện trong ví dụ dưới đây. (Trước khi chạy ví dụ này, bạn phải loại bỏ bảng Dự án trong cơ sở dữ liệu SampleDb bằng cách sử dụng câu lệnh DROP TABLE Projects.)

    SỬ DỤNG SampleDb; TẠO BẢNG Dự án (Số CHAR(4) MẶC ĐỊNH "p1", Tên dự án NCHAR (15) KHÔNG NULL, Ngân sách FLOAT (53) NULL, CONSTRAINT Unique_number UNIQUE (Số));

    Mỗi giá trị trong cột Số của bảng Dự án là duy nhất, bao gồm các giá trị NULL. (Tương tự như đối với bất kỳ giá trị nào khác với Hạn chế duy nhất, nếu giá trị NULL được cho phép đối với cột tương ứng thì cột đó có thể chứa tối đa một hàng có giá trị NULL.) Việc cố gắng chèn một giá trị vào cột Số đã có trong đó sẽ không thành công vì hệ thống sẽ không chấp nhận nó. Tên rõ ràng của ràng buộc được xác định trong ví dụ là Unique_number.

    Ưu đãi PRIMARY KEY

    Khóa chính của bảng là một cột hoặc nhóm cột có giá trị khác nhau ở mỗi hàng. Mỗi khóa chính được xác định bằng mệnh đề KHÓA CHÍNH trong câu lệnh CREATE TABLE hoặc ALTER TABLE. Cú pháp của mệnh đề PRIMARY KEY như sau:

    Tất cả các tham số của mệnh đề PRIMARY KEY đều có ý nghĩa giống như các tham số tương ứng có cùng tên trong mệnh đề UNIQUE. Nhưng không giống như cột UNIQUE, cột PRIMARY KEY không cho phép giá trị NULL và có giá trị mặc định là CLUSTERED.

    Ví dụ bên dưới hiển thị khai báo khóa chính cho bảng Nhân viên trong cơ sở dữ liệu SampleDb. Trước khi chạy ví dụ này, bạn phải thả bảng Nhân viên vào cơ sở dữ liệu SampleDb bằng cách sử dụng câu lệnh DROP TABLE Nhân viên.

    SỬ DỤNG SampleDb; TẠO BẢNG Nhân viên (Id INT KHÔNG NULL, FirstName NCHAR (20) NOT NULL, LastName NCHAR (20) NOT NULL, DepartamentNumber CHAR (4) NULL, CONSTRAINT Primary_id PRIMARY KEY (Id));

    Việc chạy lại mã này sẽ tạo bảng Nhân viên với khóa chính được xác định. Khóa chính của bảng được xác định bởi ràng buộc toàn vẹn khai báo có tên là Primary_id. Ràng buộc toàn vẹn này là một ràng buộc ở cấp độ bảng vì nó được chỉ định sau khi tất cả các cột trong bảng Nhân viên được xác định.

    Ví dụ sau tương đương với ví dụ trước, ngoại trừ khóa chính của bảng Nhân viên được xác định là ràng buộc cấp độ cột.

    SỬ DỤNG SampleDb; BẢNG THẢ Nhân viên; TẠO BẢNG Nhân viên (Id INT KHÔNG NULL CONSTRAINT Primary_id PRIMARY KEY, FirstName NCHAR (20) NOT NULL, LastName NCHAR (20) NOT NULL, DepartamentNumber CHAR (4) NULL);

    Trong ví dụ, mệnh đề PRIMARY KEY thuộc phần khai báo của cột tương ứng, cùng với việc khai báo kiểu dữ liệu của nó và thuộc tính chứa giá trị NULL. Vì lý do này, giới hạn này được gọi là ràng buộc cấp độ cột.

    KIỂM TRA phiếu mua hàng

    Kiểm tra ràng buộc (CHECK CONSTRAINT) xác định các điều kiện cho dữ liệu được chèn vào cột. Mỗi hàng được chèn vào bảng hoặc mọi giá trị cập nhật giá trị của cột đều phải đáp ứng các điều kiện này. Giới hạn kiểm tra được thiết lập bằng một đề xuất KIỂM TRA, được xác định trong câu lệnh CREATE TABLE hoặc ALTER TABLE. Cú pháp của mệnh đề CHECK như sau:

    biểu thức phải là giá trị Boolean (đúng hoặc sai) và có thể tham chiếu bất kỳ cột nào trong bảng hiện tại (hoặc chỉ cột hiện tại nếu được xác định là ràng buộc cấp độ cột), chứ không phải các bảng khác. Mệnh đề CHECK không được thực thi khi dữ liệu được sao chép nếu có tùy chọn NOT FOR REPLICATION. (Với tính năng sao chép, cơ sở dữ liệu hoặc một phần của nó sẽ được lưu trữ ở nhiều vị trí. Việc sao chép có thể cải thiện tính khả dụng của dữ liệu.)

    Ví dụ dưới đây cho thấy việc sử dụng mệnh đề CHECK:

    SỬ DỤNG SampleDb; TẠO BẢNG Khách hàng (CustomerId INTEGER NOT NULL, CustomerRole VARCHAR(100) NULL, CHECK (CustomerRole IN ("quản trị viên", "người điều hành", "người dùng")));

    Bảng Khách hàng mà ví dụ này tạo bao gồm một cột CustomerRole chứa ràng buộc kiểm tra tương ứng. Khi bạn chèn một giá trị mới khác với các giá trị trong tập hợp ("quản trị viên", "người điều hành", "người dùng") hoặc khi bạn cố gắng thay đổi giá trị hiện có thành giá trị khác với các giá trị này, cơ sở dữ liệu hệ thống quản lý trả về một thông báo lỗi.

    Ưu đãi NGOẠI TỆ

    Khóa ngoại là một cột (hoặc nhóm cột trong bảng) chứa các giá trị khớp với các giá trị khóa chính trong cùng bảng hoặc bảng khác. Khóa ngoại được xác định bằng mệnh đề KHÓA NGOÀI kết hợp với ưu đãi NGƯỜI GIỚI THIỆU. Cú pháp của mệnh đề FOREIGN KEY như sau:

    [ ((col_name1),...)] TÀI LIỆU THAM KHẢO tên_bảng ((col_name2),...) Quy ước cú pháp

    Mệnh đề FOREIGN KEY xác định rõ ràng tất cả các cột có trong khóa ngoại. Mệnh đề REFERENCES chỉ định tên của bảng chứa các cột tạo khóa chính tương ứng. Số cột và kiểu dữ liệu của chúng trong mệnh đề FOREIGN KEY phải khớp với số cột tương ứng và kiểu dữ liệu của chúng trong mệnh đề REFERENCES (và tất nhiên phải khớp với số cột và kiểu dữ liệu trong khóa chính của bảng mà họ đề cập đến).

    SỬ DỤNG SampleDb; TẠO BẢNG Works_on (EmpId INT KHÔNG NULL, ProjectNumber CHAR (4) NOT NULL, Job NCHAR (15) NULL, EnterDate DATE NULL, CONSTRAINT Primary_works PRIMARY KEY (EmpId, ProjectNumber), CONSTRAINT ngoại_employee KHÓA NGOÀI (EmpId) TÀI LIỆU THAM KHẢO Nhân viên (Id) , CONSTRAINT nước ngoài_dự án KEY NGOẠI TỆ (Số dự án) TÀI LIỆU THAM KHẢO Dự án (Số));

    Bảng Works_on trong ví dụ này được chỉ định với ba ràng buộc khai báo để đảm bảo tính toàn vẹn: Primary_works, external_employee và external_project. Những ràng buộc này là một ràng buộc cấp độ bảng trong đó ràng buộc đầu tiên chỉ định khóa chính và ràng buộc thứ hai và thứ ba chỉ định khóa ngoại của bảng Works_on. Ngoài ra, các khóa ngoại xác định các bảng Nhân viên và Dự án làm bảng tham chiếu, đồng thời các cột Id và Number của chúng làm khóa chính tương ứng của cột cùng tên trong bảng Works_on.

    Mệnh đề FOREIGN KEY có thể được bỏ qua nếu khóa ngoại được xác định là một ràng buộc cấp bảng vì cột mà ràng buộc được áp dụng là một "danh sách" ngầm định của các cột khóa ngoại và từ khóa REFERENCES là đủ để cho biết loại ràng buộc này là gì. Một bảng có thể chứa tối đa 63 ràng buộc FOREIGN KEY.

    Việc xác định khóa ngoại trên các bảng cơ sở dữ liệu áp đặt định nghĩa về một ràng buộc toàn vẹn quan trọng khác: tính toàn vẹn tham chiếu.

    Tính toàn vẹn tham chiếu thực thi các quy tắc chèn và cập nhật trên các bảng có chứa khóa ngoại và ràng buộc khóa chính tương ứng. Ví dụ trên có hai ràng buộc như vậy: external_employe và external_project. Mệnh đề REFERENCES trong ví dụ định nghĩa các bảng Nhân viên và Dự án làm bảng tham chiếu (cha).

    Nếu tính toàn vẹn tham chiếu được chỉ định cho hai bảng thì không phải lúc nào cũng có thể sửa đổi các giá trị trong khóa chính và khóa ngoại tương ứng. Các phần sau đây sẽ thảo luận khi nào điều này có thể thực hiện được và khi nào thì không.

    Việc sửa đổi giá trị khóa ngoại hoặc khóa chính có thể gây ra sự cố theo bốn cách. Tất cả những trường hợp này sẽ được minh họa bằng cơ sở dữ liệu SampleDb. Hai trường hợp đầu tiên liên quan đến việc sửa đổi bảng tham chiếu và hai trường hợp cuối cùng liên quan đến sửa đổi bảng cha.

    Các vấn đề về tính toàn vẹn tham chiếu tiềm ẩn - Trường hợp 1

    Chèn một hàng mới vào bảng Works_on với mã số nhân viên 11111. Câu lệnh Transact-SQL tương ứng trông như thế này:

    SỬ DỤNG SampleDb; XÁC NHẬN VÀO GIÁ TRỊ Works_on (11111, "p1", "qwe", GETDATE())

    Khi chèn một hàng mới vào bảng con, Works_on được sử dụng số mới EmpId nhân viên mà không có nhân viên (và số) nào phù hợp trong bảng Nhân viên mẹ. Nếu tính toàn vẹn tham chiếu được xác định cho cả hai bảng, như đã được thực hiện trước đó, Công cụ cơ sở dữ liệu sẽ không cho phép chèn một hàng mới với số EmpId đó.

    Các vấn đề về tính toàn vẹn tham chiếu có thể xảy ra - Trường hợp 2

    Thay đổi mã số nhân viên 9502 trong tất cả các hàng của bảng Works_on thành số 11111. Câu lệnh Transact-SQL tương ứng trông như sau:

    Trong trường hợp này, giá trị khóa ngoại hiện có trong bảng Works_on tham chiếu được thay thế bằng một giá trị mới không có giá trị khớp trong bảng Nhân viên cha. Nếu tính toàn vẹn tham chiếu được xác định cho cả hai bảng thì hệ thống quản lý cơ sở dữ liệu sẽ không cho phép sửa đổi hàng có số EmpId này trong bảng Works_on.

    Các vấn đề về tính toàn vẹn tham chiếu tiềm ẩn - Trường hợp 3

    Thay thế giá trị 9502 của Id mã số nhân viên bằng giá trị 22222 trong bảng Nhân viên. Câu lệnh Transact-SQL tương ứng sẽ trông như thế này:

    Trường hợp này cố gắng thay thế giá trị Id nhân viên hiện tại 9502 bằng giá trị 22222 chỉ trong bảng Nhân viên cha mà không thay đổi các giá trị Id tương ứng trong bảng Works_on tham chiếu. Hệ thống không cho phép thao tác này. Tính toàn vẹn tham chiếu không cho phép các giá trị tồn tại trong bảng tham chiếu (bảng mà khóa ngoại được xác định bởi mệnh đề FOREIGN KEY) mà không có giá trị tương ứng nào tồn tại trong bảng cha (bảng mà khóa chính được xác định bởi mệnh đề PRIMARY KEY). Nếu không, những hàng như vậy trong bảng tham chiếu sẽ là "mồ côi". Nếu việc sửa đổi bảng Nhân viên được mô tả ở trên được cho phép thì các hàng trong bảng Works_on có giá trị Id là 9502 sẽ là hàng mồ côi. Vì vậy, hệ thống không cho phép sửa đổi như vậy.

    Các vấn đề về tính toàn vẹn tham chiếu tiềm ẩn - Trường hợp 4

    Xóa một hàng trong bảng Nhân viên có giá trị Id là 9502.

    Trường hợp này tương tự như trường hợp 3. Nếu thao tác này được thực hiện, hàng có giá trị Id có các giá trị trùng khớp trong bảng tham chiếu (con) Works_on sẽ bị xóa khỏi bảng Nhân viên.

    Tùy chọn BẬT XÓA và BẬT CẬP NHẬT

    Công cụ cơ sở dữ liệu có thể phản ứng khác nhau trước nỗ lực xóa hoặc sửa đổi khóa chính. Nếu bạn cố gắng cập nhật các giá trị của khóa ngoại, tất cả các cập nhật đó sẽ không nhất quán với khóa chính tương ứng và cơ sở dữ liệu sẽ từ chối thực hiện các cập nhật đó và hiển thị thông báo lỗi.

    Nhưng nếu bạn cố gắng cập nhật các giá trị khóa chính gây ra sự không nhất quán trong khóa ngoại tương ứng, hệ thống cơ sở dữ liệu có thể phản ứng khá linh hoạt. Nói chung, có bốn tùy chọn xác định cách hệ thống cơ sở dữ liệu có thể phản hồi:

    KHÔNG CÓ HÀNH ĐỘNG

    Chỉ những giá trị trong bảng cha không có giá trị tương ứng trong khóa ngoại của bảng con (tham chiếu) mới được sửa đổi (cập nhật hoặc xóa).

    TUYỆT VỜI

    Được phép sửa đổi (cập nhật hoặc xóa) bất kỳ giá trị nào trong bảng cha. Khi bạn cập nhật giá trị khóa chính trong bảng cha hoặc khi bạn xóa toàn bộ hàng chứa giá trị đã cho, trong bảng con (tham chiếu), tất cả các hàng có giá trị khóa ngoại tương ứng đều được cập nhật (tức là đã xóa).

    Đặt vô giá trị

    Được phép sửa đổi (cập nhật hoặc xóa) bất kỳ giá trị nào trong bảng cha. Nếu việc cập nhật một giá trị trong bảng cha gây ra sự không nhất quán trong bảng con thì hệ thống cơ sở dữ liệu sẽ đặt khóa ngoại của tất cả các hàng tương ứng trong bảng con thành NULL. Điều tương tự cũng xảy ra nếu một hàng trong bảng cha bị xóa, gây ra sự không nhất quán trong bảng con. Vì vậy, tất cả sự không nhất quán của dữ liệu đều bị bỏ qua.

    ĐẶT MẶC ĐỊNH

    Tương tự như tùy chọn SET NULL, nhưng có một ngoại lệ: tất cả các khóa ngoại tương ứng với khóa chính đang được sửa đổi đều được gán một giá trị mặc định. Không cần phải nói rằng sau khi sửa đổi, khóa chính của bảng cha vẫn phải chứa giá trị mặc định.

    Transact-SQL hỗ trợ hai tùy chọn đầu tiên trong số này. Việc sử dụng các tùy chọn BẬT XÓA và BẬT CẬP NHẬT được hiển thị trong ví dụ bên dưới:

    SỬ DỤNG SampleDb; TẠO BẢNG Works_on (EmpId INT KHÔNG NULL, ProjectNumber CHAR (4) NOT NULL, Job NCHAR (15) NULL, EnterDate DATE NULL, CONSTRAINT Primary_works PRIMARY KEY (EmpId, ProjectNumber), CONSTRAINT ngoại_employee KHÓA NGOÀI (EmpId) TÀI LIỆU THAM KHẢO Nhân viên (Id) TRÊN XÓA CASCADE, CONSTRAINT ngoại_dự án KHÓA NGOẠI TỆ (Số dự án) TÀI LIỆU THAM KHẢO Dự án (Số) TRÊN CẬP NHẬT CASCADE);

    Ví dụ này tạo bảng Works_on bằng cách sử dụng các tùy chọn ON DELETE CASCADE và ON UPDATE CASCADE. Nếu bảng Works_on được tải các giá trị, mỗi lần xóa một hàng trong bảng Nhân viên sẽ gây ra việc xóa tầng tất cả các hàng trong bảng Works_on có giá trị khóa ngoài khớp với giá trị khóa chính của các hàng bị xóa trong bảng Nhân viên. Tương tự, mỗi lần cập nhật giá trị cột Number của bảng Project sẽ gây ra cập nhật tương tự cho tất cả các giá trị tương ứng của cột ProjectNumber của bảng Works_on.

    Trước khi có thể tạo bảng SQL, bạn cần xác định mô hình cơ sở dữ liệu. Thiết kế sơ đồ ER để xác định các thực thể, thuộc tính và mối quan hệ.

    Các khái niệm cơ bản

    Thực thể là các đối tượng hoặc sự kiện về thông tin nào phải được lưu trữ. Ví dụ: nhân viên của một công ty hoặc các dự án do công ty thực hiện. Thuộc tính là các thành phần mô tả hoặc định tính một thực thể. Ví dụ: thuộc tính của thực thể “nhân viên” là tiền lương và thuộc tính của thực thể “dự án” là chi phí ước tính. Kết nối là sự liên kết giữa hai phần tử. Nó có thể là hai chiều. Ngoài ra còn có kết nối đệ quy, tức là kết nối của một thực thể với chính nó.

    Cũng cần xác định các khóa và điều kiện để duy trì tính toàn vẹn của cơ sở dữ liệu. Nó có nghĩa là gì? Nói cách khác, các hạn chế sẽ giúp giữ cho cơ sở dữ liệu ở dạng chính xác và nhất quán.

    Chuyển đổi từ sơ đồ ER sang mô hình dạng bảng

    Quy tắc chuyển sang mô hình dạng bảng:

    1. Chuyển đổi tất cả các thực thể thành bảng.
    2. Chuyển đổi tất cả các thuộc tính thành cột, nghĩa là mỗi thuộc tính thực thể phải xuất hiện trong tên cột của bảng.
    3. Chuyển đổi số nhận dạng duy nhất thành khóa chính.
    4. Chuyển đổi tất cả các mối quan hệ sang khóa ngoại.
    5. Tạo bảng SQL.

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

    Đầu tiên bạn cần khởi động máy chủ MySQL. Để khởi chạy nó, hãy chuyển đến menu Bắt đầu, sau đó đến Chương trình, sau đó là MySQL và MySQL Server, chọn MySQL-Command-Line-Client.

    Để tạo cơ sở dữ liệu, hãy sử dụng lệnh Tạo cơ sở dữ liệu. Chức năng này có định dạng sau:

    TẠO NÊN CƠ SỞ DỮ LIỆU tên cơ sở dữ liệu.

    Các hạn chế về tên của cơ sở dữ liệu như sau:

    • độ dài tối đa 64 ký tự và có thể bao gồm các chữ cái, số, ký hiệu "" và "";
    • tên có thể bắt đầu bằng số nhưng phải chứa các chữ cái.

    Chúng ta cần ghi nhớ và nguyên tắc chung: Mọi truy vấn hoặc lệnh đều kết thúc bằng dấu phân cách. Trong SQL, người ta thường sử dụng dấu chấm phẩy làm dấu phân cách.

    Máy chủ cần cho biết nó sẽ cần làm việc với cơ sở dữ liệu nào. Có một tuyên bố USE cho việc này. Toán tử này có cú pháp đơn giản: USE n tên cơ sở dữ liệu.

    Tạo bảng SQL

    Vì vậy, mô hình được thiết kế, cơ sở dữ liệu được tạo và máy chủ được thông báo chính xác cách làm việc với nó. Bây giờ bạn có thể bắt đầu tạo bảng SQL. Có Ngôn ngữ định nghĩa dữ liệu (DDL). Nó được sử dụng để tạo bảng MS SQL, cũng như để xác định các đối tượng và làm việc với cấu trúc của chúng. DDL bao gồm một tập hợp các lệnh.

    Tạo bảng SQL Server

    Chỉ sử dụng một lệnh DDL, bạn có thể tạo các đồ vật khác nhau cơ sở, thay đổi các thông số của nó. Lệnh Tạo bảng được sử dụng. Định dạng tt trông như thế này:

    TẠO TADLE tên_bảng,(cột_name1 Tên _cột2 kiểu dữ liệu [column_constraint], [table_constraint]).

    Cú pháp của lệnh này cần được mô tả chi tiết hơn:

    • Tên bảng phải dài tối đa 30 ký tự và bắt đầu bằng một chữ cái. Chỉ cho phép các ký tự chữ cái, chữ cái và ký hiệu "_", "$" và "#". Việc sử dụng bảng chữ cái Cyrillic được cho phép. Điều quan trọng cần lưu ý là tên bảng không được giống với các tên đối tượng khác hoặc các từ dành riêng cho máy chủ cơ sở dữ liệu như Cột, Bảng, Chỉ mục, v.v.
    • Bạn phải chỉ định kiểu dữ liệu cho mỗi cột. Có một bộ tiêu chuẩn được hầu hết mọi người sử dụng. Ví dụ: Char, Varchar, Number, Date, Null type, v.v.

    • Tham số Mặc định cho phép bạn đặt giá trị mặc định. Điều này đảm bảo rằng không có giá trị null trong bảng. Nó có nghĩa là gì? Giá trị mặc định có thể là ký hiệu, biểu thức, hàm. Điều quan trọng cần nhớ là kiểu dữ liệu mặc định này phải khớp với kiểu dữ liệu đầu vào của cột.
    • Các ràng buộc trên mỗi cột được sử dụng để thực thi các điều kiện toàn vẹn cho dữ liệu ở cấp độ bảng. Có những sắc thái khác. Cấm xóa một bảng nếu có các bảng khác phụ thuộc vào nó.

    Cách làm việc với cơ sở dữ liệu

    Các dự án lớn thường yêu cầu tạo nhiều cơ sở dữ liệu, mỗi cơ sở dữ liệu cần nhiều bảng. Tất nhiên, người dùng không thể nào ghi nhớ hết thông tin trong đầu được. Để làm điều này, có thể xem cấu trúc của cơ sở dữ liệu và các bảng trong đó. Có một số lệnh, cụ thể là:

    • HIỂN THỊ CƠ SỞ DỮ LIỆU - hiển thị tất cả cơ sở dữ liệu SQL đã tạo trên màn hình;
    • SHOW TABLES - hiển thị danh sách tất cả các bảng cho cơ sở dữ liệu hiện tại được chọn bằng lệnh USE;
    • MÔ TẢ tên_bảng- hiển thị mô tả của tất cả các cột trong bảng.
    • ALTER TABLE - cho phép bạn thay đổi cấu trúc bảng.

    Lệnh cuối cùng cho phép:

    • thêm một cột hoặc ràng buộc vào bảng;
    • thay đổi một cột hiện có;
    • xóa cột hoặc cột;
    • loại bỏ các ràng buộc toàn vẹn.

    Cú pháp của lệnh này là: ALTER TABLE tên_bảng( | | | | [(BẬT | TẮT) CONSTANT ràng buộc_name ] | }.

    Có các lệnh khác:

    • RENAME - đổi tên bảng.
    • BẢNG TRUNCATE - xóa tất cả các hàng khỏi bảng. Chức năng này có thể cần thiết khi cần điền lại bảng nhưng không cần lưu trữ dữ liệu trước đó.

    Cũng có những tình huống khi cấu trúc cơ sở dữ liệu đã thay đổi và bảng cần bị xóa. Có một lệnh DROP cho việc này. Tất nhiên, trước tiên bạn cần chọn cơ sở dữ liệu mà bạn muốn xóa bảng, nếu nó khác với cơ sở dữ liệu hiện tại.

    Cú pháp lệnh khá đơn giản: DROP TABLE Tên_những cái bàn.

    Trong SQL Tạo quyền truy cập các bảng và việc sửa đổi chúng được thực hiện bằng các lệnh tương tự được liệt kê ở trên.

    Sử dụng CREATE TABLE bạn có thể tạo một bảng trống và sau đó điền dữ liệu vào đó. Nhưng đó không phải là tất cả. Bạn cũng có thể trực tiếp tạo bảng từ một bảng khác. Như thế này? Nghĩa là, có thể xác định một bảng và điền dữ liệu từ một bảng khác vào đó. Có một từ khóa đặc biệt AS cho việc này.

    Cú pháp rất đơn giản:

    • TẠO BẢNG Tên_những cái bàn[(cột_định nghĩa)] AS truy vấn con;
    • cột_định nghĩa - tên cột, quy tắc toàn vẹn cho cột một lần nữa bảng đã tạo và giá trị mặc định;
    • truy vấn con - trả về các hàng cần được thêm vào bảng mới.

    Do đó, lệnh như vậy sẽ tạo một bảng với các cột nhất định, chèn các hàng vào đó và các hàng này sẽ được trả về trong truy vấn.

    Bảng tạm thời

    Bảng tạm thời là bảng có dữ liệu bị xóa vào cuối mỗi phiên hoặc trước đó. Chúng được sử dụng để ghi lại các giá trị hoặc kết quả trung gian. Chúng có thể được sử dụng như bảng tính. Bạn có thể xác định dữ liệu tạm thời trong bất kỳ phiên nào, nhưng bạn chỉ có thể sử dụng dữ liệu của chúng trong phiên hiện tại. Việc tạo các bảng SQL tạm thời cũng tương tự như các bảng thông thường, sử dụng lệnh CREATE TABLE. Để hiển thị cho hệ thống biết bảng này là tạm thời, bạn cần sử dụng tham số TẠM THỜI TOÀN CẦU.

    Mệnh đề ON COMMIT đặt thời gian tồn tại của dữ liệu trong bảng đó và có thể thực hiện những việc sau:

    • XÓA HÀNG - xóa bảng tạm thời (xóa tất cả dữ liệu phiên) sau mỗi lần hoàn thành giao dịch. Đây thường là giá trị mặc định.
    • BẢO QUẢN HÀNG - để lại dữ liệu để sử dụng trong giao dịch tiếp theo. Ngoài ra, bạn chỉ có thể xóa bảng sau khi phiên kết thúc. Nhưng có một số đặc thù. Nếu một giao dịch được khôi phục (ROLLBACK), bảng sẽ được trả về trạng thái khi kết thúc giao dịch trước đó.

    Cú pháp tạo bảng tạm thời có thể được biểu diễn như sau: CREATE TABLE Tên_những cái bàn,(Têncột_1 kiểu dữ liệu [cột_ràng buộc], Tên _cột2 kiểu dữ liệu [column_constraint], [table_constraint]).

    Tạo và xóa bảng trong máy chủ ms sql

    Tất cả dữ liệu trong cơ sở dữ liệu máy chủ sql được lưu trữ trong bảng.
    Các bảng bao gồm các cột kết hợp các giá trị cùng loại và các hàng—các bản ghi trong bảng. Một cơ sở dữ liệu có thể có tới 2 tỷ bảng, một bảng có 1024 cột và một hàng (bản ghi) có 8060 byte.

    hỗ trợ máy chủ sql các loại sau dữ liệu:

    Kiểu dữ liệu Ký hiệu Kích thước, byte
    Dữ liệu nhị phân
    biến thể[(n)] 1-8000
    Ký tự char[(n)]
    varchar[(n)] 1-8000
    (tối đa 8000 ký tự)
    Ký tự Unicode nchar[(n)]
    nvarchar[(n)] 1-8000
    (tối đa 4000 ký tự)
    Ngày giờ ngày giờ 8
    ngày nhỏ 4
    Số chính xác thập phân[(p[,s])]
    số[(p[,s])] 5-17
    Số gần đúng float[(n)] thực 4-8 4
    Định danh toàn cầu định danh duy nhất 16
    Số nguyên int Smallint, tinyint 4 2, 1
    Tiền tiền, tiền nhỏ 8, 4
    Bit đặc biệt, con trỏ,
    tên hệ thống, dấu thời gian 1, 0-8
    Văn bản và hình ảnh văn bản, hình ảnh 0-2 GB
    Văn bản unicode ntext 0-2 GB

    Các bảng có thể được tạo bằng cách sử dụng câu lệnh tạo bảng bằng ngôn ngữ transact-sql, cũng như sử dụng trình quản lý doanh nghiệp. Trước tiên chúng ta hãy xem cách thực hiện việc này bằng cách sử dụng transact-sql.

    Tạo bảng bằng cách tạo bảng
    Để tạo bảng, hãy sử dụng câu lệnh tạo bảng.
    Cú pháp đơn giản hóa của toán tử này trông như sau:

    tạo bảng tên_bảng
    (cột_tên dữ liệu_type
    [,…N])
    Ví dụ:

    tạo thành viên bảng (member_no int không null, họ char(50) không null, firstname char(50) không null, ảnh ảnh null)

    Câu lệnh này tạo một bảng thành viên bao gồm bốn cột:

    member_no - có kiểu int, giá trị null không được phép
    họ - gõ char(50) - 50 ký tự, không cho phép giá trị null
    tên - giống với họ
    ảnh - có loại hình ảnh (hình ảnh), giá trị null được cho phép
    Ghi chú
    null là một ký hiệu đặc biệt để chỉ ra rằng phần tử dữ liệu không có giá trị. Mô tả loại cột chỉ ra rằng các phần tử dữ liệu có thể chưa được khởi tạo. Khi chỉ định không null, các giá trị “trống” không được phép. Nếu bạn bỏ qua một giá trị cho cột như vậy khi chèn bản ghi, quá trình chèn sẽ không xảy ra và máy chủ sql sẽ phát sinh lỗi.

    Hãy thử lệnh này. Chạy trình phân tích truy vấn. Kết nối với máy chủ của bạn. Từ danh sách cơ sở dữ liệu, chọn sqlstep. Sao chép lệnh tạo bảng vào cửa sổ lệnh và chạy nó. (Nếu chưa quên thì nhấn f5 hoặc ctrl-e).

    Để đảm bảo rằng bảng đã được tạo, hãy gõ lệnh:

    thành viên sp_help
    Chọn nó (như trong trình chỉnh sửa thông thường) và nhấn f5 lần nữa. Cửa sổ kết quả sẽ hiển thị thông tin về bảng thành viên.

    Trên một ghi chú!

    sp_help là một thủ tục hệ thống trả về thông tin về các đối tượng cơ sở dữ liệu (bảng, thủ tục được lưu trữ, v.v.).
    Định dạng cuộc gọi là:

    sp_help<имя таблицы>

    Xóa một bảng không thể dễ dàng hơn. Ở đó, trong trình yêu cầu (chúng tôi gọi là trình phân tích truy vấn), hãy nhập:

    thành viên bảng thả

    Chọn dòng này và nhấn f5. Bảng sẽ bị xóa và bạn sẽ được thông báo về nó. Trong trường hợp của chúng tôi, thủ tục này rất đơn giản. Trên thực tế, trong một cơ sở dữ liệu lớn, không thể chỉ xóa một bảng vì nó sẽ được kết nối với các bảng khác và để xóa nó, bạn sẽ cần phải ngắt các kết nối này. Cách thực hiện việc này, hãy xem các bước sau.

    Cách tạo bảng bằng trình quản lý doanh nghiệp máy chủ sql
    Mở rộng tuần tự: nhóm máy chủ sql,<Ваш sql server>, cơ sở dữ liệu. Chọn DB (tôi nghĩ là sqlstepbystep :), nhấp vào nút bên phải chuột và chọn mục "mới" trong menu ngữ cảnh, sau đó chọn mục "bảng...". Trước hết, bạn sẽ được hỏi tên bảng. Nhập nó và nhấn enter. Một cửa sổ sẽ xuất hiện trên màn hình nơi bạn có thể nhập:
    tên cột, loại, độ dài, kích thước, độ chính xác (ba cột này bị khóa tùy theo loại), cờ cho phép null, giá trị mặc định. Ba cột cuối cùng vẫn chưa được quan tâm.

    Nhập tên cột, loại và độ dài của chúng như trong ví dụ trên. Bấm vào biểu tượng đĩa mềm để lưu bảng và bạn có thể đóng cửa sổ lại. Mở rộng cơ sở dữ liệu của bạn, nhấp vào danh mục "bảng" và trong danh sách các bảng, bạn sẽ thấy bảng bạn vừa nhập. Để xóa nó, chọn nó trong danh sách, nhấp chuột phải và chọn "xóa" trong menu ngữ cảnh. Bảng sẽ bị xóa.

    Chúng tôi đã nghiên cứu cách tạo và xóa bảng. Bước tiếp theo của chúng tôi là tạo một cơ sở dữ liệu chính thức mà chúng tôi sẽ sử dụng làm ví dụ:

    Tính toàn vẹn của cơ sở dữ liệu quan hệ là gì và nó được đảm bảo như thế nào trong máy chủ sql
    cách sửa đổi dữ liệu trong bảng (chèn, cập nhật, xóa, chọn câu lệnh)
    cách sử dụng các thủ tục được lưu trữ và trình kích hoạt

    Tốt xấu