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

Cách tạo bảng trong SQL - Truy vấn mẫu Postgres và MySQL

Biết cách tạo bảng trong SQL là một khái niệm quan trọng và cơ bản.

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn về SQL cú pháp cho CREATE TABLE câu lệnh sử dụng mã ví dụ cho cả PostgreSQL và MySQL.

Cơ bản CREATE TABLE Cú pháp

Đây là cú pháp cơ bản cho CREATE TABLE tuyên bố:

CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
);

Đối với phần đầu tiên, bạn cần bắt đầu với CREATE TABLE theo sau là tên của bảng bạn muốn tạo.

Nếu tôi muốn tạo một bảng thông tin về giáo viên, thì tôi sẽ viết một cái gì đó như sau:

CREATE TABLE teachers();

Bên trong dấu ngoặc đơn, bạn sẽ thêm thông tin để tạo các cột cho bảng. Nếu bạn quên dấu ngoặc đơn, bạn sẽ nhận được thông báo lỗi.

CREATE TABLE teachers;

Dấu chấm phẩy ở cuối dấu ngoặc đơn cho máy tính biết đây là phần cuối của SQL tuyên bố. Đôi khi bạn sẽ nghe điều này được gọi là dấu chấm dứt câu lệnh.

MySQL là gì công cụ lưu trữ?

Theo MySQL tài liệu:

Công cụ lưu trữ là các thành phần MySQL xử lý các hoạt động SQL cho các loại bảng khác nhau.

MySQL sử dụng các công cụ lưu trữ này để thực hiện các hoạt động CRUD (tạo, đọc, cập nhật và xóa) trên cơ sở dữ liệu.

Trong MySQL , bạn có tùy chọn để chỉ định loại công cụ lưu trữ bạn muốn sử dụng cho bảng của mình. Nếu bạn bỏ qua ENGINE thì mặc định sẽ là InnoDB.

CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
)ENGINE=storage_engine;

IF NOT EXISTS là gì mệnh đề?

Có một mệnh đề tùy chọn được gọi là IF NOT EXISTS điều đó sẽ kiểm tra xem bảng bạn muốn tạo đã tồn tại trong cơ sở dữ liệu hay chưa. Bạn có thể đặt mệnh đề đó ngay trước tên bảng.

CREATE TABLE IF NOT EXISTS teachers();

Nếu bảng đã tồn tại, thì máy tính sẽ không tạo bảng mới.

Nếu bạn bỏ qua IF NOT EXISTS và cố gắng tạo một bảng đã tồn tại trong cơ sở dữ liệu, sau đó bạn sẽ nhận được thông báo lỗi.

Trong ví dụ này, lần đầu tiên tôi tạo một bảng có tên là giáo viên. Nhưng nếu tôi cố gắng tạo cùng một bảng đó trong lệnh tiếp theo, tôi sẽ gặp lỗi.

CREATE TABLE IF NOT EXISTS teachers();
CREATE TABLE teachers();

Cách tạo cột trong bảng

Bên trong dấu ngoặc đơn cho CREATE TABLE , bạn sẽ liệt kê tên của các cột bạn muốn tạo cùng với các kiểu dữ liệu và ràng buộc của chúng.

Đây là một ví dụ về cách chúng tôi có thể thêm bốn cột của school_id , name , emailage đến bàn giáo viên của chúng tôi. Mỗi tên cột nên được phân tách bằng dấu phẩy.

CREATE TABLE teachers(
	school_id data_type column_constraint, 
	name data_type column_constraint,
    email data_type column_constraint, 
	age data_type column_constraint
);

Theo MySQL tài liệu:

MySQL có giới hạn cứng là 4096 cột trên mỗi bảng, nhưng tối đa hiệu dụng có thể ít hơn đối với một bảng nhất định. Giới hạn cột chính xác phụ thuộc vào một số yếu tố.

Nếu bạn đang làm việc trên MySQL nhỏ hơn các dự án cá nhân, thì bạn có thể sẽ không phải lo lắng về việc vượt quá số cột cho các bảng của mình.

Theo tài liệu PostgreSQL, có giới hạn 1600 cột trên mỗi bảng. Tương tự với MySQL , một giới hạn chính xác có thể thay đổi tùy thuộc vào dung lượng ổ đĩa hoặc các hạn chế về hiệu suất.

Kiểu dữ liệu trong SQL

Khi bạn đang tạo các cột trong bảng, bạn cần gán cho nó một kiểu dữ liệu. Kiểu dữ liệu mô tả kiểu giá trị bên trong các cột.

Dưới đây là sáu loại phổ biến của kiểu dữ liệu trong SQL :

  1. Numeric (int, float, serial, decimal, v.v.)
  2. Dữ liệu và thời gian (dấu thời gian, dữ liệu, thời gian, v.v.)
  3. Ký tự và chuỗi (char, varchar, text, v.v.)
  4. Unicode (ntext, nvarchar, v.v.)
  5. Binary (nhị phân, v.v.)
  6. Khác (xml, bảng, v.v.)

Bài viết này sẽ không đi sâu vào từng kiểu dữ liệu đơn lẻ mà sẽ đề cập đến một số kiểu dữ liệu phổ biến.

Đây là danh sách đầy đủ của PostgreSQL kiểu dữ liệu và MySQL Loại dữ liệu.

SERIAL là gì và AUTO_INCREMENT ?

Trong PostgreSQL , một SERIAL kiểu dữ liệu là một số nguyên sẽ tự động tăng lên một cho mỗi hàng mới được tạo.

Chúng tôi có thể thêm SERIAL ngay sau school_id trong bảng giáo viên của chúng tôi.

school_id SERIAL

Trong MySQL , bạn sẽ sử dụng AUTO_INCREMENT thay vì SERIAL . Trong ví dụ này, INT kiểu dữ liệu được sử dụng đại diện cho một số nguyên.

school_id INT AUTO_INCREMENT

Nếu chúng tôi thêm năm hàng vào bảng giáo viên của mình, đầu ra sẽ hiển thị các số 1, 2, 3, 4, 5 cho school_id vì số nguyên tự động tăng một cho mỗi hàng mới.

VARCHAR là gì loại dữ liệu?

A VARCHAR kiểu dữ liệu là độ dài chuỗi thay đổi, nơi bạn có thể đặt độ dài ký tự tối đa.

Đây là một ví dụ về việc sử dụng VARCHAR kiểu dữ liệu cho nameemail cột trong bảng giáo viên của chúng tôi. Số 30 là độ dài ký tự tối đa.

name VARCHAR(30) column_constraint,
email VARCHAR(30) column_constraint,

Cột Ràng buộc trong SQL

Đây là những quy tắc được áp dụng cho dữ liệu bên trong các cột của bảng.

Dưới đây là danh sách một số ràng buộc cột phổ biến hơn:

  • KHÓA CHÍNH - khóa này đóng vai trò là mã định danh duy nhất cho bảng
  • KEY FOREIGN - khóa này đảm bảo rằng các giá trị trong một cột cũng có trong một bảng khác. Điều này phục vụ như một liên kết giữa các bảng.
  • DUY NHẤT - tất cả các giá trị trong cột cần phải là duy nhất
  • NOT NULL - các giá trị không được NULL. NULL là trường hợp không có giá trị
  • KIỂM TRA - kiểm tra một giá trị so với biểu thức boolean

Ví dụ về PRIMARYFOREIGN chìa khóa

Trong bảng giáo viên của chúng tôi, chúng tôi có thể thêm một PRIMARY KEY tới school_id cột.

Đây là mã sẽ trông như thế nào trong PostgreSQL:

 school_id SERIAL PRIMARY KEY

Đây là mã sẽ trông như thế nào trong MySQL:

school_id INT AUTO_INCREMENT PRIMARY KEY

Nếu bạn muốn có nhiều hơn một cột cho PRIMARY KEY , sau đó bạn sẽ thêm nó ngay sau khi tạo cột của mình.

CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
    PRIMARY KEY (column1, column2)
);

Nếu bạn muốn liên kết một bảng này với một bảng khác thì bạn có thể sử dụng FOREIGN KEY .

Giả sử chúng ta có một bảng được gọi là district_employees với khóa chính là district_id . Đây là mã sẽ trông như thế nào trong PostgreSQL:

CREATE TABLE district_employees(
   district_id SERIAL PRIMARY KEY,
   employee_name VARCHAR(30) NOT NULL,
   PRIMARY KEY(district_id)
);

Trong bảng giáo viên của chúng tôi, chúng tôi có thể sử dụng khóa ngoại và tham chiếu đến bảng district_employees.

district_id INT REFERENCES district_employees(district_id),
CREATE TABLE teachers(
    school_id SERIAL PRIMARY KEY,
    district_id INT REFERENCES district_employees(district_id),
    column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc 
);

Ví dụ về NOT NULL , CHECKUNIQUE

Nếu chúng tôi muốn đảm bảo rằng chúng tôi không có bất kỳ giá trị nào là null, chúng tôi có thể sử dụng NOT NULL hạn chế.

name VARCHAR(30) NOT NULL

Chúng ta có thể sử dụng CHECK hạn chế để đảm bảo rằng tất cả giáo viên của chúng tôi đều từ 18 tuổi trở lên. CHECK ràng buộc kiểm tra một giá trị so với một biểu thức boolean.

age INT CHECK(age >= 18)

Nếu một trong các giá trị của chúng tôi không đáp ứng điều kiện đó, thì chúng tôi sẽ nhận được thông báo lỗi.

Chúng ta có thể sử dụng UNIQUE ràng buộc để đảm bảo rằng tất cả các email là duy nhất.

email VARCHAR(30) UNIQUE

Đây là kết quả cuối cùng của bảng giáo viên:

Đây là mã sẽ trông như thế nào trong PostgreSQL:

CREATE TABLE teachers(
	school_id SERIAL PRIMARY KEY,
	name VARCHAR(30) NOT NULL,
    email VARCHAR(30) UNIQUE,
	age INT CHECK(age >= 18)      
);

Đây là mã sẽ trông như thế nào trong MySQL:

CREATE TABLE teachers(
	school_id INT AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(30) NOT NULL,
    email VARCHAR(30) UNIQUE,
	age INT CHECK(age >= 18)      
);

Tôi hy vọng bạn thích bài viết này và chúc bạn may mắn trong hành trình SQL của mình.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cách xóa các hàng trùng lặp khỏi một bảng trong mysql

  2. Cách tham gia hai bảng trong MySQL

  3. Chọn truy vấn mysql giữa ngày?

  4. MySQL Thêm Ràng buộc Duy nhất

  5. Tôi nên sử dụng loại / độ dài cột nào để lưu trữ mật khẩu được băm Bcrypt trong Cơ sở dữ liệu?