Lựa chọn tài liệu để nghiên cứu cơ sở dữ liệu và SQL. Học SQL

  • hướng dẫn

Hướng dẫn này là gì?

Hướng dẫn này giống như "đóng dấu bộ nhớ của tôi" bằng ngôn ngữ SQL (DDL, DML), tức là Đây là thông tin đã được tích lũy trên đường đi. Hoạt động chuyên môn và liên tục được lưu trữ trong đầu tôi. Đây là mức tối thiểu đủ đối với tôi, được sử dụng thường xuyên nhất khi làm việc với cơ sở dữ liệu. Nếu có nhu cầu áp dụng đầy đủ hơn Các cấu trúc SQL, sau đó tôi thường tìm đến thư viện MSDN trên Internet để được trợ giúp. Theo tôi, giữ mọi thứ trong đầu là rất khó, và không cần thiết phải làm như vậy. Nhưng biết các cấu tạo cơ bản là rất hữu ích, bởi vì. chúng có thể áp dụng gần như ở cùng một dạng trong nhiều cơ sở dữ liệu quan hệ như Oracle, MySQL, Firebird. Sự khác biệt chủ yếu là ở các loại dữ liệu, có thể khác nhau về chi tiết. Không có quá nhiều cấu trúc ngôn ngữ SQL cơ bản, và với việc thực hành liên tục, chúng sẽ nhanh chóng được ghi nhớ. Ví dụ, để tạo các đối tượng (bảng, ràng buộc, chỉ mục, v.v.) thì chỉ cần có trong tay trình soạn thảo văn bản môi trường (IDE) để làm việc với cơ sở dữ liệu, và không cần phải học một bộ công cụ trực quan được mài giũa để làm việc với một loại cơ sở dữ liệu cụ thể (MS SQL, Oracle, MySQL, Firebird, ...). Điều này cũng thuận tiện vì toàn bộ văn bản ở ngay trước mắt bạn và bạn không cần phải chạy qua nhiều tab để tạo, ví dụ, một chỉ mục hoặc một giới hạn. Tại công việc lâu dài với cơ sở dữ liệu, việc tạo, sửa đổi và đặc biệt là tạo lại một đối tượng bằng cách sử dụng script nhanh hơn nhiều lần so với nếu nó được thực hiện ở chế độ trực quan. Ngoài ra ở chế độ script (tương ứng, với sự cẩn thận), việc đặt và kiểm soát các quy tắc đặt tên đối tượng sẽ dễ dàng hơn (ý kiến ​​chủ quan của tôi). Ngoài ra, các tập lệnh rất thuận tiện để sử dụng khi các thay đổi được thực hiện trong một cơ sở dữ liệu (ví dụ, một cơ sở dữ liệu thử nghiệm) cần được chuyển ở dạng tương tự sang cơ sở dữ liệu khác (hiệu quả).

Ngôn ngữ SQL được chia thành nhiều phần, ở đây tôi sẽ xem xét 2 phần quan trọng nhất của nó:
  • DML - Ngôn ngữ thao tác dữ liệu (ngôn ngữ thao tác dữ liệu), chứa các cấu trúc sau:
    • SELECT - lựa chọn dữ liệu
    • CHÈN - chèn dữ liệu mới
    • CẬP NHẬT - cập nhật dữ liệu
    • DELETE - xóa dữ liệu
    • MERGE - hợp nhất dữ liệu
Tại vì Tôi là một học viên, vì vậy sẽ có rất ít lý thuyết trong cuốn sách này, và tất cả các cấu tạo sẽ được giải thích bằng các ví dụ thực tế. Ngoài ra, tôi tin rằng một ngôn ngữ lập trình, và đặc biệt là SQL, chỉ có thể thành thạo trong thực tế, bằng cách tự mình chạm vào nó và hiểu điều gì sẽ xảy ra khi bạn thực hiện cấu trúc này hoặc cấu trúc đó.

Hướng dẫn này được tạo theo nguyên tắc Từng bước, tức là nó là cần thiết để đọc nó một cách tuần tự và tốt nhất là ngay lập tức theo các ví dụ. Nhưng nếu bạn cần tìm hiểu chi tiết hơn về một lệnh, thì hãy sử dụng một tìm kiếm cụ thể trên Internet, chẳng hạn như trong thư viện MSDN.

Hướng dẫn này được viết bằng cơ sở dữ liệu MS SQL. Phiên bản máy chủ 2014, tôi đã sử dụng MS SQL Server để thực thi các tập lệnh studio quản lý(SSMS).

Sơ lược về MS SQL Server Management Studio (SSMS)

SQL Server Management Studio (SSMS) là một tiện ích cho Microsoft SQL Server để cấu hình, quản lý và quản trị các thành phần cơ sở dữ liệu. Tiện ích này chứa một trình soạn thảo tập lệnh (mà chúng tôi sẽ chủ yếu sử dụng) và một chương trình đồ họa hoạt động với các đối tượng và cài đặt máy chủ. Công cụ chính của SQL Server Management Studio là Object Explorer, cho phép người dùng xem, truy xuất và quản lý các đối tượng máy chủ. Văn bản này một phần mượn từ wikipedia.

Để tạo trình chỉnh sửa tập lệnh mới, hãy sử dụng nút Truy vấn mới:

Để thay đổi cơ sở dữ liệu hiện tại, bạn có thể sử dụng danh sách thả xuống:

Để thực hiện một lệnh cụ thể (hoặc một nhóm lệnh), hãy chọn nó và nhấn nút "Execute" hoặc nhấn phím "F5". Nếu chỉ có một lệnh trong trình chỉnh sửa vào lúc này hoặc nếu bạn cần thực hiện tất cả các lệnh, thì bạn không cần phải chọn bất kỳ thứ gì.

Sau khi thực thi các tập lệnh, đặc biệt là những tập lệnh tạo đối tượng (bảng, cột, chỉ mục), để xem các thay đổi, hãy sử dụng Làm mới từ trình đơn ngữ cảnh, đánh dấu nhóm thích hợp (ví dụ: Bảng), chính bảng hoặc nhóm Cột trong đó .

Trên thực tế, đây là tất cả những gì chúng ta cần biết để hoàn thành các ví dụ được đưa ra ở đây. Phần còn lại của tiện ích SSMS rất dễ tự học.

Một chút lý thuyết

Cơ sở dữ liệu quan hệ (RDB, hoặc xa hơn trong ngữ cảnh chỉ là cơ sở dữ liệu) là một tập hợp các bảng được kết nối với nhau. Nói một cách đại khái, cơ sở dữ liệu là một tệp trong đó dữ liệu được lưu trữ dưới dạng có cấu trúc.

DBMS - Hệ thống quản lý các Cơ sở dữ liệu này, tức là đây là một bộ công cụ để làm việc với một loại cơ sở dữ liệu cụ thể (MS SQL, Oracle, MySQL, Firebird, ...).

Ghi chú
Tại vì trong cuộc sống, trong cách nói thông tục, chúng ta chủ yếu nói: “Oracle DB”, hoặc thậm chí chỉ là “Oracle”, thực sự có nghĩa là “Oracle DBMS”, thì trong ngữ cảnh của hướng dẫn này, thuật ngữ DB đôi khi sẽ được sử dụng. Từ bối cảnh, tôi nghĩ sẽ rõ ràng chính xác điều gì đang bị đe dọa.

Một bảng là một tập hợp các cột. Cột cũng có thể được gọi là trường hoặc cột, tất cả những từ này sẽ được sử dụng như từ đồng nghĩa, diễn đạt cùng một thứ.

Bảng là đối tượng chính của RDB, tất cả dữ liệu RDB được lưu trữ từng dòng trong các cột của bảng. Dòng, bản ghi cũng là từ đồng nghĩa.

Đối với mỗi bảng, cũng như các cột của nó, tên được đưa ra, sau đó chúng được gọi đến.
Tên của một đối tượng (tên bảng, tên cột, tên chỉ mục, v.v.) trong MS SQL có thể có chiều dài tối đa 128 ký tự.

Để tham khảo- trong cơ sở dữ liệu ORACLE, tên đối tượng có thể có độ dài tối đa là 30 ký tự. Do đó, đối với một cơ sở dữ liệu cụ thể, bạn cần phát triển các quy tắc đặt tên đối tượng của riêng mình để đáp ứng giới hạn về số lượng ký tự.

SQL là một ngôn ngữ cho phép bạn truy vấn cơ sở dữ liệu thông qua DBMS. Trong một DBMS cụ thể, ngôn ngữ SQL có thể có một cách triển khai cụ thể (phương ngữ riêng của nó).

DDL và DML là một tập hợp con của ngôn ngữ SQL:

  • Ngôn ngữ DDL được sử dụng để tạo và sửa đổi cấu trúc cơ sở dữ liệu, tức là để tạo / sửa đổi / xóa bảng và các mối quan hệ.
  • Ngôn ngữ DML cho phép bạn thao tác dữ liệu bảng, tức là với lời thoại của cô ấy. Nó cho phép bạn chọn dữ liệu từ các bảng, thêm dữ liệu mới vào bảng, cập nhật và xóa dữ liệu hiện có.

Trong ngôn ngữ SQL, bạn có thể sử dụng 2 loại chú thích (một dòng và nhiều dòng):

Nhận xét một dòng

/ * bình luận nhiều dòng * /

Trên thực tế, tất cả mọi thứ cho lý thuyết về điều này sẽ là đủ.

DDL - Ngôn ngữ định nghĩa dữ liệu (ngôn ngữ mô tả dữ liệu)

Ví dụ: hãy xem xét một bảng có dữ liệu về nhân viên, ở dạng quen thuộc với một người không phải là lập trình viên:

TẠI trường hợp này Các cột của bảng có tên như sau: Số nhân sự, Họ và tên, Ngày sinh, E-mail, Chức vụ, Phòng ban.

Mỗi cột trong số này có thể được đặc trưng bởi loại dữ liệu mà nó chứa:

  • Số nhân sự - số nguyên
  • tên đầy đủ - chuỗi
  • Ngày sinh - ngày tháng
  • Email - chuỗi
  • Vị trí - chuỗi
  • bộ phận - chuỗi
Loại cột là một đặc điểm cho biết loại dữ liệu mà cột này có thể lưu trữ.

Để bắt đầu, bạn chỉ cần nhớ các kiểu dữ liệu cơ bản sau được sử dụng trong MS SQL là đủ:

Nghĩa Ký hiệu trong MS SQL Sự mô tả
Hàng chiều dài thay đổi varchar (N)

nvarchar (N)
Với số N, chúng ta có thể chỉ định độ dài chuỗi lớn nhất có thể cho cột tương ứng. Ví dụ, nếu chúng ta muốn nói rằng giá trị của cột "Tên" có thể chứa tối đa 30 ký tự, thì chúng ta cần đặt kiểu của nó thành nvarchar (30).
Sự khác biệt giữa varchar và nvarchar là varchar cho phép bạn lưu trữ chuỗi ở định dạng ASCII, trong đó một ký tự chiếm 1 byte, trong khi nvarchar lưu trữ chuỗi ở định dạng Unicode, trong đó mỗi ký tự chiếm 2 byte.
Loại varchar chỉ nên được sử dụng nếu bạn chắc chắn 100% rằng trường này không cần lưu trữ Ký tự Unicode. Ví dụ, varchar có thể được sử dụng để lưu trữ các địa chỉ E-mail, tại vì chúng thường chỉ chứa các ký tự ASCII.
Chuỗi độ dài cố định char (N)

nchar (N)
Kiểu này khác với chuỗi có độ dài thay đổi ở chỗ nếu độ dài của chuỗi nhỏ hơn N ký tự, thì nó luôn được đệm ở bên phải với độ dài N khoảng cách và được lưu trữ trong cơ sở dữ liệu ở dạng này, tức là trong cơ sở dữ liệu, nó chiếm đúng N ký tự (trong đó một ký tự chiếm 1 byte cho char và 2 byte cho nchar). Trong thực tế của tôi, loại này rất ít được sử dụng, và nếu nó được sử dụng, thì nó được sử dụng chủ yếu ở định dạng char (1), tức là. khi trường được xác định bởi một ký tự duy nhất.
Số nguyên int Loại này cho phép chúng ta chỉ sử dụng các số nguyên, cả dương và âm, trong cột. Để tham khảo (bây giờ nó không phù hợp với chúng tôi) - phạm vi số mà kiểu int cho phép từ -2 147 483 648 đến 2 147 483 647. Đây thường là kiểu chính được sử dụng để đặt số nhận dạng.
Số thực hay số thực trôi nổi Nếu nói ngôn ngữ đơn giản, thì đây là những số trong đó có thể có dấu phẩy (dấu phẩy).
cuộc hẹn ngày Nếu cột chỉ cần lưu trữ Ngày, bao gồm ba thành phần: Số, Tháng và Năm. Ví dụ, 02/02/2014 (15/02/2014). Loại này có thể được sử dụng cho cột "Ngày nhập học", "Ngày sinh", v.v., tức là. trong những trường hợp quan trọng đối với chúng tôi là chỉ sửa ngày hoặc khi thành phần thời gian không quan trọng đối với chúng tôi và có thể bị loại bỏ hoặc nếu nó không được biết đến.
Thời gian thời gian Loại này có thể được sử dụng nếu cột chỉ cần lưu trữ dữ liệu thời gian, tức là Giờ, Phút, Giây và Mili giây. Ví dụ: 17: 38: 31.3231603
Ví dụ: “Giờ khởi hành chuyến bay” hàng ngày.
ngày và giờ ngày giờ Loại này cho phép bạn lưu trữ cả Ngày và Giờ cùng một lúc. Ví dụ: 15/02/2014 5: 38: 31.323 PM
Ví dụ: đây có thể là ngày và giờ của một sự kiện.
Lá cờ chút Loại này hữu ích để lưu trữ các giá trị Có / Không, trong đó Có sẽ được lưu trữ dưới dạng 1 và Không sẽ được lưu trữ là 0.

Ngoài ra, giá trị của trường, trong trường hợp không bị cấm, có thể không được chỉ định, vì mục đích này, từ khóa NULL được sử dụng.

Để chạy các ví dụ, hãy tạo một cơ sở dữ liệu thử nghiệm được gọi là Thử nghiệm.

Một cơ sở dữ liệu đơn giản (không chỉ định tùy chọn bổ sung) có thể được tạo bằng cách chạy lệnh sau:

KIỂM TRA TẠO CƠ SỞ DỮ LIỆU
Bạn có thể xóa cơ sở dữ liệu bằng lệnh (bạn nên cẩn thận với lệnh này):

DROP DATABASE Test
Để chuyển sang cơ sở dữ liệu của chúng tôi, bạn có thể chạy lệnh:

Kiểm tra Hoa Kỳ
Ngoài ra, hãy chọn cơ sở dữ liệu Kiểm tra từ danh sách thả xuống trong khu vực menu SSMS. Trong công việc, tôi thường sử dụng phương pháp chuyển đổi giữa các cơ sở dữ liệu này.

Bây giờ trong cơ sở dữ liệu của chúng tôi, chúng tôi có thể tạo một bảng bằng cách sử dụng các mô tả như chúng vốn có, sử dụng dấu cách và ký tự Kirin:

TẠO BẢNG [Nhân viên] ([Số nhân sự] int, [Tên] nvarchar (30), [Ngày sinh] ngày, nvarchar (30), [Chức vụ] nvarchar (30), [Bộ phận] nvarchar (30))
Trong trường hợp này, chúng ta sẽ phải đặt tên trong dấu ngoặc vuông […].

Nhưng trong cơ sở dữ liệu, để thuận tiện hơn, tốt hơn là chỉ định tất cả tên của các đối tượng bằng tiếng Latinh và không sử dụng dấu cách trong tên. Trong MS SQL, thông thường trong trường hợp này, mỗi từ bắt đầu bằng một chữ cái viết hoa, ví dụ, đối với trường "Số nhân sự", chúng ta có thể đặt tên là PersonnelNumber. Bạn cũng có thể sử dụng các số trong tên, ví dụ: PhoneNumber1.

Trên một ghi chú
Trong một số DBMS, định dạng sau của tên "PHONE_NUMBER" có thể thích hợp hơn, ví dụ: định dạng này thường được sử dụng trong cơ sở dữ liệu ORACLE. Đương nhiên, khi đặt tên trường, điều mong muốn là nó không khớp với các từ khóa được sử dụng trong DBMS.

Vì lý do này, bạn có thể quên cú pháp dấu ngoặc vuông và xóa bảng [Nhân viên]:

DROP TABLE [Nhân viên]
Ví dụ: một bảng có nhân viên có thể được đặt tên là "Nhân viên" và các trường của nó có thể được đặt các tên sau:

  • ID - Số nhân sự (ID nhân viên)
  • Tên - tên đầy đủ
  • Ngày sinh - Ngày sinh
  • E-mail
  • Chức vụ
  • Khoa - Bộ phận
Thông thường, từ ID được sử dụng để đặt tên cho trường định danh.

Bây giờ chúng ta hãy tạo bảng của chúng ta:

TẠO BẢNG Nhân viên (ID int, Tên nvarchar (30), Ngày sinh, Email nvarchar (30), Vị trí nvarchar (30), Bộ phận nvarchar (30))
Bạn có thể sử dụng tùy chọn NOT NULL để chỉ định các cột bắt buộc.

Đối với một bảng đã tồn tại, các trường có thể được xác định lại bằng các lệnh sau:

Cập nhật trường ID ALTER TABLE Nhân viên ALTER COLUMN ID int NOT NULL - cập nhật Trường tên ALTER TABLE Nhân viên ALTER COLUMN Name nvarchar (30) NOT NULL

Trên một ghi chú
Khái niệm chung về ngôn ngữ SQL cho hầu hết các DBMS vẫn giống nhau (ít nhất, tôi có thể đánh giá điều này từ DBMS mà tôi đã có cơ hội làm việc). Sự khác biệt giữa DDL trong các DBMS khác nhau chủ yếu là ở các kiểu dữ liệu (không chỉ tên của chúng có thể khác nhau ở đây mà còn cả chi tiết về cách triển khai của chúng), các chi tiết rất cụ thể về việc triển khai ngôn ngữ SQL cũng có thể khác một chút (tức là bản chất của các lệnh giống nhau, nhưng có thể có một chút khác biệt trong phương ngữ, than ôi, nhưng không có một tiêu chuẩn nào cả). Biết cơ bản về SQL, bạn có thể dễ dàng chuyển từ DBMS này sang DBMS khác. trong trường hợp này, bạn sẽ chỉ cần hiểu chi tiết về việc thực hiện các lệnh trong DBMS mới, tức là trong hầu hết các trường hợp, chỉ cần rút ra một phép loại suy là đủ.

Tạo bảng CREATE TABLE Nhân viên (ID int, - trong ORACLE kiểu int là tương đương (wrapper) cho số (38) Tên nvarchar2 (30), - nvarchar2 trong ORACLE tương đương với nvarchar trong MS SQL Ngày sinh, Email nvarchar2 ( 30), Vị trí nvarchar2 (30), Bộ nvarchar2 (30)); - cập nhật các trường ID và Tên (ở đây MODIFY (…) được sử dụng thay vì ALTER COLUMN ALTER TABLE Nhân viên MODIFY (ID int NOT NULL, Name nvarchar2 (30) NOT NULL); - thêm PK (trong trường hợp này, cấu trúc giống như trong MS SQL, nó sẽ được hiển thị bên dưới) ALTER TABLE Nhân viên THÊM CONSTRAINT PK_E NHÂN VIÊN KHÓA CHÍNH(TÔI);
Đối với ORACLE, có sự khác biệt về cách triển khai kiểu varchar2, mã hóa của nó phụ thuộc vào cài đặt cơ sở dữ liệu và văn bản có thể được lưu, ví dụ, trong mã hóa UTF-8. Ngoài ra, độ dài trường trong ORACLE có thể được đặt cả theo byte và ký tự, đối với điều này, các tùy chọn bổ sung BYTE và CHAR được sử dụng, được chỉ định sau độ dài trường, ví dụ:

NAME varchar2 (30 BYTE) - dung lượng trường sẽ là 30 byte NAME varchar2 (30 CHAR) - dung lượng trường sẽ là 30 ký tự
Tùy chọn nào sẽ được sử dụng theo BYTE hoặc CHAR mặc định, trong trường hợp đặc tả đơn giản của loại varchar2 (30) trong ORACLE, tùy thuộc vào cài đặt cơ sở dữ liệu, đôi khi nó cũng có thể được đặt trong cài đặt IDE. Nói chung, đôi khi bạn có thể dễ dàng nhầm lẫn, vì vậy trong trường hợp ORACLE, nếu loại varchar2 được sử dụng (và điều này đôi khi được chứng minh ở đây, ví dụ: khi sử dụng mã hóa UTF-8), tôi thích viết CHAR rõ ràng (bởi vì thường sẽ thuận tiện hơn khi đọc độ dài của một chuỗi theo ký tự).

Nhưng trong trường hợp này, nếu đã có một số dữ liệu trong bảng, thì để thực hiện thành công các lệnh, điều cần thiết là các trường ID và Tên trong tất cả các hàng của bảng phải được điền vào. Hãy chứng minh điều này bằng một ví dụ, chèn dữ liệu vào bảng trong các trường ID, Chức vụ và Phòng ban, điều này có thể được thực hiện với tập lệnh sau:

CHÈN NHÂN VIÊN (ID, Chức vụ, Phòng ban) GIÁ TRỊ (1000, N "Giám đốc", N "Hành chính"), (1001, N "Lập trình viên", N "CNTT"), (1002, N "Kế toán", N "Kế toán" ), (1003, N "Lập trình viên cao cấp", N "CNTT")
Trong trường hợp này, lệnh INSERT cũng sẽ xuất hiện lỗi, vì khi chèn, chúng tôi đã không chỉ định giá trị của trường Tên bắt buộc.
Nếu chúng ta đã có dữ liệu này trong bảng gốc, thì lệnh "ALTER TABLE Nhân viên ALTER COLUMN ID int NOT NULL" sẽ được thực thi thành công và lệnh "ALTER TABLE Nhân viên ALTER COLUMN Name int NOT NULL" sẽ gây ra lỗi thông báo rằng có giá trị NULL (không được chỉ định) trong trường Tên.

Hãy thêm các giá trị cho trường Tên và điền lại dữ liệu:


Ngoài ra, tùy chọn NOT NULL có thể được sử dụng trực tiếp khi tạo bảng mới, tức là trong ngữ cảnh của lệnh CREATE TABLE.

Đầu tiên, xóa bảng bằng lệnh:

Nhân viên DROP TABLE
Bây giờ, hãy tạo một bảng với các cột ID và Tên bắt buộc:

TẠO BẢNG Nhân viên (ID int NOT NULL, Name nvarchar (30) NOT NULL, Ngày sinh, Email nvarchar (30), Vị trí nvarchar (30), Phòng ban nvarchar (30))
Bạn cũng có thể viết NULL sau tên cột, điều này có nghĩa là các giá trị NULL (không được chỉ định) sẽ được cho phép trong nó, nhưng điều này là không cần thiết, vì đặc tính này được ngụ ý theo mặc định.

Ngược lại, nếu bạn muốn đặt một cột hiện có là tùy chọn, thì hãy sử dụng cú pháp lệnh sau:

ALTER TABLE Nhân viên ALTER COLUMN Tên nvarchar (30) NULL
Hoặc đơn giản:

ALTER TABLE Nhân viên ALTER COLUMN Tên nvarchar (30)
Với lệnh này, chúng ta cũng có thể thay đổi kiểu trường thành một kiểu tương thích khác hoặc thay đổi độ dài của nó. Ví dụ: hãy mở rộng trường Tên thành 50 ký tự:

ALTER TABLE Nhân viên ALTER COLUMN Tên nvarchar (50)

khóa chính

Khi tạo một bảng, điều mong muốn là nó có một cột duy nhất hoặc một tập hợp các cột là duy nhất cho mỗi hàng của nó - một bản ghi có thể được xác định duy nhất bằng giá trị duy nhất này. Giá trị này được gọi là khóa chính của bảng. Đối với bảng Nhân viên của chúng tôi, giá trị duy nhất này có thể là cột ID (chứa "Số Nhân sự của Nhân viên" - ngay cả khi trong trường hợp của chúng tôi, giá trị này là duy nhất cho mỗi nhân viên và không thể lặp lại).

Bạn có thể tạo khóa chính cho một bảng hiện có bằng lệnh:

ALTER TABLE Nhân viên THÊM CONSTRAINT PK_E NHÂN VIÊN TỪ KHÓA CHÍNH (ID)
Trong đó "PK_Eprisees" là tên của ràng buộc chịu trách nhiệm cho khóa chính. Khóa chính thường được đặt tên với tiền tố "PK_" theo sau là tên bảng.

Nếu khóa chính bao gồm một số trường, thì các trường này phải được liệt kê trong dấu ngoặc vuông được phân tách bằng dấu phẩy:

ALTER TABLE table_name ADD CONSTRAINT binding_name PRIMARY KEY (field1, field2,…)
Cần lưu ý rằng trong MS SQL tất cả các trường có trong khóa chính phải có đặc tính NOT NULL.

Ngoài ra, khóa chính có thể được xác định trực tiếp khi tạo bảng, tức là trong ngữ cảnh của lệnh CREATE TABLE. Hãy xóa bảng:

Nhân viên DROP TABLE
Và sau đó tạo nó bằng cú pháp sau:

TẠO BẢNG Nhân viên (ID int NOT NULL, Name nvarchar (30) NOT NULL, Ngày sinh, Email nvarchar (30), Vị trí nvarchar (30), Bộ phận nvarchar (30), CONSTRAINT PK_E NHÂN VIÊN KHÓA CHÍNH (ID) - mô tả PK sau tất cả các trường như một ràng buộc)
Sau khi tạo, điền vào dữ liệu bảng:

CHÈN NHÂN VIÊN (ID, Chức vụ, Phòng ban, Tên) GIÁ TRỊ (1000, N "Giám đốc", N "Quản trị", N "Ivanov II.), (1001, N" Lập trình viên ", N" CNTT ", N" Petrov P.P. " ), (1002, N "Kế toán", N "Kế toán", N "Sidorov S.S."), (1003, N "Lập trình viên cao cấp", N "CNTT", N "Andreev A. NHƯNG.")
Nếu khóa chính trong bảng chỉ bao gồm các giá trị của một cột, thì có thể sử dụng cú pháp sau:

TẠO BẢNG Nhân viên (ID int NOT NULL CONSTRAINT PK_E Employees PRIMARY KEY, - chỉ định Tên nvarchar (30) KHÔNG ĐỦ, Ngày sinh, Email nvarchar (30), Chức vụ nvarchar (30), Bộ phận nvarchar (30))
Trên thực tế, tên ràng buộc có thể bị bỏ qua, trong trường hợp đó, nó sẽ được đặt tên hệ thống (như "PK__Eprisee__3214EC278DA42077"):

TẠO BẢNG Nhân viên (ID int NOT NULL, Name nvarchar (30) NOT NULL, Ngày sinh, Email nvarchar (30), Vị trí nvarchar (30), Nvarchar phòng ban (30), KHÓA CHÍNH (ID))
Hoặc:

TẠO BẢNG Nhân viên (ID int NOT NULL PRIMARY KEY, Name nvarchar (30) NOT NULL, Ngày sinh, Email nvarchar (30), Vị trí nvarchar (30), Phòng ban nvarchar (30))
Nhưng tôi khuyên bạn nên luôn đặt rõ ràng tên của ràng buộc cho các bảng vĩnh viễn, bởi vì bởi một cái tên rõ ràng và dễ hiểu, sau đó sẽ dễ dàng thao tác hơn, ví dụ: bạn có thể xóa nó:

ALTER TABLE Nhân viên DROP CONSTRAINT PK_E Employees
Nhưng một cú pháp ngắn như vậy, không chỉ định tên của các hạn chế, rất thuận tiện để sử dụng khi tạo bảng cơ sở dữ liệu tạm thời (tên của bảng tạm thời bắt đầu bằng # hoặc ##), bảng này sẽ bị xóa sau khi sử dụng.

Hãy tóm tắt

Cho đến nay chúng tôi đã đề cập đến các lệnh sau:
  • TẠO BẢNG tên_bảng (liệt kê các trường và kiểu, hạn chế của chúng) - được sử dụng để tạo một bảng mới trong cơ sở dữ liệu hiện tại;
  • DROP BẢNG tên_bảng - được sử dụng để xóa một bảng khỏi cơ sở dữ liệu hiện tại;
  • BẢNG ALTER tên_bảng ALTER CỘT column_name… - được sử dụng để cập nhật loại cột hoặc thay đổi cài đặt của nó (ví dụ: để đặt đặc tính NULL hoặc NOT NULL);
  • BẢNG ALTER tên_bảng THÊM CONSTRAINT tên_mạch KHÓA CHÍNH(field1, field2,…) - thêm khóa chính vào bảng hiện có;
  • BẢNG ALTER tên_bảng DROP CONSTRAINT tên_kèm_làm - xoá ràng buộc khỏi bảng.

Một chút về bảng tạm thời

Đoạn trích từ MSDN. Có hai loại bảng tạm thời trong MS SQL Server: cục bộ (#) và toàn cục (##). Các bảng tạm thời cục bộ chỉ hiển thị cho người tạo của chúng cho đến khi phiên kết nối với phiên bản SQL Server bị chấm dứt sau khi chúng được tạo lần đầu tiên. Các bảng tạm thời cục bộ sẽ tự động bị xóa sau khi người dùng ngắt kết nối khỏi một phiên bản của SQL Server. Các bảng tạm thời chung được hiển thị cho tất cả người dùng trong bất kỳ phiên kết nối nào sau khi các bảng này được tạo và bị xóa khi tất cả người dùng tham chiếu đến các bảng này ngắt kết nối khỏi phiên bản của SQL Server.

Các bảng tạm thời được tạo trong cơ sở dữ liệu hệ thống tempdb, tức là tạo chúng, chúng tôi không làm tắc nghẽn cơ sở dữ liệu chính, nếu không các bảng tạm thời hoàn toàn giống với bảng thông thường, chúng cũng có thể bị xóa bằng lệnh DROP TABLE. Bảng tạm thời cục bộ (#) thường được sử dụng hơn.

Để tạo một bảng tạm thời, bạn có thể sử dụng lệnh CREATE TABLE:

TẠO BẢNG #Temp (ID int, Tên nvarchar (30))
Vì một bảng tạm thời trong MS SQL tương tự như một bảng thông thường, bạn cũng có thể xóa nó tương ứng bằng lệnh DROP TABLE:

DROP TABLE #Temp

Bạn cũng có thể tạo một bảng tạm thời (cũng như một bảng thông thường) và ngay lập tức điền vào nó với dữ liệu được trả về bởi truy vấn bằng cú pháp SELECT ... INTO:

CHỌN ID, Tên VÀO #Temp TỪ Nhân viên

Trên một ghi chú
Trong các DBMS khác nhau, việc triển khai các bảng tạm thời có thể khác nhau. Ví dụ: trong ORACLE và Firebird DBMS, cấu trúc của các bảng tạm thời phải được xác định trước bằng lệnh CREATE GLOBAL TEMPORARY TABLE, cho biết các chi tiết cụ thể của việc lưu trữ dữ liệu trong đó, sau đó người dùng nhìn thấy nó trong số các bảng chính và làm việc với nó. như với một bảng thông thường.

Chuẩn hóa cơ sở dữ liệu - chia thành các bảng con (thư mục) và xác định các mối quan hệ

Bảng Nhân viên hiện tại của chúng tôi có nhược điểm là người dùng có thể nhập bất kỳ văn bản nào vào các trường Chức vụ và Phòng ban, điều này chủ yếu chứa nhiều lỗi, vì đối với một nhân viên, anh ta chỉ cần chỉ ra "IT" là phòng ban và đối với nhân viên thứ hai, cho ví dụ, nhập "bộ phận CNTT", có "CNTT" thứ ba. Do đó, sẽ không rõ ý người dùng, tức là Những nhân viên này là nhân viên của cùng một bộ phận, hay người dùng đã tự mô tả và đây là 3 bộ phận khác nhau? Và thậm chí hơn thế nữa, trong trường hợp này, chúng tôi sẽ không thể nhóm dữ liệu một cách chính xác cho một số báo cáo, nơi có thể yêu cầu hiển thị số lượng nhân viên trong bối cảnh của từng bộ phận.

Hạn chế thứ hai là dung lượng lưu trữ của thông tin này và sự trùng lặp của nó, tức là đối với mỗi nhân viên, tên đầy đủ của bộ phận được chỉ ra, yêu cầu một vị trí trong cơ sở dữ liệu để lưu trữ mỗi ký tự từ tên bộ phận.

Hạn chế thứ ba là khó cập nhật các trường này nếu tên của một vị trí thay đổi, ví dụ, nếu bạn cần đổi tên vị trí “Lập trình viên” thành “Lập trình viên cơ sở”. Trong trường hợp này, chúng ta sẽ phải thực hiện thay đổi đối với từng dòng của bảng, trong đó Vị trí bằng "Lập trình viên".

Để tránh những thiếu sót này, người ta sử dụng cái gọi là chuẩn hóa cơ sở dữ liệu - chia nhỏ nó thành các bảng con, bảng tham chiếu. Không nhất thiết phải leo vào rừng lý thuyết và nghiên cứu chúng là gì dạng bình thường, hiểu bản chất của quá trình chuẩn hóa là đủ.

Hãy tạo 2 bảng tham chiếu "Vị trí" và "Phòng ban", bảng đầu tiên sẽ được gọi là Vị trí và bảng thứ hai tương ứng là Phòng ban:

TẠO Vị trí BẢNG (ID int IDENTITY (1,1) NOT NULL CONSTRAINT PK_Positions PRIMARY KEY, Name nvarchar (30) NOT NULL) TẠO BẢNG Phòng ban (ID int IDENTITY (1,1) NOT NULL CONSTRAINT PK_Positions PRIMARY KEY, Name nvarchar (30 ) CÓ GIÁ TRỊ)
Lưu ý rằng ở đây chúng tôi đã sử dụng tùy chọn IDENTITY mới, có nghĩa là dữ liệu trong cột ID sẽ được đánh số tự động, bắt đầu từ 1, với bước 1, tức là khi các bản ghi mới được thêm vào, chúng sẽ được gán tuần tự các giá trị 1, 2, 3, v.v. Các trường như vậy thường được gọi là tự động tăng dần. Chỉ một trường có thuộc tính IDENTITY có thể được xác định trong bảng và thông thường, nhưng không nhất thiết, trường như vậy là khóa chính cho bảng đó.

Trên một ghi chú
Trong các DBMS khác nhau, việc triển khai các trường với bộ đếm có thể được thực hiện khác nhau. Trong MySQL, ví dụ, một trường như vậy được xác định bằng cách sử dụng tùy chọn AUTO_INCREMENT. Trong ORACLE và Firebird, chức năng này trước đây có thể được mô phỏng bằng cách sử dụng SEQUENCEs. Nhưng theo những gì tôi biết, ORACLE hiện đã thêm tùy chọn GENERATED AS IDENTITY.

Hãy tự động điền vào các bảng này, dựa trên dữ liệu hiện tại được ghi lại trong các trường Chức vụ và Phòng ban của bảng Nhân viên:

Điền vào trường Tên của bảng Vị trí với các giá trị duy nhất từ ​​trường Vị trí của bảng Nhân viên CHÈN Vị trí (Tên) CHỌN DISTINCT Vị trí TỪ Nhân viên KHI Vị trí KHÔNG ĐẦY ĐỦ - loại bỏ các bản ghi không có vị trí được chỉ định
Chúng tôi sẽ làm tương tự cho bảng Phòng ban:

CHÈN Phòng ban (Tên) CHỌN BỘ PHẬN DISTINCT TỪ Nhân viên KHI Bộ phận KHÔNG ĐẦY ĐỦ
Nếu bây giờ chúng ta mở bảng Vị trí và Phòng ban, chúng ta sẽ thấy một bộ giá trị được đánh số theo trường ID:

CHỌN * TỪ Vị trí

CHỌN * TỪ các phòng ban

Các bảng này lúc này sẽ đóng vai trò là thư mục để thiết lập các vị trí và phòng ban. Bây giờ chúng ta sẽ đề cập đến ID công việc và phòng ban. Trước hết, hãy tạo các trường mới trong bảng Nhân viên để lưu trữ dữ liệu ID:

Thêm trường cho ID vị trí ALTER TABLE Nhân viên ADD PositionID int - thêm trường cho ID phòng ban ALTER TABLE Nhân viên ADD DepartmentID int
Loại trường tham chiếu phải giống như trong các thư mục, trong trường hợp này là kiểu int.

Bạn cũng có thể thêm nhiều trường vào bảng cùng một lúc bằng một lệnh, liệt kê các trường được phân tách bằng dấu phẩy:

ALTER TABLE Nhân viên THÊM int Vị trí, int DepartmentID
Bây giờ chúng ta hãy viết các liên kết (ràng buộc tham chiếu - NGOẠI KHÓA) cho các trường này, để người dùng không có cơ hội ghi vào các trường này, các giá trị không nằm trong số các giá trị ID trong thư mục.

ALTER TABLE Nhân viên THÊM CONSTRAINT FK_Eprisees_PositionID NGOẠI KHÓA (ID Vị trí) TÀI LIỆU THAM KHẢO Vị trí (ID)
Và chúng tôi sẽ làm tương tự cho trường thứ hai:

ALTER TABLE Nhân viên THÊM CONSTRAINT FK_Empleteees_DepartmentID NGOẠI KHÓA (DepartmentID) TÀI LIỆU THAM KHẢO Các phòng ban (ID)
Bây giờ người dùng sẽ chỉ có thể nhập các giá trị ID từ sách tham khảo tương ứng vào các trường này. Theo đó, để sử dụng một phòng ban hoặc chức vụ mới, trước tiên anh ta sẽ phải thêm một mục mới vào danh bạ tương ứng. Tại vì các chức vụ, phòng ban hiện được lưu trong thư mục thành một bản, sau đó để đổi tên thì chỉ cần thay đổi trong danh bạ là đủ.

Tên của ràng buộc tham chiếu thường là từ ghép, nó bao gồm tiền tố "FK_", theo sau là tên bảng và sau dấu gạch dưới, là tên trường tham chiếu đến mã định danh của bảng tra cứu.

Định danh (ID) thường là một giá trị nội bộ chỉ được sử dụng cho các liên kết và giá trị nào được lưu trữ ở đó, trong hầu hết các trường hợp, nó hoàn toàn không quan tâm, vì vậy không cần phải cố gắng loại bỏ các lỗ hổng trong dãy số. phát sinh trong quá trình làm việc với bảng, ví dụ, sau khi xóa các bản ghi khỏi sổ tay.

Bảng ALTER TABLE ADD CONSTRAINT binding_name FOREIGN KEY (field1, field2,…) Bảng tra cứu TÀI LIỆU THAM KHẢO (field1, field2,…)
Trong trường hợp này, trong bảng "table_reference", khóa chính được biểu diễn bằng sự kết hợp của một số trường (field1, field2, ...).

Trên thực tế, bây giờ hãy cập nhật các trường PositionID và DepartmentID với các giá trị ID từ các thư mục. Hãy sử dụng lệnh UPDATE DML cho mục đích này:

CẬP NHẬT e SET PositionID = (CHỌN ID TỪ Vị trí WHERE Tên = e. Vị trí), ID Bộ phận = (CHỌN ID TỪ các Bộ phận TẠI ĐÂY Tên = e. Bộ phận) TỪ Nhân viên e
Hãy xem điều gì sẽ xảy ra bằng cách chạy truy vấn:

CHỌN * TỪ Nhân viên

Vậy là xong, các trường PositionID và DepartmentID đã được điền đầy đủ các vị trí và phòng ban tương ứng với các ID cần thiết trong trường Chức vụ và Phòng ban trong bảng Nhân viên rồi, bạn có thể xóa các trường này:

ALTER TABLE Nhân viên DROP COLUMN Chức vụ, Bộ phận
Bảng bây giờ trông như thế này:

CHỌN * TỪ Nhân viên

TÔI Tên Ngày sinh nhật E-mail ID vị trí DepartmentID
1000 Ivanov I.I. VÔ GIÁ TRỊ VÔ GIÁ TRỊ 2 1
1001 Petrov P.P. VÔ GIÁ TRỊ VÔ GIÁ TRỊ 3 3
1002 Sidorov S.S. VÔ GIÁ TRỊ VÔ GIÁ TRỊ 1 2
1003 Andreev A.A. VÔ GIÁ TRỊ VÔ GIÁ TRỊ 4 3

Những thứ kia. cuối cùng chúng tôi đã loại bỏ việc lưu trữ thông tin thừa. Bây giờ, theo vị trí và số phòng ban, chúng tôi có thể xác định duy nhất tên của họ bằng cách sử dụng các giá trị trong bảng tra cứu:

CHỌN e.ID, e.Name, p.Name PositionName, d.Name DepartmentName TỪ Nhân viên e LEFT JOIN Các phòng ban d ON d.ID = e.DepartmentID LEFT JOIN Vị trí p ON p.ID = e.PositionID

Trong Trình kiểm tra đối tượng, chúng ta có thể thấy tất cả các đối tượng được tạo cho một bảng nhất định. Từ đây, bạn cũng có thể thực hiện các thao tác khác nhau với các đối tượng này - ví dụ: đổi tên hoặc xóa các đối tượng.

Cũng cần lưu ý rằng một bảng có thể tham chiếu đến chính nó, tức là bạn có thể tạo một liên kết đệ quy. Ví dụ: hãy thêm một trường ManagerID khác vào bảng của chúng tôi với các nhân viên, điều này sẽ trỏ đến nhân viên mà nhân viên này. Hãy tạo một trường:

ALTER TABLE Nhân viên THÊM int ManagerID
Giá trị NULL được cho phép trong trường này, trường sẽ trống nếu, ví dụ, không có cấp trên của nhân viên.

Bây giờ, hãy tạo một NGOẠI KHÓA trên bảng Nhân viên:

ALTER TABLE Nhân viên THÊM CONSTRAINT FK_Erantyees_ManagerID NGOẠI KHÓA (ManagerID) TÀI LIỆU THAM KHẢO Nhân viên (ID)
Bây giờ chúng ta hãy tạo một sơ đồ và xem mối quan hệ giữa các bảng của chúng ta trông như thế nào trên đó:

Do đó, chúng ta sẽ thấy hình ảnh sau (bảng Nhân viên có liên quan đến bảng Vị trí và Vị trí, và cũng đề cập đến chính nó):

Cuối cùng, điều đáng nói là các khóa tham chiếu có thể bao gồm các tùy chọn bổ sung ON DELETE CASCADE và ON UPDATE CASCADE, cho biết cách hoạt động khi xóa hoặc cập nhật một bản ghi được tham chiếu trong bảng tra cứu. Nếu các tùy chọn này không được chỉ định, thì chúng tôi không thể thay đổi ID trong bảng thư mục của mục nhập có liên kết từ bảng khác, cũng như không thể xóa mục nhập như vậy khỏi thư mục cho đến khi chúng tôi xóa tất cả các hàng tham chiếu đến mục nhập này hoặc, Hãy cập nhật các dòng tham chiếu này thành một giá trị khác.

Ví dụ: hãy tạo lại bảng với tùy chọn BẬT XÓA CASCADE cho FK_EFastees_DepartmentID:

DROP TABLE Nhân viên TẠO BẢNG Nhân viên (ID int NOT NULL, Name nvarchar (30), Ngày sinh, Email nvarchar (30), PositionID int, DepartmentID int, ManagerID int, CONSTRAINT PK_E Employees PRIMARY KEY (ID), CONSTRAINT FK_Erantyees_DepartmentID NGOẠI KHÓA (DepartmentID) . ) CÁC GIÁ TRỊ (1000, N "Ivanov I.I.", "19550219", 2,1, NULL), (1001, N "Petrov P.P.", "19831203", 3,3.1003), (1002, N "Sidorov S.S." , "19760607", 1,2,1000), (1003, N "Andreev A.A.", "19820417", 4,3,1000)
Hãy xóa phòng ban có ID 3 khỏi bảng Phòng ban:

XÓA các bộ phận WHERE ID = 3
Hãy xem dữ liệu trong bảng Nhân viên:

CHỌN * TỪ Nhân viên

TÔI Tên Ngày sinh nhật E-mail ID vị trí DepartmentID ManagerID
1000 Ivanov I.I. 1955-02-19 VÔ GIÁ TRỊ 2 1 VÔ GIÁ TRỊ
1002 Sidorov S.S. 1976-06-07 VÔ GIÁ TRỊ 1 2 1000

Như bạn có thể thấy, dữ liệu cho bộ phận 3 cũng đã bị xóa khỏi bảng Nhân viên.

Tùy chọn BẬT CẬP NHẬT CASCADE hoạt động tương tự, nhưng nó có hiệu lực khi cập nhật giá trị ID trong thư mục. Ví dụ: nếu chúng tôi thay đổi ID vị trí trong thư mục vị trí, thì trong trường hợp này ID Cục trong bảng Nhân viên sẽ được cập nhật thành giá trị ID mới mà chúng tôi đặt trong thư mục. Nhưng trong trường hợp này, đơn giản là sẽ không thể chứng minh điều này, bởi vì. cột ID trong bảng Phòng ban có tùy chọn IDENTITY, tùy chọn này sẽ ngăn chúng tôi thực hiện truy vấn sau (thay đổi ID phòng ban 3 thành 30):

CẬP NHẬT Bộ phận SET ID = 30 WHERE ID = 3
Điều chính là hiểu bản chất của 2 tùy chọn ON DELETE CASCADE và ON UPDATE CASCADE. Tôi sử dụng các tùy chọn này trong những trường hợp rất hiếm và tôi khuyên bạn nên suy nghĩ cẩn thận trước khi chỉ định chúng trong một ràng buộc tham chiếu. nếu bạn vô tình xóa một bản ghi khỏi bảng tham chiếu, điều này có thể dẫn đến các vấn đề lớn và tạo ra phản ứng dây chuyền.

Hãy khôi phục bộ phận 3:

Cấp quyền thêm / thay đổi giá trị IDENTITY SET IDENTITY_INSERT Phòng ban ON CHÈN Phòng ban (ID, Tên) GIÁ TRỊ (3, N "IT") - từ chối thêm / thay đổi giá trị IDENTITY SET IDENTITY_INSERT Phòng ban TẮT
Xóa hoàn toàn bảng Nhân viên bằng lệnh TRUNCATE TABLE:

NHÂN VIÊN BẢNG TRUNCATE
Và một lần nữa, tải lại dữ liệu vào đó bằng lệnh INSERT trước đó:

CHÈN NHÂN VIÊN (ID, Tên, Sinh nhật, Vị trí, ID Phòng ban, ID Người quản lý) (1000, N "Ivanov II", "19550219", 2,1, NULL), (1001, N "Petrov P.P.", "19831203", 3 , 3,1003), (1002, N "Sidorov S.S.", "19760607", 1,2,1000), (1003, N "Andreev A.A.", "19820417", 4,3,1000)

Hãy tóm tắt

Hiện tại, một số lệnh DDL khác đã được thêm vào kiến ​​thức của chúng tôi:
  • Thêm thuộc tính IDENTITY vào trường - cho phép bạn làm cho trường này được điền tự động (trường bộ đếm) cho bảng;
  • BẢNG ALTER tên_bảng CỘNG list_of_fields_with_characteristics - cho phép bạn thêm các trường mới vào bảng;
  • BẢNG ALTER tên_bảng DROP COLUMN list_of_fields - cho phép bạn xóa các trường khỏi bảng;
  • BẢNG ALTER tên_bảng THÊM CONSTRAINT tên_mạch TỪ KHÓA NGOẠI TỆ(lĩnh vực) NGƯỜI GIỚI THIỆU lookup_table (các trường) - cho phép bạn xác định mối quan hệ giữa bảng và bảng tra cứu.

Các hạn chế khác - DUY NHẤT, DEFAULT, KIỂM TRA

Với ràng buộc UNIQUE, bạn có thể nói rằng giá trị cho mỗi hàng trong một trường hoặc tập hợp các trường nhất định phải là duy nhất. Trong trường hợp của bảng Nhân viên, chúng tôi có thể áp dụng hạn chế như vậy đối với trường Email. Chỉ điền trước vào Email các giá trị nếu chúng chưa được xác định:

CẬP NHẬT Nhân viên SET Email = " [email được bảo vệ]"WHERE ID = 1000 CẬP NHẬT NHÂN VIÊN ĐẶT Email =" [email được bảo vệ]"WHERE ID = 1001 CẬP NHẬT Nhân viên ĐẶT Email =" [email được bảo vệ]"WHERE ID = 1002 CẬP NHẬT NHÂN VIÊN ĐẶT Email =" [email được bảo vệ]"WHERE ID = 1003
Và bây giờ bạn có thể áp đặt một giới hạn duy nhất cho trường này:

ALTER TABLE Nhân viên THÊM CONSTRAINT UQ_E Employees_Email UNIQUE (Email)
Bây giờ người dùng sẽ không thể nhập cùng một E-Mail cho một số nhân viên.

Ràng buộc tính duy nhất thường được đặt tên như sau - đầu tiên là tiền tố "UQ_", sau đó là tên của bảng và sau dấu gạch dưới là tên của trường mà ràng buộc này được áp dụng.

Theo đó, nếu một tổ hợp các trường phải là duy nhất trong ngữ cảnh của các hàng của bảng, thì chúng tôi liệt kê chúng được phân tách bằng dấu phẩy:

ALTER TABLE table_name ADD CONSTRAINT binding_name UNIQUE (field1, field2,…)
Bằng cách thêm ràng buộc DEFAULT vào một trường, chúng ta có thể đặt một giá trị mặc định sẽ được thay thế nếu trường đó không được liệt kê trong danh sách trường của lệnh INSERT khi một bản ghi mới được chèn vào. Hạn chế này có thể được đặt trực tiếp khi tạo bảng.

Hãy thêm trường mới "Ngày tuyển dụng" vào bảng Nhân viên và đặt tên là HireDate và nói rằng giá trị mặc định cho trường này sẽ là Ngày hiện tại:

ALTER TABLE Nhân viên THÊM Ngày thuê ngày KHÔNG ĐẦY ĐỦ ĐỊNH NGHĨA SYSDATETIME ()
Hoặc nếu cột HireDate đã tồn tại, thì có thể sử dụng cú pháp sau:

ALTER TABLE Nhân viên THÊM SYSDATETIME () DEFAULT SYSDATETIME () CHO Ngày thuê
Ở đây tôi không chỉ định tên của ràng buộc, bởi vì trong trường hợp DEFAULT, tôi có ý kiến ​​rằng điều này không quá nghiêm trọng. Nhưng nếu bạn làm điều đó theo cách tốt, thì tôi nghĩ, bạn không cần phải lười biếng và bạn nên đặt một cái tên bình thường. Điều này được thực hiện như sau:

ALTER TABLE Nhân viên THÊM CONSTRAINT DF_Eaffees_HireDate DEFAULT SYSDATETIME () FOR HireDate
Giống cột nhất định không có trước đó, sau đó khi nó được thêm vào mỗi bản ghi, giá trị ngày hiện tại sẽ được chèn vào trường HireDate.

Khi thêm một mục nhập mới, tất nhiên, ngày hiện tại cũng sẽ được tự động chèn vào, nếu chúng ta không đặt nó một cách rõ ràng, tức là không được chỉ định trong danh sách các cột. Hãy hiển thị điều này với một ví dụ mà không chỉ định trường HireDate trong danh sách các giá trị được thêm vào:

CHÈN NHÂN VIÊN (ID, Tên, Email) GIÁ TRỊ (1004, N "Sergeev S.S.", " [email được bảo vệ]")
Hãy xem những gì đã xảy ra:

CHỌN * TỪ Nhân viên

TÔI Tên Ngày sinh nhật E-mail ID vị trí DepartmentID ManagerID Ngày thuê
1000 Ivanov I.I. 1955-02-19 [email được bảo vệ] 2 1 VÔ GIÁ TRỊ 2015-04-08
1001 Petrov P.P. 1983-12-03 [email được bảo vệ] 3 4 1003 2015-04-08
1002 Sidorov S.S. 1976-06-07 [email được bảo vệ] 1 2 1000 2015-04-08
1003 Andreev A.A. 1982-04-17 [email được bảo vệ] 4 3 1000 2015-04-08
1004 Sergeev S.S. VÔ GIÁ TRỊ [email được bảo vệ] VÔ GIÁ TRỊ VÔ GIÁ TRỊ VÔ GIÁ TRỊ 2015-04-08

Ràng buộc kiểm tra CHECK được sử dụng khi cần kiểm tra các giá trị được chèn vào trường. Ví dụ: hãy áp đặt hạn chế này đối với trường số nhân sự, đó là số nhận dạng nhân viên (ID) của chúng tôi. Sử dụng ràng buộc này, giả sử rằng số nhân sự phải có giá trị từ 1000 đến 1999:

ALTER TABLE Nhân viên THÊM CONSTRAINT CK_E Employees_ID CHECK (ID GIỮA 1000 VÀ 1999)
Ràng buộc thường được đặt tên giống nhau, đầu tiên là tiền tố "CK_", sau đó là tên bảng và tên trường mà ràng buộc được áp dụng.

Hãy thử chèn một mục nhập không hợp lệ để kiểm tra xem hạn chế có hoạt động hay không (chúng ta sẽ gặp lỗi tương ứng):

CHÈN NHÂN VIÊN (ID, Email) GIÁ TRỊ (2000, " [email được bảo vệ]")
Bây giờ chúng ta hãy thay đổi giá trị được chèn thành 1500 và đảm bảo rằng bản ghi đã được chèn:

CHÈN NHÂN VIÊN (ID, Email) GIÁ TRỊ (1500, " [email được bảo vệ]")
Bạn cũng có thể tạo các ràng buộc DUY NHẤT và KIỂM TRA mà không cần chỉ định tên:

BẢNG ALTER Nhân viên THÊM BẢNG ALTER DUY NHẤT (Email) Nhân viên THÊM KIỂM TRA (ID GIỮA 1000 VÀ 1999)
Nhưng đây không phải là một thực tiễn tốt và tốt hơn là chỉ định tên của ràng buộc một cách rõ ràng, bởi vì để tìm ra sau này điều gì sẽ khó khăn hơn, bạn sẽ cần phải mở đối tượng và xem nó chịu trách nhiệm gì.

Với một cái tên hay, nhiều thông tin về một ràng buộc có thể được học trực tiếp từ tên của nó.

Và theo đó, tất cả những hạn chế này có thể được tạo ngay lập tức khi tạo bảng, nếu nó chưa tồn tại. Hãy xóa bảng:

Nhân viên DROP TABLE
Và tạo lại nó với tất cả các ràng buộc đã tạo bằng một lệnh CREATE TABLE:

TẠO BẢNG Nhân viên (ID int NOT NULL, Name nvarchar (30), Ngày sinh, Email nvarchar (30), PositionID int, DepartmentID int, HireDate date NOT NULL DEFAULT SYSDATETIME (), - đối với DEFAULT, tôi sẽ ném một CONSTRAINT PK_E NHÂN VIÊN CHÍNH KEY ngoại lệ (ID), CONSTRAINT FK_EFastees_DepartmentID NGOẠI LỆ (ID), TÀI LIỆU THAM KHẢO Phòng ban (ID), CONSTRAINT FK_EFastees_PositionID FOREIGN KEY (PositionID) THAM KHẢO Vị trí (ID), CONSTRAINT UQ_EKees_Email UNIQUE9 BẰNG CHỨNG TỪ (Email),

CHÈN NHÂN VIÊN (ID, Tên, Ngày sinh, Email, ID Vị trí, ID Phòng ban) (1000, N "Ivanov I.I.", "19550219", " [email được bảo vệ]", 2,1), (1001, N" Petrov P.P. "," 19831203 "," [email được bảo vệ]", 3,3), (1002, N" Sidorov S.S. "," 19760607 "," [email được bảo vệ]", 1,2), (1003, N" Andreev A.A. "," 19820417 "," [email được bảo vệ]",4,3)

Một chút về các chỉ mục được tạo khi tạo các ràng buộc CHÍNH và KHÓA DUY NHẤT

Như bạn có thể thấy trong ảnh chụp màn hình ở trên, khi tạo ràng buộc PRIMARY KEY và UNIQUE, các chỉ mục có cùng tên (PK_Eprisees và UQ_Erantyees_Email) đã được tự động tạo. Theo mặc định, chỉ mục cho khóa chính được tạo là ĐÃ CHỈNH SỬA và cho tất cả các chỉ mục khác là KHÔNG ĐƯỢC ĐIỀU CHỈNH. Điều đáng nói là khái niệm chỉ mục được phân cụm không có sẵn trong tất cả các DBMS. Một bảng chỉ có thể có một chỉ mục ĐÃ ĐIỀU CHỈNH. CLUSTERED - có nghĩa là các bản ghi của bảng sẽ được sắp xếp theo chỉ mục này, cũng có thể nói chỉ mục này có quyền truy cập trực tiếp vào tất cả dữ liệu của bảng. Nó như vậy để nói chỉ số chính của bảng. Nói một cách thô thiển hơn nữa, nó là một chỉ số được vặn chặt vào bàn. Chỉ mục nhóm là một công cụ rất mạnh có thể giúp tối ưu hóa truy vấn, chỉ cần ghi nhớ điều đó. Nếu chúng ta muốn nói rằng chỉ mục được phân nhóm không được sử dụng trong khóa chính mà được sử dụng cho một chỉ mục khác, thì khi tạo khóa chính, chúng ta phải chỉ định tùy chọn NONCLUSTERED:

ALTER TABLE table_name ADD CONSTRAINT binding_name PRIMARY KEY NONCLUSTERED (field1, field2,…)
Ví dụ, hãy đặt chỉ mục ràng buộc PK_Eprisees không được phân cụm và chỉ mục ràng buộc UQ_Eprisees_Email được phân cụm. Trước hết, hãy loại bỏ các hạn chế sau:

BẢNG ALTER Nhân viên DROP CONSTRAINT PK_E Employees ALTER TABLE Nhân viên DROP CONSTRAINT UQ_E Employees_Email
Và bây giờ hãy tạo chúng với các tùy chọn ĐÃ ĐIỀU CHỈNH và KHÔNG ĐƯỢC ĐIỀU CHỈNH:

BẢNG ALTER Nhân viên THÊM BẢNG CHỨNG NHẬN PK_ Nhân viên CHỌN TỪ KHÓA CHÍNH KHÔNG ĐƯỢC ĐIỀU CHỈNH (ID) BẢNG ALTER Nhân viên THÊM CONSTRAINT UQ_E Nhân viên_Email KHÔNG ĐƯỢC ĐIỀU CHỈNH (Email)
Bây giờ, khi chúng ta chọn từ bảng Nhân viên, chúng ta có thể thấy rằng các bản ghi được sắp xếp theo chỉ mục nhóm UQ_EFastees_Email:

CHỌN * TỪ Nhân viên

TÔI Tên Ngày sinh nhật E-mail ID vị trí DepartmentID Ngày thuê
1003 Andreev A.A. 1982-04-17 [email được bảo vệ] 4 3 2015-04-08
1000 Ivanov I.I. 1955-02-19 [email được bảo vệ] 2 1 2015-04-08
1001 Petrov P.P. 1983-12-03 [email được bảo vệ] 3 3 2015-04-08
1002 Sidorov S.S. 1976-06-07 [email được bảo vệ] 1 2 2015-04-08

Trước đó, khi chỉ mục nhóm là chỉ mục PK_E Employees, các bản ghi được sắp xếp theo mặc định theo trường ID.

Nhưng trong trường hợp này, đây chỉ là một ví dụ cho thấy bản chất của chỉ mục được phân cụm, bởi vì. rất có thể, các truy vấn sẽ được trường ID thực hiện tới bảng Nhân viên và trong một số trường hợp, bản thân nó có thể hoạt động như một tham chiếu.

Đối với các thư mục, chúng tôi khuyên bạn nên xây dựng chỉ mục nhóm trên khóa chính, bởi vì trong các yêu cầu, chúng tôi thường đề cập đến mã định danh thư mục để lấy, ví dụ, tên (Chức vụ, Phòng ban). Ở đây chúng ta nhớ lại những gì tôi đã viết ở trên, rằng chỉ mục được phân cụm có quyền truy cập trực tiếp vào các hàng của bảng và sau đó chúng ta có thể lấy giá trị của bất kỳ cột nào mà không cần thêm chi phí.

Chỉ mục được phân nhóm có lợi khi áp dụng cho các trường được chọn thường xuyên nhất.

Đôi khi các bảng tạo khóa bằng trường thay thế, trong trường hợp này, sẽ hữu ích nếu giữ tùy chọn chỉ mục ĐÃ ĐƯỢC CẬP NHẬT để có chỉ mục thích hợp hơn và chỉ định tùy chọn KHÔNG ĐƯỢC ĐIỀU CHỈNH khi tạo khóa chính thay thế.

Hãy tóm tắt

Trên sân khấu này chúng ta đã làm quen với tất cả các loại ràng buộc, ở dạng đơn giản nhất của chúng, được tạo bằng lệnh như "ALTER TABLE table_name ADD CONSTRAINT binding_name ...":
  • KHÓA CHÍNH- khóa chính;
  • TỪ KHÓA NGOẠI TỆ- thiết lập các liên kết và giám sát tính toàn vẹn tham chiếu của dữ liệu;
  • ĐỘC NHẤT- cho phép bạn tạo ra sự độc đáo;
  • KIỂM TRA- cho phép bạn thực hiện tính chính xác của dữ liệu đã nhập;
  • MẶC ĐỊNH- cho phép bạn đặt giá trị mặc định;
  • Cũng cần lưu ý rằng tất cả các hạn chế có thể được gỡ bỏ bằng cách sử dụng lệnh " BẢNG ALTER tên_bảng DROP CONSTRAINT tên_kết_thức ”.
Chúng tôi cũng đã đề cập một phần đến chủ đề của các chỉ số và phân tích khái niệm về cụm ( ĐÃ ĐIỀU CHỈNH) và không phân cụm ( KHÔNG ĐƯỢC ĐIỀU CHỈNH) mục lục.

Tạo các chỉ mục độc lập

Tính tự túc ở đây đề cập đến các chỉ mục không được tạo cho khóa CHÍNH hoặc Ràng buộc DUY NHẤT.

Chỉ mục trên một trường hoặc các trường có thể được tạo bằng lệnh sau:

TẠO INDEX IDX_Tên nhân viên trên Nhân viên (Tên)
Bạn cũng có thể chỉ định các tùy chọn ĐÃ ĐIỀU CHỈNH, KHÔNG ĐIỀU CHỈNH, DUY NHẤT tại đây và bạn cũng có thể chỉ định hướng sắp xếp cho từng trường riêng lẻ ASC (mặc định) hoặc DESC:

TẠO CHỈ SỐ KHÔNG ĐƯỢC ĐIỀU CHỈNH DUY NHẤT UQ_E Nhân viên_EmailDesc TRÊN Nhân viên (Email DESC)
Khi tạo chỉ mục không phân cụm, có thể bỏ qua tùy chọn NONCLUSTERED, như nó được ngụ ý theo mặc định, nó được hiển thị ở đây chỉ đơn giản là để chỉ ra vị trí của tùy chọn ĐÃ ĐIỀU CHỈNH hoặc KHÔNG ĐƯỢC ĐIỀU CHỈNH trong lệnh.

Bạn có thể xóa chỉ mục bằng lệnh sau:

DROP INDEX IDX_E Employees_Name ON Nhân viên
Các chỉ mục đơn giản, giống như các ràng buộc, có thể được tạo trong ngữ cảnh của lệnh CREATE TABLE.

Ví dụ: hãy xóa bảng một lần nữa:

Nhân viên DROP TABLE
Và tạo lại nó với tất cả các ràng buộc và chỉ mục đã tạo bằng một lệnh CREATE TABLE:

TẠO BẢNG Nhân viên (ID int NOT NULL, Name nvarchar (30), Ngày sinh, Email nvarchar (30), PositionID int, DepartmentID int, HireDate date NOT NULL CONSTRAINT DF_Eaffees_HireDate DEFAULT SYSDATETIME (), ManagerID int, CONSTRAINT PK_E NHÂN VIÊN KHÓA CHÍNH (ID ), CONSTRAINT FK_Empleteees_DepartmentID NGOẠI KHÓA (ID), CONSTRAINT FK_EFastees_Manager_PositionID FOREIGN KEY (ID), NGƯỜI LAO ĐỘNG (ID) REFERENCES 1999), INDEX IDX_E Employees_Name (Tên))
Cuối cùng, chèn vào bảng nhân viên của chúng tôi:

CHÈN Nhân viên (ID, Tên, Ngày sinh, Email, ID vị trí, ID phòng ban, ID người quản lý) GIÁ TRỊ (1000, N "Ivanov II", "19550219", " [email được bảo vệ]", 2,1, NULL), (1001, N" Petrov P.P. "," 19831203 "," [email được bảo vệ]", 3,3,1003), (1002, N" Sidorov S.S. "," 19760607 "," [email được bảo vệ]", 1,2,1000), (1003, N" Andreev A.A. "," 19820417 "," [email được bảo vệ]",4,3,1000)
Ngoài ra, cần lưu ý rằng các giá trị có thể được đưa vào chỉ mục không phân cụm bằng cách chỉ định chúng trong INCLUDE. Những thứ kia. trong trường hợp này, chỉ mục INCLUDE sẽ phần nào giống với chỉ mục được phân cụm, chỉ là bây giờ chỉ mục này không được gắn vào bảng, nhưng các giá trị cần thiết được gắn vào chỉ mục. Theo đó, các chỉ mục như vậy có thể cải thiện đáng kể hiệu suất của các truy vấn chọn (SELECT), nếu tất cả các trường được liệt kê đều nằm trong chỉ mục, thì có thể không cần truy cập vào bảng. Nhưng điều này tự nhiên làm tăng kích thước của chỉ mục, bởi vì giá trị của các trường được liệt kê được trùng lặp trong chỉ mục.

Đoạn trích từ MSDN. Cú pháp lệnh chung để tạo chỉ mục

TẠO [DUY NHẤT] [ĐÃ ĐÓNG CỬA | KHÔNG CHỈNH SỬA] INDEX index_name BẬT (column [ASC | DESC] [, ... n]) [INCLUDE (column_name [, ... n])]

Hãy tóm tắt

Các chỉ mục có thể tăng tốc độ truy xuất dữ liệu (SELECT), nhưng các chỉ mục làm giảm tốc độ cập nhật dữ liệu bảng, vì sau mỗi lần sửa đổi, hệ thống sẽ cần xây dựng lại tất cả các chỉ mục cho một bảng cụ thể.

Điều mong muốn trong mỗi trường hợp là tìm ra giải pháp tối ưu, ý nghĩa vàngđể cả hiệu suất lấy mẫu và sửa đổi dữ liệu đều ngang bằng. Chiến lược tạo chỉ mục và số lượng của chúng có thể phụ thuộc vào nhiều yếu tố, chẳng hạn như tần suất dữ liệu trong bảng thay đổi.

Kết luận về DDL

Như bạn có thể thấy, ngôn ngữ DDL không phức tạp như thoạt nhìn có vẻ như. Ở đây tôi có thể trưng bày gần như tất cả các thiết kế chính của anh ấy, chỉ sử dụng ba chiếc bàn.

Cái chính là hiểu bản chất, và phần còn lại là vấn đề luyện tập.

Chúc may mắn khi thành thạo ngôn ngữ tuyệt vời này có tên là SQL.

Ngày nay, các khóa học SQL "dành cho hình nộm" ngày càng trở nên phổ biến hơn. Điều này có thể được giải thích rất đơn giản, bởi vì trong thế giới hiện đại, cái gọi là dịch vụ web "động" ngày càng phổ biến. Chúng được phân biệt bởi một lớp vỏ khá linh hoạt và dựa trên Tất cả các lập trình viên mới làm quen, những người quyết định dành các trang web, trước hết, đăng ký các khóa học SQL "cho hình nộm".

Tại sao học ngôn ngữ này?

Trước hết, SQL được dạy để tiếp tục tạo ra nhiều loại ứng dụng cho một trong những công cụ blog phổ biến nhất hiện nay - WordPress. Sau khi trải qua một vài bài học đơn giản, bạn sẽ có thể tạo các truy vấn có độ phức tạp bất kỳ, điều này chỉ xác nhận tính đơn giản của ngôn ngữ này.

SQL là gì?

Hoặc Ngôn ngữ truy vấn có cấu trúc, được tạo ra với một mục đích duy nhất: xác định cung cấp quyền truy cập vào chúng và xử lý chúng trong khoảng thời gian khá ngắn. Nếu bạn biết giá trị SQL, thì bạn sẽ thấy rõ rằng máy chủ này thuộc về cái gọi là ngôn ngữ "phi thủ tục". Có nghĩa là, khả năng của nó chỉ bao gồm mô tả về bất kỳ thành phần hoặc kết quả nào mà bạn muốn xem trong tương lai trên trang web. Nhưng khi nào thì không cho biết chính xác kết quả sẽ nhận được. Mỗi yêu cầu mới trong ngôn ngữ này, như nó vốn có, là một "cấu trúc thượng tầng" bổ sung. Theo thứ tự mà chúng được nhập vào cơ sở dữ liệu mà các truy vấn sẽ được thực thi.

Những thủ tục nào có thể được thực hiện bằng cách sử dụng ngôn ngữ này?

Mặc dù đơn giản, cơ sở dữ liệu SQL cho phép bạn tạo rất nhiều truy vấn. Vậy bạn có thể làm gì nếu học ngôn ngữ lập trình quan trọng này?

  • tạo nhiều loại bảng;
  • nhận, lưu trữ và sửa đổi dữ liệu nhận được;
  • thay đổi cấu trúc của các bảng theo ý của bạn;
  • kết hợp thông tin nhận được thành các khối đơn lẻ;
  • tính toán dữ liệu nhận được;
  • đảm bảo bảo vệ hoàn toàn thông tin.

Những lệnh nào phổ biến nhất trong ngôn ngữ này?

Nếu bạn quyết định tham gia các khóa học SQL "dành cho người giả", thì bạn sẽ nhận được thông tin chi tiết về các lệnh được sử dụng để tạo truy vấn với nó. Phổ biến nhất hiện nay là:

  1. DDL là một lệnh xác định dữ liệu. Nó được sử dụng để tạo, sửa đổi và xóa nhiều loại đối tượng trong cơ sở dữ liệu.
  2. DCL là một lệnh quản lý dữ liệu. Nó được sử dụng để cung cấp quyền truy cập cho những người dùng khác nhau vào thông tin trong cơ sở dữ liệu, cũng như để sử dụng các bảng hoặc dạng xem.
  3. TCL là một nhóm quản lý nhiều loại giao dịch. Mục đích chính của nó là xác định tiến trình của một giao dịch.
  4. DML - thao tác dữ liệu nhận được. Nhiệm vụ của nó là cho phép người dùng di chuyển thông tin khác nhau từ cơ sở dữ liệu hoặc nhập nó vào đó.

Các loại đặc quyền tồn tại trong máy chủ này

Đặc quyền là những hành động mà một người dùng cụ thể có thể thực hiện phù hợp với trạng thái của mình. Tất nhiên, điều tối thiểu nhất là đăng nhập thường xuyên. Tất nhiên, các đặc quyền có thể thay đổi theo thời gian. Những cái cũ sẽ bị loại bỏ và những cái mới được thêm vào. Ngày nay, tất cả những người tham gia khóa học SQL Server "dành cho người giả" đều biết rằng có một số loại hành động được phép:

  1. Loại đối tượng - người dùng chỉ được phép thực thi bất kỳ lệnh nào liên quan đến một đối tượng cụ thể có trong cơ sở dữ liệu. Đồng thời, các đặc quyền sẽ khác nhau đối với các đối tượng khác nhau. Chúng cũng không chỉ được gắn với một người dùng cụ thể mà còn với các bảng. Nếu ai đó, sử dụng khả năng của họ, tạo ra một bảng, thì người đó được coi là chủ sở hữu của nó. Do đó, anh ta có quyền chỉ định các đặc quyền mới cho những người dùng khác liên quan đến thông tin trong đó.
  2. Loại hệ thống được gọi là bản quyền dữ liệu. Người dùng đã nhận được các đặc quyền này có thể tạo các đối tượng khác nhau trong cơ sở dữ liệu.

Lịch sử tạo SQL

Ngôn ngữ này được tạo ra bởi Phòng thí nghiệm Nghiên cứu của IBM vào năm 1970. Vào thời điểm đó, tên của nó có phần khác biệt (SEQUEL), nhưng sau một vài năm sử dụng nó đã được thay đổi, giảm đi một chút. Mặc dù vậy, ngay cả ngày nay, nhiều chuyên gia nổi tiếng thế giới trong lĩnh vực lập trình vẫn phát âm tên theo cách cũ. SQL được tạo ra với một mục tiêu duy nhất - phát minh ra một ngôn ngữ đơn giản đến mức có thể không có vấn đề đặc biệt tìm hiểu ngay cả những người sử dụng Internet đơn giản. Một sự thật thú vị là tại thời điểm đó SQL không phải là ngôn ngữ duy nhất như vậy. Ở California, một nhóm chuyên gia khác đã phát triển một Ingres tương tự, nhưng nó chưa bao giờ trở nên phổ biến. Trước năm 1980, có một số biến thể của SQL chỉ khác nhau một chút. Để tránh nhầm lẫn, một phiên bản tiêu chuẩn đã được tạo ra vào năm 1983, phiên bản này vẫn còn phổ biến cho đến ngày nay. Các khóa học SQL "dành cho người giả" cho phép bạn tìm hiểu thêm nhiều điều về dịch vụ và hiểu đầy đủ về nó trong vài tuần.

Bộ sưu tập sách, khóa học video và tài nguyên trực tuyến để tìm hiểu về cơ sở dữ liệu, lý thuyết quan hệ và ngôn ngữ SQL.

Sách

Alan Bewley "Học SQL" (2007)

Cuốn sách này là một sự lựa chọn tuyệt vời cho những ai đang bắt đầu con đường học SQL đầy chông gai. Nó sẽ không chỉ cho phép bạn có được nền tảng kiến ​​thức ban đầu cần thiết mà còn cho bạn biết về những nét tinh tế phổ biến nhất và các tính năng mạnh mẽ của ngôn ngữ được sử dụng bởi các lập trình viên có kinh nghiệm.
Nhiều sách giáo khoa về cơ sở dữ liệu, lý thuyết quan hệ và SQL chứa đầy nền tảng lý thuyết nhàm chán. Cuốn sách này là một ngoại lệ đáng hoan nghênh do văn phong nhẹ nhàng, sống động. Tác giả trình bày một cách thành thạo cho người đọc thông tin về các câu lệnh và khối SQL, kiểu điều kiện, phép nối, truy vấn con, và nhiều hơn thế nữa.
Để củng cố kiến ​​thức thu được trong thực tế, tác giả tạo một cơ sở dữ liệu đào tạo MySQL và cung cấp nhiều ví dụ thực tế về các truy vấn bao gồm tất cả các tài liệu lý thuyết được trình bày.

Chris Fiailly "SQL" (2013)


Cuốn sách đề cập đến phiên bản ANSI SQL-92 (SQL2) của ngôn ngữ. Nó mô tả chi tiết cách sử dụng ngôn ngữ truy vấn để giải quyết các lớp tương ứng của vấn đề về lấy mẫu và sửa đổi dữ liệu cũng như cách làm việc với các đối tượng của cấu trúc cơ sở dữ liệu. Tất cả các ví dụ đều được giải thích chi tiết.
Đặc biệt chú ý trong ấn bản này là sự khác biệt về phương ngữ SQL trong việc triển khai các DBMS phổ biến nhất: MySQL, Oracle, MS SQL Server và PostgreSQL.
Cuốn sách dành cho những ai muốn độc lập học ngôn ngữ SQL hoặc nâng cao kiến ​​thức về chủ đề này.

Anthony Molinaro SQL. Tuyển tập công thức nấu ăn "(2009)


Phiên bản này dành cho những người đã có một số kiến ​​thức về SQL và muốn cải thiện kỹ năng của họ trong lĩnh vực này. Nó cũng sẽ rất hữu ích cho các chuyên gia cơ sở dữ liệu, vì tác giả đưa ra các ví dụ về cách giải quyết các vấn đề trong các DBMS khác nhau: DB2, Oracle, PostgreSQL, MySQL và SQL Server.
Cuốn sách sẽ giúp bạn học cách sử dụng SQL để giải quyết một loạt các nhiệm vụ: từ các thao tác bên trong cơ sở dữ liệu đến trích xuất dữ liệu và chuyển nó qua mạng tới các ứng dụng.
Bạn sẽ học cách sử dụng các hàm cửa sổ và các toán tử đặc biệt, cũng như các kỹ thuật kho dữ liệu nâng cao: tạo biểu đồ, tóm tắt dữ liệu thành các khối, thực hiện tổng hợp phạm vi di chuyển, chạy tổng và tổng. Bạn sẽ có thể mở rộng chuỗi thành cột và ngược lại, đơn giản hóa các phép tính trong một chuỗi và mở rộng gấp đôi tập kết quả, duyệt một chuỗi, cho phép bạn sử dụng SQL để phân tích cú pháp chuỗi thành các ký tự, từ hoặc các phần tử chuỗi được phân cách. Các kỹ thuật do tác giả đề xuất sẽ cho phép bạn tối ưu hóa mã ứng dụng của mình và mở ra cơ hội mới cho bạn trong ngôn ngữ SQL.

Alex Kriegel và cộng sự “SQL. Kinh thánh của người dùng, ấn bản thứ 2 (2010)


Cuốn sách độc đáo ở chỗ mỗi chương sẽ so sánh việc triển khai các truy vấn nhất định bằng phương ngữ của ba DBMS hàng đầu. Điều này làm cho nó trở thành một hướng dẫn toàn diện và thiết thực về ngôn ngữ SQL dành cho các nhà phát triển từ người mới bắt đầu đến người thành thạo, một loại hướng dẫn sử dụng máy tính để bàn.
Ấn phẩm bao gồm các chủ đề từ những điều cơ bản đến giao dịch và khóa, các chức năng và công cụ bảo vệ cơ sở dữ liệu.
Ở phần cuối, một số chủ đề bổ sung được trình bày: tích hợp SQL với XML, thông minh kinh doanh OLAP, v.v.

Eric Redmond, Jim R. Wilson Bảy cơ sở dữ liệu trong bảy tuần. Giới thiệu về Cơ sở dữ liệu hiện đại và Ý tưởng NoSQL "(2015)

Cuốn sách mô tả hầu hết căn cứ hiện đại dữ liệu mở mã nguồn: Redis, Neo4J, CouchDB, MongoDB, HBase, PostgreSQL và Riak. Đối với mỗi cơ sở dữ liệu, các ví dụ về cách làm việc với dữ liệu thực được đưa ra, thể hiện các ý tưởng chính và điểm mạnh.
Cuốn sách này sẽ làm sáng tỏ những điểm mạnh và điểm yếu của từng cơ sở dữ liệu trong số bảy cơ sở dữ liệu và hướng dẫn bạn cách chọn cơ sở dữ liệu đáp ứng tốt nhất nhu cầu của bạn.

Martin Graber "SQL cho những người bình thường" Laurie, 2014, 382 trang (11,2 mb. Pdf)

Cuốn sách có thể được mô tả như một hướng dẫn cho người mới bắt đầu. Ngôn ngữ truy vấn có cấu trúc - SQL, một ngôn ngữ lập trình để tạo và quản lý cơ sở dữ liệu quan hệ (một mô hình logic, ứng dụng để xây dựng một tập hợp (các cơ sở dữ liệu). Sách được biên soạn dành cho trình độ đào tạo đơn giản nhất (thấp nhất) trong lĩnh vực CNTT, tức là đủ kiến ​​thức trong khối lượng chương trình học của nhà trường. Nhưng điều này không có nghĩa là tài liệu của sách hướng dẫn chỉ là phần giới thiệu về ngôn ngữ lập trình này - không, SQL được mô tả khá sâu sắc (tuyên bố của tác giả).

Mỗi chương bổ sung thêm dữ liệu mới mô tả các khái niệm và định nghĩa liên quan. Tất cả tài liệu tiếp theo đều dựa trên tài liệu trước đó - đã được xem xét trước đó, với sự cân nhắc ở cuối chương về các vấn đề thực tế để đồng hóa tốt hơn kiến ​​thức thu được. Bạn sẽ tìm thấy câu trả lời trong Phụ lục A.

Phần giới thiệu về SQL được cung cấp trong bảy chương đầu tiên, là phần bắt buộc nếu bạn đang sử dụng sách hướng dẫn như SQL cho người mới bắt đầu. Bảy (8 đến 14) chương tiếp theo đề cập đến nhiều hơn ví dụ phức tạp: truy vấn kết hợp, truy vấn đến nhiều bảng cùng một lúc. Các tính năng SQL khác: tạo và chỉnh sửa bảng, nhập và đặt giá trị, mở và đóng quyền truy cập vào các bảng đã tạo - được mô tả trong chương 15 đến chương 23. Tóm lại, về cấu trúc của cơ sở dữ liệu và khả năng sử dụng SQL trong các chương trình được phát triển bằng các ngôn ngữ khác . Các phụ lục cung cấp hướng dẫn về các lệnh SQL và câu trả lời cho các tác vụ. Cuốn sách rất lý tưởng cho những người mới bắt đầu học SQL.
ISBN: 978-5-85582-301-1

Chương 1. Giới thiệu về cơ sở dữ liệu quan hệ 1
Cơ sở dữ liệu quan hệ là gì? 3
Cơ sở dữ liệu ví dụ 5
Kết quả 7

chương 2 Giới thiệu về SQL 9
SQL hoạt động như thế nào? mười
Nhiều kiểu dữ liệu khác nhau 12
Kết quả 15

Chương 3 Sử dụng SQLđể tìm nạp dữ liệu từ các bảng 17
Hình thành yêu cầu 18
Định nghĩa mẫu - Mệnh đề WHERE 24
Kết quả 26

Chương 4 Sử dụng toán tử quan hệ và boolean để tạo thêm vị ngữ phức tạp 29
Toán tử quan hệ 30
Toán tử Boolean 32
Kết quả 37

Chương 5 Cách sử dụng toán tử đặc biệt trong điều kiện " 39
Nhà điều hành IN 40
Toán tử GIỮA 41
Toán tử LIKE 44
IS NULL toán tử 47
Kết quả 49

Chương 6 Tổng hợp dữ liệu với một chức năng tổng hợp 51
Các chức năng tổng hợp là gì? 52
Kết quả 61

Chương 7 Định dạng kết quả truy vấn 63
Chuỗi và biểu thức 64
Trường đầu ra thứ tự 67
Kết quả 71

Chương 8 Sử dụng nhiều bảng trong một truy vấn 75
Nối các bảng 76
Kết quả 81

Chương 9 Một phép toán nối có các toán hạng được biểu diễn bằng một bảng duy nhất 83
Cách nối hai bản sao của cùng một bảng 84
Kết quả 90

Chương 10 Yêu cầu lồng vào nhau 93
Các truy vấn con được thực hiện như thế nào? 94
Kết quả 105

chương 11 Truy vấn phụ có liên quan 107
Cách tạo truy vấn con có liên quan 108
Kết quả 115

Chương 12 Sử dụng toán tử EXISTS 117
Toán tử EXISTS hoạt động như thế nào? 118
Sử dụng EXISTS với các truy vấn con có liên quan 119
Kết quả 124

Chương 13 Sử dụng BẤT KỲ, TẤT CẢ và MỘT SỐ Toán tử 127
Toán tử đặc biệt BẤT KỲ hoặc MỘT SỐ 128
Toán tử đặc biệt ALL 135
Chức năng của BẤT KỲ. TẤT CẢ và TỒN TẠI khi mất dữ liệu hoặc
với dữ liệu không xác định 139
Kết quả 143

Chương 14 Sử dụng mệnh đề UNION 145
Kết hợp nhiều truy vấn thành một truy vấn 146
Sử dụng UNION với ORDER BY 151
Kết quả 157

Chương 15 Nhập, xóa và thay đổi các giá trị 0 159
Các lệnh cập nhật DML 160
Nhập giá trị 160
Loại trừ các hàng khỏi bảng 162
Thay đổi giá trị trường 163
Kết quả 165

Chương 16 Sử dụng truy vấn con với các lệnh cập nhật 167
Sử dụng truy vấn con trong INSERT 168
Sử dụng truy vấn con với DELETE 170
Sử dụng truy vấn con với UPDATE 174
Kết quả 177

Chương 17 Tạo bảng 178
Lệnh CREATE TABLE 179
Chỉ số 181
Sửa đổi bảng đã được tạo 182
Bảng 183 ngoại lệ
Kết quả 185

Chương 18 Hạn chế đối với tập hợp giá trị dữ liệu hợp lệ 186
Các hạn chế trong bảng 195
Kết quả 197

Chương 19 Hỗ trợ toàn vẹn dữ liệu 198
Khóa ngoại và khóa mẹ 199
Ràng buộc NGOẠI KHÓA 204
Điều gì xảy ra khi bạn chạy lệnh cập nhật 209
Kết quả 211

Chương 20 Giới thiệu về Chế độ xem 212
Biểu diễn là gì? 212
TẠO CHẾ ĐỘ XEM Lệnh 221
Kết quả 223

Chương 21 Thay đổi giá trị bằng cách sử dụng chế độ xem 224
Đang cập nhật Lượt xem 228
Chọn các giá trị được lưu trữ trong các chế độ xem 232
Kết quả 235

Chương 22 Xác định quyền truy cập dữ liệu 236
Người dùng 237
Chuyển giao đặc quyền 241
Thu hồi các đặc quyền 245
Các loại đặc quyền khác 247
Kết quả 249

Chương 23 Các khía cạnh toàn cầu của SQL 250
Đổi tên bảng 252
Cơ sở dữ liệu được lưu trữ cho người dùng như thế nào? 253
Khi nào thì sự thay đổi trở thành vĩnh viễn? 255
Cách SQL hoạt động với nhiều người dùng cùng lúc Tổng cộng 259

Chương 24 Cách duy trì trật tự trong cơ sở dữ liệu SQL 261
Thư mục hệ thống 262

Các cơ sở lý thuyết của SQL Server 2012 DBMS được xem xét một cách đơn giản và dễ tiếp cận. Cài đặt, cấu hình và hỗ trợ MS SQL Server 2012. Mô tả ngôn ngữ thao tác dữ liệu Transact-SQL. Được coi là tạo cơ sở dữ liệu, sửa đổi các bảng và nội dung của chúng, truy vấn, chỉ mục, chế độ xem, trình kích hoạt, thủ tục được lưu trữ và các chức năng do người dùng xác định.
Việc triển khai bảo mật bằng cách sử dụng xác thực, mã hóa và ủy quyền được hiển thị. Việc tự động hóa các tác vụ quản trị DBMS được chú ý. Việc tạo các bản sao dự phòng của dữ liệu và thực hiện khôi phục hệ thống được xem xét. Mô tả Dịch vụ Phân tích của Microsoft, Dịch vụ Báo cáo của Microsoft và các công cụ thông minh kinh doanh khác. Công nghệ làm việc với Tài liệu XML, quản lý dữ liệu không gian, tìm kiếm toàn văn và hơn thế nữa. Dành cho người mới bắt đầu lập trình.

Trong thế giới hiện đại, thông tin có giá trị cao nhất, nhưng khả năng quản lý thông tin này cũng quan trọng không kém. Cuốn sách này viết về ngôn ngữ truy vấn SQL và quản lý cơ sở dữ liệu. Tài liệu được trình bày bắt đầu bằng mô tả các truy vấn cơ bản và kết thúc bằng các thao tác phức tạp bằng cách sử dụng các phép nối, truy vấn con và giao dịch. Nếu bạn đang cố gắng tìm hiểu cách tổ chức và quản lý cơ sở dữ liệu, cuốn sách này sẽ rất tuyệt vời. Hướng dẫn thực hành và sẽ cung cấp cho bạn tất cả các công cụ cần thiết. Phiên bản này có các tính năng Cách duy nhất bài thuyết trình làm cho bộ sách "Head First" của O \ 'Reilly trở nên khác biệt với nhiều cuốn sách lập trình nhàm chán.

Cuốn sách này sẽ dạy bạn cách làm việc với các lệnh và câu lệnh SQL, tạo và cấu hình cơ sở dữ liệu quan hệ, tải và sửa đổi các đối tượng cơ sở dữ liệu, chạy các truy vấn mạnh mẽ, cải thiện hiệu suất và xây dựng bảo mật. Bạn sẽ học cách sử dụng các câu lệnh DDL và áp dụng các API, tích hợp các tập lệnh XML và Java, sử dụng các đối tượng SQL, tạo máy chủ web, làm việc với quyền truy cập từ xa và thực hiện các giao dịch phân tán.
Trong cuốn sách này, bạn sẽ tìm thấy thông tin như mô tả về cách làm việc với cơ sở dữ liệu trong bộ nhớ, cơ sở dữ liệu trực tuyến và nhúng, cơ sở dữ liệu cho thiết bị di động và thiết bị cầm tay, v.v.

SQL for Mortals là phần giới thiệu đầy đủ về Ngôn ngữ truy vấn có cấu trúc được viết đặc biệt cho người mới bắt đầu.

Nếu bạn chưa quen với quản lý cơ sở dữ liệu, cuốn sách này sẽ dạy bạn cách làm việc với SQL một cách dễ dàng và thành thạo, sử dụng các truy vấn đơn giản và các phép toán phức tạp. Để nắm vững SQL:

- Hiểu ý nghĩa của các khái niệm liên quan đến quản lý cơ sở dữ liệu với một cách ngắn gọn và giới thiệu đơn giảnđến cơ sở dữ liệu quan hệ.
- Làm theo các hướng dẫn sau để sử dụng các lệnh SQL cơ bản để tìm và làm việc với thông tin được đặt trong bảng dữ liệu. Học cách chọn và tóm tắt dữ liệu, cũng như quản lý nó một cách khéo léo.
- Làm việc hiệu quả với các bảng dữ liệu tổng hợp bằng cách áp dụng các kỹ thuật truy vấn nâng cao cho nhiều bảng cùng lúc, xây dựng các truy vấn và truy vấn con phức tạp.
- Tạo bảng dữ liệu mới cho các ứng dụng kinh doanh bán lẻ. Tìm hiểu các nguyên tắc quan trọng của thiết kế cơ sở dữ liệu hiệu quả và các kỹ thuật để đảm bảo tính toàn vẹn và bảo vệ dữ liệu.
- Học sử dụng SQL với các ngôn ngữ lập trình bằng chương dành riêng cho lập trình viên.

SQL cũ hơn hầu hết chúng ta, vì vậy tôi không thể khẳng định mình đang truyền tải một số điều đặc biệt thông qua cuốn sách này. Điều làm cho tiêu đề này trở nên độc đáo là kích thước mảnh mai của nó. Nếu bạn đang tìm kiếm một hướng dẫn thực hành nhỏ gọn thực sự về SQL, thì cuốn sách này là dành cho bạn. Đối với người mới bắt đầu, tôi đã cố gắng giới hạn một đại dương trong một cái thùng để trang bị cho họ kiến ​​thức SQL trong thời gian ngắn nhất có thể. Ngôn ngữ SQL quá đồ sộ và việc tiếp xúc mọi khía cạnh của ngôn ngữ khổng lồ này là một công việc rất tẻ nhạt. Bỏ qua các tính năng ít được sử dụng nhất, cuốn sách này được triển khai để tập trung vào các lĩnh vực hoạt động nhiều hơn của ngôn ngữ. Nó có nghĩa là để giúp bạn học SQL một cách nhanh chóng. Nó tuân theo cách tiếp cận hướng dẫn trong khi hàng trăm bài tập thực hành được cung cấp, bổ sung thêm hình ảnh minh họa, để dạy bạn SQL trong một khoảng thời gian ngắn. Không có bất kỳ cường điệu nào, cuốn sách sẽ phơi bày SQL trong thời gian kỷ lục. Cuốn sách trình bày rõ ràng về một nền tảng miễn phí của DBMS số 1 thế giới để giới thiệu SQL: Oracle Database Express Edition. Tôi đã chọn Oracle XE vì nó miễn phí để phát triển, triển khai và phân phối; tải nhanh; và đơn giản để quản trị.

Bắt đầu sử dụng Oracle PL / SQL giúp bạn bắt đầu sử dụng ngôn ngữ cài sẵn mà mọi nhà phát triển và quản trị viên cơ sở dữ liệu Oracle phải biết. Cơ sở dữ liệu Oracle có đầy đủ các tính năng ứng dụng cài sẵn miễn phí cho việc sử dụng và PL / SQL là tấm vé để bạn tìm hiểu và sử dụng các tính năng đó từ mã của riêng bạn. Với nó, bạn có thể tập trung logic nghiệp vụ trong cơ sở dữ liệu, bạn có thể giảm tải logic ứng dụng và bạn có thể tự động hóa các tác vụ quản trị cơ sở dữ liệu và ứng dụng.

Tác giả Don Bales cung cấp trong Beginning Oracle PL / SQL một hướng dẫn có nhịp độ nhanh và đầy ví dụ. Học hỏi từ kinh nghiệm dày dặn của Don để khám phá các khía cạnh được sử dụng phổ biến nhất của PL / SQL, mà không mất thời gian vào các tính năng khó hiểu và lỗi thời.

Cuốn sách “SQL. Kinh thánh của người dùng là duy nhất ở chỗ mỗi chương so sánh việc triển khai tiêu chuẩn ngôn ngữ truy vấn SQL trong ba DBMS hàng đầu. Kết quả là một tài liệu tham khảo toàn diện và thiết thực cho người dùng cơ sở dữ liệu, từ người mới bắt đầu đến các chuyên gia. Cuốn sách này trên SQL kết hợp thuận tiện lý thuyết với thực hành, chứa mô tả về các công nghệ mới và sẽ cho phép bạn hiểu nhiều sắc thái của tiêu chuẩn ngôn ngữ truy vấn SQL và các triển khai của nó. Nó có thể được sử dụng như một tài liệu tham khảo - một loại sổ tay hướng dẫn sử dụng máy tính để bàn.
- Tìm hiểu kiến ​​thức cơ bản về ngôn ngữ truy vấn SQL và cơ sở dữ liệu quan hệ
- Học cách làm việc với bảng, dạng xem, chuỗi và các đối tượng cơ sở dữ liệu khác
- Tìm hiểu cách áp dụng các giao dịch và khóa trong môi trường nhiều người dùng
- Tìm hiểu các tính năng được cung cấp bởi tiêu chuẩn SQL và ba nhà cung cấp cơ sở dữ liệu hàng đầu
- Tìm hiểu cách truy cập siêu dữ liệu và triển khai bảo mật cơ sở dữ liệu
- Khám phá các chủ đề bổ sung: tích hợp SQL to XML, thông minh kinh doanh OLAP và hơn thế nữa

Nếu bạn có các kỹ năng HTML cơ bản, thì với sự trợ giúp của cuốn sách của Robin Nixon, một nhà phát triển giàu kinh nghiệm và là tác giả của nhiều cuốn sách làm chủ web bán chạy nhất, bạn sẽ dễ dàng học cách tạo các trang web động đặc trưng bởi cấp độ cao tương tác với người dùng.
Khám phá sự kết hợp giữa PHP và MySQL, tìm hiểu cách chúng giúp bạn dễ dàng tạo các trang web hiện đại, tìm hiểu cách thêm javascript vào các công nghệ này, cho phép bạn tạo các ứng dụng công nghệ cao.
Hướng dẫn này xem xét từng công nghệ riêng biệt, chỉ ra cách kết hợp PHP, MySQL và javascript thành một tổng thể duy nhất và giới thiệu về các khái niệm lập trình web mới nhất. Với các bài tập tình huống và câu đố chi tiết trong mỗi chương, bạn sẽ có thể áp dụng những gì đã học vào thực tế.

Hướng dẫn này sẽ giúp bạn:
- để làm chủ Kiến thức cơ bản về PHP và lập trình hướng đối tượng;
- nghiên cứu kỹ lưỡng MySQL, bắt đầu với cấu trúc của cơ sở dữ liệu và kết thúc bằng việc biên dịch các truy vấn phức tạp;
- tạo các trang web sử dụng PHP và MySQL để kết hợp các biểu mẫu và các thành phần HTML khác;
- học javascript, bắt đầu với các hàm và xử lý sự kiện và kết thúc với quyền truy cập vào Mô hình Đối tượng Tài liệu (DOM);
- sử dụng các thư viện và gói phần mềm, bao gồm hệ thống Smarty, kho phần mềm PEAR và Yahoo! giao diện người dùng;
- thực hiện các cuộc gọi Ajax và biến trang web của bạn thành một môi trường thông tin năng động;
- tải các tập tin và hình ảnh lên trang web và làm việc với chúng, kiểm tra dữ liệu do người dùng nhập vào;
- Đảm bảo tính bảo mật cho các ứng dụng của bạn.

Truy vấn không chạy đủ nhanh? Bạn đang thắc mắc về các tính năng của cơ sở dữ liệu trong bộ nhớ trong năm 2014? Bạn cảm thấy mệt mỏi với những cuộc điện thoại từ những người dùng thất vọng? Cuốn sách Điều chỉnh Hiệu suất Truy vấn SQL Server của Grant Fritchey là câu trả lời cho các vấn đề về hiệu suất truy vấn SQL Server của bạn. Cuốn sách được sửa đổi để đề cập đến những tính năng và kỹ thuật tối ưu hóa hiệu suất mới nhất, đặc biệt là bao gồm các tính năng cơ sở dữ liệu trong bộ nhớ mới được bổ sung trước đây với tên mã Project Hekaton. Cuốn sách này cung cấp các công cụ bạn cần để tiếp cận các truy vấn của mình với lưu ý đến hiệu suất.

Điều chỉnh Hiệu suất Truy vấn SQL Server giúp bạn hiểu được nguyên nhân của hiệu suất kém, cách xác định chúng và cách khắc phục chúng. Bạn sẽ học cách chủ động trong việc thiết lập đường cơ sở về hiệu suất bằng cách sử dụng các công cụ như Giám sát hiệu suất và Sự kiện mở rộng. Bạn sẽ học cách nhận ra các nút thắt cổ chai và khắc phục chúng trước khi điện thoại đổ chuông. Bạn cũng sẽ tìm hiểu một số giải pháp nhanh chóng, nhưng trọng tâm là thiết kế để đạt được hiệu suất và thực hiện đúng, đồng thời khắc phục sự cố trước khi nó xảy ra. Làm hài lòng người dùng của bạn. Tắt tiếng chuông điện thoại. Hãy áp dụng các nguyên tắc và bài học từ Điều chỉnh Hiệu suất Truy vấn SQL Server vào thực tế ngay hôm nay.

Bao gồm các tính năng trong bộ nhớ từ Project Hekaton
Giúp thiết lập các đường cơ sở về hiệu suất và giám sát chúng
Hướng dẫn khắc phục sự cố và loại bỏ tắc nghẽn khiến người dùng thất vọng
Những gì bạn sẽ học
- Thiết lập các đường cơ sở về hiệu suất và giám sát chúng
- Nhận biết và loại bỏ các tắc nghẽn dẫn đến hiệu suất chậm
- Triển khai các bản sửa lỗi nhanh chóng khi cần thiết, theo dõi các giải pháp lâu dài
- Thực hiện các phương pháp hay nhất trong T-SQL để giảm thiểu rủi ro về hiệu suất
- Thiết kế hiệu suất mà bạn cần thông qua truy vấn cẩn thận và thiết kế chỉ mục
- Tận dụng các tính năng tối ưu hóa hiệu suất mới nhất trong SQL Server 2014
- Hiểu các tính năng mới, cơ sở dữ liệu trong bộ nhớ, trước đây có tên mã là Project Hekaton

Cuốn sách SQL trong 10 phút cung cấp các giải pháp đơn giản và thiết thực cho những ai muốn đạt được kết quả nhanh chóng. Sau khi làm việc qua tất cả 22 bài học, mỗi bài học sẽ kéo dài không quá 10 phút, bạn sẽ học được mọi thứ cần thiết cho việc sử dụng SQL thực tế. Các ví dụ trong sách phù hợp với IBM DB2, Microsoft Access, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, SQLite, MariaDB và Apache OpenOffice Base. Các ví dụ minh họa sẽ giúp bạn hiểu cách cấu trúc các câu lệnh SQL. Những lời khuyên sẽ thúc đẩy các giải pháp đi tắt đón đầu. Cảnh báo giúp bạn tránh những sai lầm phổ biến. Ghi chú cung cấp thêm thông tin làm rõ.


2022, leally.ru - Hướng dẫn của bạn về thế giới máy tính và Internet