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

SQL CREATE TABLE cho người mới bắt đầu

Bài viết này chứa CREATE TABLE cơ bản của SQL các câu lệnh mà người mới bắt đầu có thể sử dụng để tạo các bảng cơ bản cho các dự án cơ sở dữ liệu của họ.

Cú pháp cơ bản

Cú pháp cơ bản để tạo bảng trong SQL như sau:

CREATE TABLE TableName (
    Column1 datatype optional_constraints,
    Column2 datatype optional_constraints,
    Column3 datatype optional_constraints,
    ...
);

Ở đâu:

  • TableName là tên bạn muốn đặt cho bảng
  • Column1 , v.v. là những tên bạn đặt cho các cột của mình
  • datatype là kiểu dữ liệu mà bạn gán cho mỗi cột. Hầu hết các RDBMS đều yêu cầu bạn gán một kiểu dữ liệu cho mỗi cột. Trong SQLite, nó là tùy chọn.
  • optional_constraints là danh sách tùy chọn các ràng buộc mà bạn áp dụng cho một cột.

Lưu ý rằng hầu hết các DBMS sử dụng cú pháp phức tạp hơn cú pháp này (tức là chúng cung cấp nhiều tùy chọn hơn), nhưng đây thường là cú pháp cơ bản cần thiết để tạo bảng. Hầu hết người mới bắt đầu bắt đầu với cú pháp này, sau đó tìm hiểu các tùy chọn nâng cao hơn khi họ tiến bộ.

Ví dụ cơ bản

Đây là một ví dụ cơ bản:

CREATE TABLE Pets
(
    PetId       int NOT NULL PRIMARY KEY,
    PetTypeId   int NOT NULL,
    OwnerId     int NOT NULL,
    PetName     varchar(60) NOT NULL,
    DOB         date NULL
);

Dưới đây là một số điểm cần lưu ý:

  • Trong mọi trường hợp, tên bảng và cột có thể được đặt trong bất kỳ trường hợp nào. Ví dụ:thay vì PetId Tôi có thể gọi nó là petid , PETID hoặc pet_id . Một số DBMS (ví dụ:Postgres) có phân biệt chữ hoa chữ thường khi bạn truy vấn bảng và tên cột của chúng, trong khi những thứ khác thì không (ví dụ:SQL Server).
  • Một số DBMS sử dụng các tên khác nhau cho các kiểu dữ liệu của chúng.
  • NOT NULL là một ràng buộc bảng chỉ định rằng cột này phải chứa một giá trị (tức là nó không được chứa NULL giá trị).
  • NULL có nghĩa là cột được phép chứa NULL các giá trị. Một số DBMS (chẳng hạn như DB2) không hỗ trợ NULL từ khóa, và do đó bạn sẽ cần phải loại bỏ nó khi làm việc với các DBMS như vậy.
  • PRIMARY KEY thêm ràng buộc khóa chính vào bảng. Bạn nên chỉ định khóa chính trên tất cả các bảng của mình.
  • Nếu một bảng có cùng tên đã tồn tại trong cơ sở dữ liệu, bạn sẽ gặp lỗi. Bạn cần phải xóa hoặc thay đổi bảng hiện có (hoặc thay đổi tên của bảng mà bạn đang tạo).

Tạo bảng với các khóa ngoại

Ví dụ sau tạo một bảng có hai khóa ngoại. Khóa ngoại được sử dụng để tạo mối quan hệ giữa hai bảng.

CREATE TABLE Pets
(
    PetId       int NOT NULL PRIMARY KEY,
    PetTypeId   int NOT NULL REFERENCES PetTypes (PetTypeId),
    OwnerId     int NOT NULL REFERENCES Owners (OwnerId),
    PetName     varchar(60) NOT NULL,
    DOB         date NULL
);

REFERENCES mệnh đề được sử dụng để xác định một khóa ngoại đối với hai cột. Trong trường hợp của chúng tôi, các khóa ngoại thực thi những điều sau:

  • Pets.PetTypeId tham chiếu cột PetTypes.PetTypeId (bất kỳ giá trị nào đi vào Pets.PetTypeId cột phải có giá trị phù hợp trong PetTypes.PetTypeId cột).
  • Pets.OwnerId tham chiếu cột Owners.OwnerId (bất kỳ giá trị nào đi vào Pets.OwnerId cột phải có giá trị phù hợp trong Owners.OwnerId cột).

Các khóa ngoại cũng có thể được thêm sau đó, sử dụng ALTER TABLE tuyên bố nếu được yêu cầu.

Tạo bảng với Ràng buộc DEFAULT

Ví dụ sau tạo một bảng với DEFAULT ràng buộc.

CREATE TABLE OrderItems
(
    OrderId     int NOT NULL PRIMARY KEY,
    OrderItem   int NOT NULL,
    ProductId   int NOT NULL,
    Quantity    int NOT NULL DEFAULT 1,
    ItemPrice   decimal(8,2) NOT NULL 
);

Tạo bảng có cột dấu thời gian

Bạn có thể sử dụng DEFAULT ràng buộc để tự động chèn ngày và giờ hiện tại vào một cột bất cứ khi nào một hàng mới được chèn. Điều này thường được gọi là chèn dấu thời gian.

Các DBMS khác nhau sử dụng các chức năng khác nhau để trả về ngày hiện tại.

Đây là một ví dụ về cách làm điều đó trong SQL Server.

CREATE TABLE Users
(
    UserId         int NOT NULL PRIMARY KEY,
    FirstName      varchar(60) NOT NULL,
    LastName       varchar(60) NOT NULL,
    DateInserted   datetime DEFAULT CURRENT_TIMESTAMP
);

Trong SQL Server, CURRENT_TIMESTAMP là ANSI tương đương với GETDATE() chức năng.

Ngoài ra, bạn có thể sử dụng SYSDATETIME() để có dấu thời gian chính xác cao hơn:

CREATE TABLE Users
(
    UserId         int NOT NULL PRIMARY KEY,
    FirstName      varchar(60) NOT NULL,
    LastName       varchar(60) NOT NULL,
    DateInserted   datetime2 DEFAULT SYSDATETIME()
);

Để hỗ trợ độ chính xác cao hơn, loại dữ liệu của cột phải là datetime2 .

SQL Server có khá nhiều kiểu dữ liệu cho các giá trị ngày / giờ. Xem các hàm ngày và giờ của SQL Server để biết danh sách.

Mỗi DBMS có các chức năng riêng để trả về ngày và giờ. Dưới đây là danh sách những cái chính:

DB2 CURRENT_DATE
MySQL CURRENT_DATE hoặc NOW()
Oracle SYSDATE
PostgreSQL CURRENT_DATE
Máy chủ SQL CURRENT_TIMESTAMP , GETDATE() hoặc SYSDATETIME()
SQLite datetime('now')

Cũng xem:

  • Hàm Ngày và Giờ của SQL Server
  • Hàm Ngày và Giờ trong SQLite

Tạo một cột có giá trị tự động tăng lên

Đôi khi bạn cần tạo một cột tự động tăng giá trị bất cứ khi nào một hàng mới được chèn vào. Những cột này thường được gọi là cột "tự động tăng" hoặc "nhận dạng", tùy thuộc vào DBMS đang được sử dụng.

Trong SQL Server, sử dụng IDENTITY đối số:

CREATE TABLE Users
(
    UserId         int NOT NULL IDENTITY(1,1) PRIMARY KEY,
    FirstName      varchar(60) NOT NULL,
    LastName       varchar(60) NOT NULL,
    DateInserted   datetime2 DEFAULT SYSDATETIME()
);

Trong trường hợp này, chúng tôi sử dụng IDENTITY(1,1) .

  • 1 đầu tiên là hạt giống. Điều này chỉ định giá trị nào để bắt đầu đếm (tức là đây là giá trị của hàng đầu tiên được chèn vào bảng).
  • 1 thứ hai là số gia. Đây là giá trị gia tăng được thêm vào giá trị nhận dạng của hàng trước đó đã tải.

Mỗi DBMS có từ khóa riêng để tạo cột tự động tăng dần.

  • Trong MySQL và MariaDb, sử dụng AUTO_INCREMENT
  • Trong SQLite, bạn có một số tùy chọn (bao gồm AUTOINCREMENT từ khóa)
  • Trong PostgreSQL, sử dụng SERIAL
  • Từ Cơ sở dữ liệu Oracle 12 c , bây giờ bạn có thể sử dụng từ khóa IDENTITY để tạo các cột tự động tăng dần. Một ví dụ có thể giống như sau:UserId NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY

Tùy chọn nâng cao

Hầu hết các DBMS đều cho phép bạn chỉ định các tùy chọn nâng cao khi tạo bảng. Các tùy chọn có sẵn sẽ phụ thuộc phần lớn vào DBMS của bạn.

Tham khảo tài liệu DBMS của bạn nếu bạn cần các tùy chọn không được chỉ định trong bài viết này.

Nhiều tùy chọn nâng cao có thể được đặt thông qua GUI (tùy thuộc vào công cụ bạn sử dụng để kết nối với cơ sở dữ liệu của mình). Bạn luôn có thể tạo hoặc sửa đổi bảng thông qua GUI, sau đó sử dụng tùy chọn “Tập lệnh khi tạo” (hoặc tương tự) để xem mã SQL mà bạn cần chạy để tạo một bảng như vậy. Bạn có thể lấy mã này và thay đổi tên bảng, tên cột, v.v. để tạo một bảng hoàn toàn mới dựa trên định nghĩa của bảng trước đó.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Một giải pháp thay thế cho:Con trỏ không được hỗ trợ trên bảng có chỉ mục chuỗi cột được phân cụm

  2. Đẩy xuống tổng hợp được nhóm

  3. BẢNG SQL

  4. Sách thứ hai có thể đọc được trên ngân sách

  5. Mô hình dữ liệu ngày quan trọng