什么是默认值?默认值是当向表中插入新行时,在该列中自动填充的值。当用户不给该列指定值时,系统会自动使用默认值来填充该列。如果用户提供了一个值,则该值将被用作该列的值。
如何设置默认值?在 mysql 中,我们可以使用 default 关键字来设置默认值。该关键字指示系统在插入新行时使用默认值。下面是一个示例:
首先,让我们创建一个简单的表,包含三个列:id、username 和 email:
create table users(
id int not null auto_increment,
username varchar(50) not null,
email varchar(50) not null,
primary key (id)
);
接下来,我们向该表中添加一个带有默认值的新列 created_at,该列将包含每个用户的创建日期和时间:
alter table users add created_at timestamp default current_timestamp;
在上述语句中,我们使用了 add 关键字来向表中添加一个新列。我们使用 default current_timestamp 子句来设置该列的默认值为当前时间戳,即在插入新行时,系统将自动将 created_at 列设置为当前时间。
我们还可以使用常量来设置默认值。例如,如果我们希望设置一个布尔值列,我们可以使用以下语句:
alter table users add is_active boolean default true;
在上述语句中,我们使用 default 子句来设置一个布尔值列的默认值为 true。
如何修改默认值?如果我们想要更改列的默认值,可以使用 alter table 语句。例如,让我们将 created_at 列的默认值更改为 2020 年 1 月 1 日:
alter table users modify created_at timestamp default '2020-01-01 00:00:00';
在上述语句中,我们使用 modify 关键字来更改列 created_at 的数据类型和默认值。我们在 default 子句中指定了默认日期和时间,系统将在插入新行时自动使用该日期和时间。
如何删除默认值?如果我们想要删除列的默认值,可以使用 alter table 语句。例如,让我们删除列 created_at 的默认值:
alter table users alter column created_at drop default;
在上述语句中,我们使用 alter column 命令将 created_at 列的默认值删除。
如何查看默认值?要查看列的默认值,可以使用 describe 或 show create table 语句。例如,以下是使用 describe 语句查看 users 表的详细信息:
describe users;
输出如下:
fieldtypenullkeydefaultextra
id int(11) no pri null auto_increment
username varchar(50) no null
email varchar(50) no null
created_at timestamp yes null
is_active tinyint(1) yes 1
在上述表中,我们可以看到 created_at 列的默认值为 null,这表明该列没有默认值。我们还可以查看 users 表的完整创建语句:
show create table users;
输出如下:
create table users (
id int(11) not null auto_increment,
username varchar(50) not null,
email varchar(50) not null,
created_at timestamp null default null,
is_active tinyint(1) default '1',
primary key (id)
) engine=innodb auto_increment=1 default charset=utf8mb4 collate=utf8mb4_0900_ai_ci
在上面的表中,我们可以看到 created_at 列的默认值为 null。
总结在 mysql 中设置默认值是一种有用的技术。可以使用 default 关键字来设置默认值,并可以使用 alter table 语句来更改或删除默认值。通过查看表的详细信息可以了解列的默认值。使用默认值可以减少编写插入语句的工作量,并确保在当用户没有提供值时,系统将使用预定义值。
以上就是mysql 设置默认值的详细内容。
