Thay đổi tên cột

Chúng ta cũng cần xử lý các tên cột. Mặt khác, chúng tôi lặp lại tên và id, nhưng chúng chứa dữ liệu khác nhau. Mặt khác, có cột id đầu tiên và cột employee_id chứa cùng một dữ liệu.

Hãy viết một truy vấn, trong đó sẽ chỉ có các cột cần thiết, đồng thời đổi tên các cột có cùng tên:

SELECT  
    task.id AS task_id,  
    task.name AS task_desc, 
    task.deadline AS deadline, 
    emploee.id AS emploee_id,  
    emploee.name AS emp_name,  
emploee.occupation AS	
    emp_occupation 
FROM employee, task
WHERE emploee.id = task.emploee_id

Và kết quả của truy vấn này:

task_id task_desc thời hạn nhân viên_id emp_name emp_occupation
1 Sửa lỗi ở frontend 2022-06-01 1 Ivanov Ivan lập trình viên
2 Sửa lỗi trên backend 2022-06-15 2 Petrov Petr lập trình viên
7 Tận hưởng cuộc sống (VÔ GIÁ TRỊ) 4 Rabinovich Moisha Giám đốc
3 Mua cà phê 2022-07-01 5 kirienko anastasia Quản lý văn phòng
4 Mua cà phê 2022-08-01 5 kirienko anastasia Quản lý văn phòng
5 Mua cà phê 2022-09-01 5 kirienko anastasia Quản lý văn phòng
số 8 Tận hưởng cuộc sống (VÔ GIÁ TRỊ) 6 Vaska con mèo

Tuyệt vời, vấn đề với các tên cột khó hiểu đã được giải quyết thành công. Truy vấn hơi dài, nhưng mọi thứ đều rõ ràng trong bảng kết quả. Và không có cột phụ.

Bí danh bảng

Đôi khi tên bảng quá dài và chiếm nhiều dung lượng trong truy vấn. Do đó, những người tạo SQL, để cải thiện khả năng đọc, như trong trường hợp cột, đã cung cấp khả năng chỉ định bí danh bảng.

Dạng chung của bí danh (bí danh bảng) như sau:

FROM table1 alias1, table2 alias2

Hãy viết lại truy vấn trước đó của chúng ta với bí danh ngắn:

SELECT  
    t.id AS task_id,  
    t.name AS task_desc, 
    t.deadline AS deadline, 
    e.id AS emploee_id,  
    e.name AS emp_name,  
    e.occupation AS emp_occupation 
    FROM employee e, task t 
WHERE e.id = t.emploee_id

Khả năng đọc đã giảm nhẹ, nhưng điều này là do tên của các bảng ban đầu đơn giản và rõ ràng. Nó cũng có thể là như thế này:

SELECT  
  	task.id AS task_id,  
  	task.name AS task_desc, 
  	task.deadline AS deadline, 
  	emploee.id AS emploee_id,  
  	emploee.name AS emp_name,  
emploee.occupation AS	
  	emp_occupation 
FROM  
  	Microsoft_it_department_employee employee, 
  	Year2022_priority_task task 
WHERE emploee.id = task.emploee_id 

Và trong trường hợp này, bí danh đã hữu ích, phải không? ;)

khóa chính

Và một thông tin quan trọng nữa về các bảng. Hãy nhớ rằng chúng tôi đã có một cột employee_id trong bảng nhiệm vụ? Với nó, chúng tôi đã tham chiếu ID nhân viên từ bảng nhân viên.

Nếu chúng ta muốn tham chiếu từ một bảng đến các hàng của một bảng khác, thì bảng được tham chiếu phải có một cột có ID, còn được gọi là khóa chính - PRIMARY KEY .

Thông thường, đây là cột được thêm đặc biệt có loại giá trị là int . Khi thêm các bản ghi vào một bảng, SQL sẽ tự động đặt giá trị của cột này.

Sau đó, rất nhiều thứ được gắn với các phím này:

  • liên kết các bảng khác nhau với nhau;
  • tìm kiếm và lọc nhanh theo id;
  • tính toàn vẹn của dữ liệu trong cơ sở dữ liệu (không có tham chiếu đến id không tồn tại);
  • xóa dữ liệu mà không ai đề cập đến;
  • và nhiều nhiều người khác.

Nhân tiện, có những tình huống khi một bảng có cái gọi là khóa tự nhiên . Đây là khi có một cột có nội dung ngụ ý tính duy nhất. Ví dụ: chúng tôi quyết định thêm vào bảng nhân viên:

  • Thứ tự họ đến công ty;
  • Số thuế;
  • Số và sê-ri của hộ chiếu.

Đôi khi các nhà thiết kế cơ sở dữ liệu sử dụng khóa tự nhiên làm khóa chính, nhưng thường thì chúng được sử dụng riêng. Rốt cuộc, các bản ghi có thể bị xóa, thay đổi, v.v.

Tôi cho rằng bạn đã đọc những câu chuyện trên Internet khi các thừa phát lại treo các khoản nợ mang tên đầy đủ của anh ta lên một người? Điều này chỉ liên quan đến khái niệm khóa duy nhất. Rất thuận tiện cho các ngân hàng và thừa phát lại tìm kiếm một người theo họ tên và năm sinh. Và trong 99% trường hợp, điều này là đủ để xác định một người.

Nhưng <1% còn lại là trùng tên, trùng năm sinh. Trong cuộc đời của mỗi chúng ta, rất có thể không có những người như vậy, nhưng trên phạm vi cả nước thì có. Nói chung, nếu bạn đang viết phần mềm hoặc thiết kế cơ sở dữ liệu, thì sẽ rất hữu ích khi biết rằng đây cũng có thể là trường hợp.