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

Tên ràng buộc mặc định trong MySQL là gì?

Vấn đề:

Bạn muốn biết tên mặc định của các ràng buộc trong bảng trong MySQL.

Ví dụ:

Trong cơ sở dữ liệu của chúng tôi, chúng tôi tạo hai bảng, countrystudent , với các ràng buộc sau:PRIMARY KEY (id cột trong bảng countrystudent ), FOREIGN KEY (cột country_id trong bảng student ), DEFAULT (tên cột trong bảng student ), UNIQUE (cột name trong bảng country và cột personal_number trong bảng student ) và CHECK (cột age trong bảng student ).

Giải pháp:

CREATE TABLE country (
id int NOT NULL primary key,
name varchar(100) UNIQUE
);

CREATE TABLE student (
id int NOT NULL primary key,
name varchar(100) NOT NULL DEFAULT 'unknown',
personal_number varchar(100) UNIQUE,
age int CHECK(age>15),
country_id int,
FOREIGN KEY(country_id) REFERENCES country(id)
);

Hãy hiển thị cách MySQL đặt tên cho các ràng buộc của các bảng này theo mặc định. Sử dụng truy vấn này để xem chúng:

SELECT TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME
FROM information_schema.table_constraints
WHERE table_name='country' OR table_name='student';

Đây là kết quả:

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
country TỪ KHÓA CHÍNH CHÍNH
country DUY NHẤT tên
sinh viên TỪ KHÓA CHÍNH CHÍNH
sinh viên DUY NHẤT personal_number
sinh viên KEY NGOẠI HỐI student_ibfk_1
sinh viên KIỂM TRA student_chk_1

Thảo luận:

Khi chúng tôi tạo bảng của mình, chúng tôi đặt các ràng buộc cho một số cột. Tuy nhiên, chúng tôi không chỉ định tên cho các ràng buộc này, vì vậy chúng được đặt tên theo mặc định trong MySQL. Trong MySQL, các loại ràng buộc mặc định là PRIMARY KEY , FOREIGN KEY , UNIQUECHECK . Các tên mặc định được tạo cho các ràng buộc như thế nào?

Ràng buộc PRIMARY KEY constraint được đặt tên đơn giản là PRIMARY , vì luôn có một khóa chính trong bảng. Có hai ràng buộc có tên là PRIMARY trong kết quả ở trên, nhưng các bảng mà chúng thuộc về khác nhau.

Đối với FOREIGN KEY , tên tuân theo quy ước:tên bảng, một dấu gạch dưới (‘_ ’),‘ ibfk ’, Một dấu gạch dưới khác (‘ _ '), Và một số. Ví dụ của chúng tôi, nó là student_ibfk_1 trong bảng student .

Tên mặc định cho CHECK tương tự như ràng buộc của khóa ngoại. Nó bắt đầu bằng tên bảng, một dấu gạch dưới (‘_ ’),‘ chk ’, Một dấu gạch dưới khác (‘ _ '), Và một số. Ví dụ của chúng tôi, nó là student_chk_1 trong bảng student .

Tên mặc định của UNIQUE ràng buộc là tên của chính cột đó. Ví dụ của chúng tôi, nó là personal_number trong bảng student . Khi có nhiều cột với UNIQUE ràng buộc, nó sử dụng tên của cột đầu tiên trong định nghĩa của ràng buộ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. Tương đương với hàm SQLServer SCOPE_IDENTITY () trong mySQL?

  2. Cách tối ưu hóa cơ sở dữ liệu trang web

  3. MySqlCommand Command.Parameters.Add đã lỗi thời

  4. Tạo một truy vấn mysql động bằng cách sử dụng các biến php

  5. Cách nhận lời nhắc bằng MOD () trong PostgreSQL, MS SQL Server và MySQL