7、MySQL默认值(DEFAULT)

默认值(Default)的完整称呼是“默认值约束(Default Constraint)”,用来指定某列的默认值。在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认值。

例如,员工信息表中,部门位置在北京的较多,那么部门位置就可以默认为“北京”,系统就会自动为这个字段赋值为“北京”。

默认值约束通常用在已经设置了非空约束的列,这样能够防止数据表在录入数据时出现错误。

在创建表时设置默认值约束

创建表时可以使用 DEFAULT 关键字设置默认值约束,具体的语法格式如下:

<字段名> <数据类型> DEFAULT <默认值>;

其中,“默认值”为该字段设置的默认值,如果是字符类型的,要用单引号括起来。

例 1
创建数据表 tb_dept3,指定部门位置默认为 Beijing,SQL 语句和运行结果如下所示。

mysql> CREATE TABLE tb_dept3
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(22),
    -> location VARCHAR(50) DEFAULT 'Beijing'
    -> );
mysql> DESC tb_dept3;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | NULL    |       |
| name     | varchar(22) | YES  |     | NULL    |       |
| location | varchar(50) | YES  |     | Beijing |       |
+----------+-------------+------+-----+---------+-------+

以上语句执行成功之后,表 tb_dept3 上的字段 location 拥有了一个默认值 Beijing,新插入的记录如果没有指定部门位置,则默认都为 Beijing。

注意:在创建表时为列添加默认值,可以一次为多个列添加默认值,需要注意不同列的数据类型。

在修改表时添加默认值约束

修改表时添加默认值约束的语法格式如下:

ALTER TABLE <数据表名>
CHANGE COLUMN <字段名> <字段名> <数据类型> DEFAULT <默认值>;

例 2
修改数据表 tb_dept3,将部门位置的默认值修改为 Shanghai,SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_dept3
    -> CHANGE COLUMN location
    -> location VARCHAR(50) DEFAULT 'Shanghai';
mysql> DESC tb_dept3;
+----------+-------------+------+-----+----------+-------+
| Field    | Type        | Null | Key | Default  | Extra |
+----------+-------------+------+-----+----------+-------+
| id       | int(11)     | NO   | PRI | NULL     |       |
| name     | varchar(22) | YES  |     | NULL     |       |
| location | varchar(50) | YES  |     | Shanghai |       |
+----------+-------------+------+-----+----------+-------+

删除默认值约束

当一个表中的列不需要设置默认值时,就需要从表中将其删除。

修改表时删除默认值约束的语法格式如下:

ALTER TABLE <数据表名>
CHANGE COLUMN <字段名> <字段名> <数据类型> DEFAULT NULL;

例 3
修改数据表 tb_dept3,将部门位置的默认值约束删除,SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_dept3
    -> CHANGE COLUMN location
    -> location VARCHAR(50) DEFAULT NULL;
mysql> DESC tb_dept3;
+----------+-------------+------+-----+----------+-------+
| Field    | Type        | Null | Key | Default  | Extra |
+----------+-------------+------+-----+----------+-------+
| id       | int(11)     | NO   | PRI | NULL     |       |
| name     | varchar(22) | YES  |     | NULL     |       |
| location | varchar(50) | YES  |     | NULL     |       |
+----------+-------------+------+-----+----------+-------+
3 rows in set (0.00 sec)
  • 20
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: MySQL默认可以通过在列定义时使用 "DEFAULT" 关键字来设置。 例如: ``` CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, age INT DEFAULT 18 ); ``` 在上面的例子中,当没有指定 "age" 列的时,将使用默认 18。 ### 回答2: MySQL是一款流行的关系型数据库管理系统,具有强大的功能和灵活的自定义选项。在MySQL中,default默认设置是一项非常重要的特性,它允许我们在数据库中定义默认,以便在插入新数据时节省时间和精力。 MySQL默认设置可以应用于表之间的列,并且MySQL提供了多种默认选项。以下是MySQL提供的默认选项: 1. NULL默认:当未提供任何时,使用NULL默认。 2. 常量默认:可以使用任何常量作为默认,例如字符串、数字或日期。 3. 表达式默认默认可以是一个表达式,例如UNIX_TIMESTAMP()。 4. CURRENT_TIMESTAMP默认MySQL提供了特殊的默认 CURRENT_TIMESTAMP,可用于在列上设置当前日期和时间的默认。如果未提供,则自动提供当前日期和时间。 5. 自动递增默认:可以将自动递增属性与默认一起使用,例如创建一个自动递增的ID并将其设置为默认MySQL还允许我们在创建表时设置默认,或者在以后的时间点通过修改表定义来更改默认。 在创建表时设置默认的语法如下: CREATE TABLE table_name ( column1 datatype default_value, column2 datatype default_value, column3 datatype default_value, ... ); 例如: CREATE TABLE customers ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(50) DEFAULT 'John', last_name VARCHAR(50) DEFAULT 'Smith', email VARCHAR(50) DEFAULT NULL ); 上述示例中,id是自动递增的列,first_name和last_name列包含字符串常量作为默认,email列使用NULL作为默认。 在已有表中更改默认的语法如下: ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_value; 例如: ALTER TABLE customers ALTER COLUMN email SET DEFAULT 'info@example.com'; 上述示例将将email列的默认更改为“info@example.com”。 总之,MySQL默认设置是一项非常重要的特性,可简化数据输入并改进数据库性能。MySQL提供了多种默认选项,包括NULL默认、常量默认、表达式默认、CURRENT_TIMESTAMP默认和自动递增默认,可以在创建表时或稍后修改表定义时定义默认。 ### 回答3: MySQL中,default关键字用于设置列的默认。当插入新行时,如果该列被省略,则使用默认。如果列的默认没有定义,则使用NULL(除非该列被定义为NOT NULL)。 默认可以是常量、表达式或函数。常量可以是数字、字符串等,表达式可以是算术表达式、逻辑表达式等,函数可以是MySQL内置函数或用户自定义函数。 在创建表时,可以使用DEFAULT关键字来为列指定默认。例如: CREATE TABLE test ( id INT(10) PRIMARY KEY, name VARCHAR(50) DEFAULT 'Unknown', age INT(3) DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); 在这个例子中,当插入一行时,如果省略name列,则使用默认'Unknown';如果省略age列,则使用默认0;如果省略created_at列,则使用当前时间作为默认。 可以通过ALTER TABLE语句来修改列的默认。例如: ALTER TABLE test ALTER COLUMN age SET DEFAULT 18; 这个语句将修改age列的默认为18。 需要注意的是,一旦列的默认被设置,所有新的行都将使用该默认,除非INSERT语句明确指定了一个不同的。而且,只有在插入新行时才会使用默认,如果使用UPDATE语句修改某行,列的默认不会被使用。 总之,MySQL中的DEFAULT关键字用于指定列的默认,在创建表和修改表结构时非常有用。默认可以是常量、表达式或函数,可以通过ALTER TABLE语句进行修改。要注意默认的使用范围和特性,以便正确地编写SQL语句。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值