从数据库模式设置默认属性值
在数据库设计和管理中,设置默认属性值是一个常见且重要的操作,默认属性值可以确保在插入数据时,某些字段具有合理的初始值,避免空值或无效数据的出现,以下将详细介绍如何在常见的数据库管理系统(如MySQL、PostgreSQL和SQL Server)中设置默认属性值。
1、创建表时设置默认值
语法:CREATE TABLE 表名 (列名 数据类型 DEFAULT 默认值, ...);
示例:创建一个名为students
的表,其中age
列的默认值为18。
CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT DEFAULT 18 );
2、修改表结构添加默认值
语法:ALTER TABLE 表名 ALTER COLUMN 列名 SET DEFAULT 默认值;
示例:为已存在的students
表的age
列设置默认值为18。
ALTER TABLE students ALTER COLUMN age SET DEFAULT 18;
3、插入数据时使用默认值
当插入数据时,如果未指定某列的值,且该列有默认值,则会使用默认值。
示例:向students
表中插入一条记录,不指定age
列的值。
INSERT INTO students (name) VALUES ('John');
age
列会自动使用默认值18。
1、创建表时设置默认值
语法:CREATE TABLE 表名 (列名 数据类型 DEFAULT 默认值, ...);
示例:创建一个名为employees
的表,其中salary
列的默认值为3000。
CREATE TABLE employees ( id SERIAL PRIMARY KEY, name VARCHAR(50), salary NUMERIC(10, 2) DEFAULT 3000 );
2、修改表结构添加默认值
语法:ALTER TABLE 表名 ALTER COLUMN 列名 SET DEFAULT 默认值;
示例:为已存在的employees
表的salary
列设置默认值为3000。
ALTER TABLE employees ALTER COLUMN salary SET DEFAULT 3000;
3、插入数据时使用默认值
与MySQL类似,插入数据时若未指定某列的值且该列有默认值,会使用默认值。
示例:向employees
表中插入一条记录,不指定salary
列的值。
INSERT INTO employees (name) VALUES ('Alice');
salary
列会自动使用默认值3000。
1、创建表时设置默认值
语法:CREATE TABLE 表名 (列名 数据类型 CONSTRAINT 约束名 DEFAULT 默认值, ...);
示例:创建一个名为products
的表,其中price
列的默认值为99.99。
CREATE TABLE products ( id INT IDENTITY(1, 1) PRIMARY KEY, name NVARCHAR(50), price DECIMAL(10, 2) CONSTRAINT df_price DEFAULT 99.99 );
2、修改表结构添加默认值
语法:ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFAULT 默认值 FOR 列名;
示例:为已存在的products
表的price
列设置默认值为99.99。
ALTER TABLE products ADD CONSTRAINT df_price DEFAULT 99.99 FOR price;
3、插入数据时使用默认值
同样,插入数据时若未指定某列的值且该列有默认值,会使用默认值。
示例:向products
表中插入一条记录,不指定price
列的值。
INSERT INTO products (name) VALUES ('Product A');
price
列会自动使用默认值99.99。
数据库系统 | 创建表时设置默认值语法 | 修改表结构添加默认值语法 | 插入数据时使用默认值方式 |
MySQL | CREATE TABLE 表名 (列名 数据类型 DEFAULT 默认值, ...); |
ALTER TABLE 表名 ALTER COLUMN 列名 SET DEFAULT 默认值; |
插入数据时,若未指定某列的值且该列有默认值,则自动使用默认值 |
PostgreSQL | CREATE TABLE 表名 (列名 数据类型 DEFAULT 默认值, ...); |
ALTER TABLE 表名 ALTER COLUMN 列名 SET DEFAULT 默认值; |
同MySQL |
SQL Server | CREATE TABLE 表名 (列名 数据类型 CONSTRAINT 约束名 DEFAULT 默认值, ...); |
ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFAULT 默认值 FOR 列名; |
同MySQL |
问题1:在MySQL中,如何修改表中已有列的默认值?
答:在MySQL中,可以使用ALTER TABLE
语句来修改表中已有列的默认值,语法为ALTER TABLE 表名 ALTER COLUMN 列名 SET DEFAULT 新默认值;
,要将students
表的age
列默认值修改为20,可执行以下语句:
ALTER TABLE students ALTER COLUMN age SET DEFAULT 20;
问题2:在SQL Server中,设置默认值时约束名有什么作用?
答:在SQL Server中,设置默认值时指定的约束名用于唯一标识该默认值约束,当需要对默认值进行修改、删除等操作时,可以通过约束名来准确定位到具体的默认值约束,要删除一个默认值约束,可以使用ALTER TABLE 表名 DROP CONSTRAINT 约束名;
语句,其中的约束名就是设置默认值时定义的名称,如果没有约束名,可能在管理多个默认值约束时会出现混淆和不便。