Ở đây chúng tôi tạo ba bảng trong SQL Server, sau đó phân tích tập lệnh đã tạo chúng. Chúng tôi cũng chạy một tập lệnh khác để xác minh rằng bảng đã được tạo.
Trước đây, chúng tôi đã tạo một cơ sở dữ liệu từ một tập lệnh. Tuy nhiên, cơ sở dữ liệu là cơ sở dữ liệu trống - nó không chứa bảng hoặc dữ liệu.
Bây giờ chúng ta sẽ tạo một số bảng cho cơ sở dữ liệu của chúng ta.
Đầu tiên, để làm mới, đây là những gì chúng tôi đã làm cho đến nay:
CREATE DATABASE Music;
Điều đó đã tạo ra một cơ sở dữ liệu trống. Nếu bạn chưa làm như vậy, hãy chạy tập lệnh đó.
Bây giờ hãy chạy tập lệnh sau:
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO CREATE TABLE Genres ( GenreId int IDENTITY(1,1) NOT NULL PRIMARY KEY, Genre nvarchar(50) NOT NULL ); CREATE TABLE Albums ( AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY, AlbumName nvarchar(255) NOT NULL, ReleaseDate date NOT NULL, ArtistId int NOT NULL, GenreId int NOT NULL CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId) REFERENCES dbo.Artists (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION );
Tập lệnh đó thêm ba bảng vào cơ sở dữ liệu. Các bảng được gọi là Artists
, Genres
và Albums
.
Đây là kết quả trong SQL Operations Studio / Azure Data Studio:
Bất kỳ công cụ GUI nào cũng sẽ hiển thị các bảng theo cùng một cách. Mỗi bảng có thể được mở rộng để hiển thị các cột của nó, cũng như mọi chỉ mục, trình kích hoạt, khóa, v.v. Bạn cũng có thể mở rộng Cột để hiển thị danh sách các cột và kiểu dữ liệu của chúng, cũng như bất kỳ ràng buộc nào đã được chỉ định.
Giải thích về CREATE TABLE
Tuyên bố
Tập lệnh chúng tôi vừa chạy bao gồm ba CREATE TABLE
- mỗi câu lệnh tạo một bảng khác nhau. Tập lệnh cũng thêm một ràng buộc khóa ngoại, nhưng chúng ta sẽ xem xét điều đó sau.
Bây giờ, hãy phân tích CREATE TABLE
đầu tiên tuyên bố trong tập lệnh của chúng tôi:
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO
Câu lệnh SQL này tạo một bảng có tên là Artists
với ba cột, được gọi là ArtistId
, ArtistName
và ActiveFrom
. Định nghĩa của mỗi cột bắt đầu bằng tên của nó, theo sau là kiểu dữ liệu của nó và bất kỳ ràng buộc nào được áp dụng cho cột đó.
Đây là mô tả "từng dòng một" chi tiết hơn:
-
USE Music;
- Phần này thực sự không phải là một phần của
CREATE TABLE
tuyên bố. Nó chỉ ở đó để chuyển sang Âm nhạc cơ sở dữ liệu. Có thể có nhiều cơ sở dữ liệu trên máy chủ và chúng tôi muốn đảm bảo rằng chúng tôi đang tạo các bảng trên cơ sở dữ liệu chính xác. Bạn không cần dòng này nếu bạn đã làm việc trong cơ sở dữ liệu chính xác. -
CREATE TABLE Artists (
- Đây là phần bắt đầu của
CREATE TABLE
tuyên bố. Theo sau là tên bảng (trong trường hợp này làArtists
), theo sau là dấu ngoặc đơn đầu tiên bao gồm định nghĩa bảng. -
ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
- Sau đó, chúng tôi xác định cột đầu tiên. Trong trường hợp này, chúng tôi gọi nó là
ArtistId
, chỉ định kiểu dữ liệu của nó là một số nguyên (int
), đặt nó làm cột thụt lề (cột này sẽ cung cấp ID duy nhất cho bảng và giá trị sẽ tăng lên khi mỗi hàng được thêm vào),(1,1)
có nghĩa là giá trị bắt đầu từ 1 và tăng lên 1,NOT NULL
có nghĩa là trường không được chứa giá trị rỗng vàPRIMARY KEY
đặt cột này làm khóa chính cho bảng. Một khóa chính là cột đã được định cấu hình làm trường định danh duy nhất cho bảng. -
ArtistName nvarchar(255) NOT NULL,
- Cột tiếp theo được gọi là
ArtistName
và kiểu dữ liệu của nó lànvarchar(255)
, có nghĩa là nó chấp nhận dữ liệu chuỗi Unicode có độ dài thay đổi, với độ dài tối đa là 255 ký tự. Chúng tôi cũng đặt cột này thànhNOT NULL
để nó không thể chứa các mục nhập rỗng. -
ActiveFrom date
- Cột cuối cùng được gọi là
ActiveFrom
và chúng tôi đặt nó để chấp nhận kiểu dữ liệu làdate
-
);
- Sau đó, chúng tôi sử dụng
)
để đóng định nghĩa và;
để kết thúc câu lệnh (dấu chấm phẩy là dấu chấm dứt câu lệnh). -
GO
- Báo hiệu sự kết thúc của một loạt câu lệnh Transact-SQL. Đây thực sự không phải là một câu lệnh Transact-SQL. Đây là một lệnh được công nhận bởi các tiện ích sqlcmd và osql và SQL Server Management Studio Code Editor để báo hiệu sự kết thúc của một loạt các câu lệnh Transact-SQL.
Cách truy xuất thông tin bảng khi sử dụng công cụ dòng lệnh
Khi sử dụng công cụ dòng lệnh, bạn không cần phải nhìn thấy các bảng cơ sở dữ liệu của mình đang ngồi trong bảng điều khiển bên cạnh chờ được mở rộng bằng một cú nhấp chuột. Nhưng điều đó không có nghĩa là bạn không thể xem thông tin về bảng của mình hoặc các đối tượng cơ sở dữ liệu khác.
Khi sử dụng công cụ dòng lệnh, bạn có thể chạy câu lệnh sau để hiển thị thông tin về các bảng trong cơ sở dữ liệu trên:
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns;Kết quả
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES GenreId int null NO Genre nvarchar 50 NO AlbumId int null NO AlbumName nvarchar 255 NO ReleaseDate date null NO ArtistId int null NO GenreId int null NO 10 row(s) returned Executed in 1 ms
Bảng được đề cập nằm trong cơ sở dữ liệu có tên Music vì vậy đó là lý do tại sao chúng tôi chuyển sang nó trước.
Bạn cũng có thể thu hẹp nó xuống một bảng cụ thể bằng cách sử dụng WHERE
mệnh đề:
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns WHERE table_name = 'Artists';Kết quả
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES 3 row(s) returned Executed in 1 ms
Có nhiều trường khác có thể được trả về bằng information_schema.columns
. Bạn có thể sử dụng SELECT *
để trả lại tất cả chúng nếu bạn muốn.
Phương thức dòng lệnh để truy xuất thông tin bảng cũng hoạt động khi sử dụng công cụ GUI (xét cho cùng, chúng chỉ là các câu lệnh SQL). Bạn có thể nhập các câu lệnh SQL giống nhau để truy xuất cùng một dữ liệu cho dù bạn sử dụng sql-cli, sqlcmd, SSMS, Azure Data Studio, DBeaver hoặc bất kỳ công cụ quản lý SQL Server nào khác:
GO
Lệnh
Bạn có thể cần thêm GO
vào cuối tập lệnh (ví dụ:khi sử dụng sqlcmd).
Nhiều dòng
Bạn có thể thấy rằng mình gặp lỗi nếu bạn cố gắng trải các tập lệnh trên qua nhiều dòng bằng công cụ dòng lệnh.
Nếu đúng như vậy, hãy thử thêm dấu gạch chéo ngược vào cuối mỗi dòng. Như thế này:
USE Music; \ SELECT column_name, data_type, character_maximum_length, is_nullable \ FROM information_schema.columns;
Nếu bạn không thích ý tưởng phải thêm dấu gạch chéo ngược, một tùy chọn khác là lưu tập lệnh nhiều dòng vào tệp .sql, sau đó chạy nó từ dấu nhắc lệnh.
Phương thức chạy tập lệnh từ dấu nhắc lệnh sẽ phụ thuộc vào tiện ích dòng lệnh bạn sử dụng.
Đây là cách sử dụng sqlcmd để chạy tệp được lưu trên máy Windows:
sqlcmd -S myServer\instanceName -i C:\myScript.sql
Và đây là cách sử dụng sql-cli để chạy tệp được lưu trên máy Mac:
.run /myScript.sql
Rõ ràng, đường dẫn đầy đủ và tên tệp sẽ phụ thuộc vào tên tệp của bạn và nơi bạn lưu nó.