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;

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

Để thêm một cột có giá trị mặc định, chúng ta có thể sử dụng câu lệnh thay đổi bảng như hình bên dưới

thay đổi bảng sample_table thêm with_default_col varchar(50) mặc định 'John Doe';

Nếu chúng tôi chèn dữ liệu mới, mọi giá trị bị thiếu cho cột đã chỉ định sẽ được thay thế bằng giá trị mặc định đã đặt

BẬT danh tính_chèn_bảng_mẫu;

chèn các giá trị vào bảng mẫu_bảng(id) (7);

chọn * từ bảng_mẫu;

Các truy vấn trước đó sẽ trả về một tập kết quả như được hiển thị

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

Chỉ lưu ý bản ghi mới được chèn chứa giá trị mặc định cho cột đã chỉ định

Thêm Giá trị Mặc định của Cột cho Tất cả Phụ trang

Để giải quyết vấn đề, trong đó tất cả các giá trị hiện có được đặt thành null, chúng ta cần sử dụng chúng với mệnh đề giá trị như được hiển thị

thay đổi bảng sample_table

thêm other_column int default 1

với các giá trị;

Nếu chúng tôi chèn các bản ghi không có giá trị cho other_column được cung cấp, chúng tôi sẽ nhận được kết quả là

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

Lưu ý rằng các cột hiện có được thay thế bằng giá trị mặc định

Phần kết luận

Trong bài viết này, chúng ta đã khám phá 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. Ngoài ra, chúng ta đã thảo luận về ràng buộc mặc định của máy chủ SQL, thêm một cột có giá trị mặc định và thêm một cột có giá trị mặc định của tất cả các lần chèn. Chúng tôi hy vọng bạn thấy bài viết này hữu ích. Xem các bài viết Gợi ý Linux khác để biết thêm hướng dẫn về SQL Server

Nếu bạn đặt cột mới là nullable, thì giá trị cột đó cho tất cả các hàng hiện có sẽ là NULL thay vì giá trị mặc định. Trong trường hợp đó, bạn có thể thêm WITH VALUES vào câu lệnh

ALTER TABLE table_name
    ADD column_name data_type NULL 
    CONSTRAINT constraint_name DEFAULT default_value 
    WITH VALUES;

Ví dụ

ALTER TABLE orders1
    ADD store_code TEXT NULL 
    CONSTRAINT store_code_d DEFAULT "store1"
    WITH VALUES;

2. Sử dụng Công cụ GUI TablePlus

  • 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 + Column để thêm cột mới. Bạn cũng có thể nhấp đúp vào hàng trống để chèn
  • 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ủ

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

và đây là kết quả

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


Cần một Công cụ GUI tốt cho MS SQL Server? . Dù sao nó cũng miễn phí

Ràng buộc DEFAULT cũng có thể được sử dụng để chèn các giá trị hệ thống, bằng cách sử dụng các hàm như 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