SQL字段默认值怎么设置?数据库默认属性怎么管理?

文章导读
在SQL中设置字段默认值使用DEFAULT关键字。例如:ALTER TABLE users ADD COLUMN age INT DEFAULT 18; 这会为age字段设置默认值为18。
📋 目录
  1. 从MySQL官方文档
  2. PostgreSQL方式
  3. SQL Server设置
  4. Oracle数据库
  5. 管理默认属性
  6. SQLite示例
A A

在SQL中设置字段默认值使用DEFAULT关键字。例如:ALTER TABLE users ADD COLUMN age INT DEFAULT 18; 这会为age字段设置默认值为18。

从MySQL官方文档

要为表中的列指定默认值,请使用ALTER TABLE ... ALTER COLUMN ... SET DEFAULT语句,或者在CREATE TABLE语句中定义列时指定DEFAULT值。例如:ALTER TABLE mytable ALTER j SET DEFAULT 'a';

PostgreSQL方式

创建表时:CREATE TABLE products (product_no integer DEFAULT nextval('products_product_no_seq'), name text, price numeric DEFAULT 0.0); 修改默认值:ALTER TABLE products ALTER COLUMN price SET DEFAULT 12.00;

SQL字段默认值怎么设置?数据库默认属性怎么管理?

SQL Server设置

使用ALTER TABLE ALTER COLUMN语法:ALTER TABLE Person ALTER COLUMN City NVARCHAR(50) NULL DEFAULT 'Seattle'; 或者在CREATE TABLE中:CREATE TABLE Person (ID int IDENTITY PRIMARY KEY, Name nvarchar(40) NOT NULL DEFAULT 'John' );

Oracle数据库

在12c之前:ALTER TABLE mytable MODIFY (column_name DEFAULT default_value); 从12c起支持:ALTER TABLE mytable ADD (column_name data_type DEFAULT default_value);

管理默认属性

查看默认值:MySQL用SHOW CREATE TABLE tablename; PostgreSQL用\d tablename; SQL Server用sp_help 'tablename'; 修改用ALTER TABLE ... ALTER COLUMN ... SET/DROP DEFAULT; 删除默认值:ALTER TABLE products ALTER COLUMN price DROP DEFAULT;

SQL字段默认值怎么设置?数据库默认属性怎么管理?

SQLite示例

CREATE TABLE test (a INTEGER DEFAULT 10); INSERT INTO test(a) VALUES(NULL); -- a会是10

FAQ
Q: 如何删除字段默认值?
A: MySQL: ALTER TABLE table_name ALTER COLUMN column_name DROP DEFAULT; PostgreSQL: ALTER TABLE table_name ALTER COLUMN column_name DROP DEFAULT;
Q: 默认值可以是表达式吗?
A: 是的,如PostgreSQL支持nextval('seq'),SQL Server支持GETDATE()。
Q: 插入NULL会忽略默认值吗?
A: 不,显式插入NULL会设置为NULL,只有不指定列时才用默认值。
Q: 不同数据库语法一样吗?
A: 不太一样,MySQL用ALTER COLUMN SET DEFAULT,PostgreSQL类似但有细微差异。