Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tạo bảng trong SQL Server 2017

Ở đâ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 , GenresAlbums .

Đâ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 , ArtistNameActiveFrom . Đị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ành NOT 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ó.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn trình kích hoạt Cập nhật cách xác định xem chèn hoặc cập nhật

  2. Làm cách nào để chuyển đổi bigint (dấu thời gian UNIX) thành datetime trong SQL Server?

  3. làm thế nào để tách chuỗi thành các cột khác nhau?

  4. Thay thế một chuỗi bằng một chuỗi khác trong SQL Server (T-SQL)

  5. Các trường hợp sử dụng để chọn CHAR qua VARCHAR trong SQL là gì?