Thay đổi bảng thêm cột với giá trị mặc định

Trong bài viết ngắn này, chúng ta sẽ tìm hiểu cách thêm một cột có giá trị mặc định vào một bảng hiện có trong SQL Server

Ràng buộc mặc định của máy chủ SQL

Như tên gợi ý, ràng buộc mặc định xác định giá trị mặc định cho một cột cụ thể. Nếu chúng tôi không cung cấp giá trị cho cột, Máy chủ SQL sẽ sử dụng giá trị đã chỉ định thay vì null

Điều này chủ yếu hữu ích khi kết hợp với các ràng buộc khác, chẳng hạn như không null

Trong hầu hết các trường hợp, bạn đặt ràng buộc mặc định khi tạo bảng. Tuy nhiên, bạn có thể thêm cột có giá trị mặc định. Làm điều này ảnh hưởng đến dữ liệu được chèn sau ràng buộc mặc định

Thêm một cột có giá trị mặc định

Giả sử chúng ta có một bảng như trong truy vấn sau

usetemporary_db;
createtablesample_table[
    khóa chính idintnotnullidentity[1,1],
    namevarchar[50],
];
insertintosample_table[name]
values ['Abigail Henderson'],
       ['Peter Miller'],
       ['Harris Gonzales'],
       ['Anne Jenkins'],
       ['Katherine Patterson'];
select * fromsample_table;

GETDATE[]

TẠO BẢNG Đơn đặt hàng [
    ID int NOT NULL,
    OrderNumber int NOT NULL,
    OrderDate ngày DEFAULT GetDATE
];

SQL MẶC ĐỊNH trên ALTER TABLE

Để tạo ràng buộc DEFAULT trên cột "Thành phố" khi bảng đã được tạo, hãy sử dụng SQL sau

Điều này có rất nhiều câu trả lời, nhưng tôi thấy cần phải thêm phương pháp mở rộng này. Điều này có vẻ lâu hơn nhiều, nhưng nó cực kỳ hữu ích nếu bạn đang thêm trường NOT NULL vào bảng có hàng triệu hàng trong cơ sở dữ liệu đang hoạt động

ALTER TABLE {schemaName}.{tableName}
    ADD {columnName} {datatype} NULL
    CONSTRAINT {constraintName} DEFAULT {DefaultValue}

UPDATE {schemaName}.{tableName}
    SET {columnName} = {DefaultValue}
    WHERE {columName} IS NULL

ALTER TABLE {schemaName}.{tableName}
    ALTER COLUMN {columnName} {datatype} NOT NULL

Điều này sẽ làm là thêm cột dưới dạng trường có thể null và với giá trị mặc định, cập nhật tất cả các trường thành giá trị mặc định [hoặc bạn có thể gán các giá trị có ý nghĩa hơn] và cuối cùng, nó sẽ thay đổi cột thành NOT NULL

Lý do cho điều này là nếu bạn cập nhật một bảng tỷ lệ lớn và thêm một trường không null mới, nó phải ghi vào từng hàng và do đó sẽ khóa toàn bộ bảng khi nó thêm cột và sau đó ghi tất cả các giá trị

Phương pháp này sẽ thêm cột nullable hoạt động nhanh hơn rất nhiều, sau đó điền dữ liệu trước khi đặt trạng thái không null

Tôi nhận thấy rằng thực hiện toàn bộ công việc trong một câu lệnh sẽ khóa một trong các bảng hoạt động nhiều hơn của chúng tôi trong 4-8 phút và khá thường xuyên, tôi đã tắt quy trình. Phương pháp này mỗi bộ phận thường chỉ mất vài giây và ít gây ra hiện tượng khóa

Ngoài ra, nếu bạn có một bảng trong khu vực có hàng tỷ hàng thì có thể đáng để cập nhật hàng loạt như vậy

Làm cách nào để thay đổi bảng trong SQL, thêm cột có giá trị mặc định?

Từ chế độ xem bảng dữ liệu, chuyển sang chế độ xem cấu trúc cơ sở dữ liệu bằng nút Cấu trúc ở cuối cửa sổ hoặc sử dụng phím tắt Cmd + Ctrl + ]
Từ trình chỉnh sửa cấu trúc, nhấp vào + Cột để thêm cột mới. .
Nhập giá trị cột mặc định của bạn tại trường column_default
Nhấn Cmd + S để thực hiện các thay đổi đối với máy chủ

Có thể thay đổi cột để thêm các giá trị MẶC ĐỊNH không?

Bạn có thể sử dụng câu lệnh ALTER TABLE để thêm, thay đổi hoặc xóa giá trị mặc định cho một cột .

Làm cách nào để THAY ĐỔI TABLE thêm cột có giá trị mặc định trong Oracle?

Ví dụ Oracle ALTER TABLE này sẽ thêm một cột có tên là tên_khách_hàng vào bảng khách hàng có kiểu dữ liệu là varchar2[45]. Trong một ví dụ phức tạp hơn, bạn có thể sử dụng câu lệnh ALTER TABLE để thêm một cột mới cũng có giá trị mặc định. ALTER TABLE khách hàng THÊM thành phố varchar2[40] MẶC ĐỊNH 'Seattle';

Làm cách nào để thêm cột trong SQL có giá trị?

Sử dụng SQL Server Management Studio .
Trong Object Explorer, bấm chuột phải vào bảng mà bạn muốn thêm cột và chọn Thiết kế
Chọn ô trống đầu tiên trong cột Tên cột
Nhập tên cột vào ô. .
Nhấn phím TAB để chuyển đến ô Loại dữ liệu và chọn một loại dữ liệu từ danh sách thả xuống

Chủ Đề