MariaDB表结构修改

  1. MariaDB数据库操作
  2. MariaDB表操作
  3. MariaDB表结构修改
  4. MariaDB增删改查操作
  5. MariaDB子句
  6. MariaDB聚合函数
  7. MariaDB连接
  8. MariaDB操作符
  9. MariaDB正则与条件
  10. MariaDB约束
  11. MariaDB导出与导入
  12. MariaDB权限与权限管理
1. 添加一列

要在原有的表上添加一列,可参考以下语法 :

ALTER TABLE xxxx ADD COLUMN [IF NOT EXISTS]  (col_name column_definition,...)

示例

CREATE TABLE t(id INT PRIMARY KEY, u INT UNSIGNED NOT NULL UNIQUE)
ENGINE=InnoDB;
 
INSERT INTO t(id,u) VALUES(1,1),(2,2),(3,3);
 
ALTER TABLE t ADD COLUMN
(d DATETIME DEFAULT current_timestamp(),
 p POINT NOT NULL DEFAULT ST_GeomFromText('POINT(0 0)'),
 t TEXT CHARSET utf8 DEFAULT 'The quick brown fox jumps over the lazy dog');
 
UPDATE t SET t=NULL WHERE id=3;
 
SELECT id,u,d,ST_AsText(p),t FROM t;
 
SELECT variable_value FROM information_schema.global_status
WHERE variable_name = 'innodb_instant_alter_column';
2. 删除一列

语法

ALTER TABLE xxxx DROP COLUMN [IF EXISTS] col_name [CASCADE|RESTRICT]
3. MODIFY COLUMN修改列

允许修改列的类型。该列与原始列位于同一位置,列中的所有索引都将保留。 请注意,修改列时,应指定新列的所有属性。

CREATE TABLE t1 (a INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY((a));
ALTER TABLE t1 MODIFY a BIGINT UNSIGNED AUTO_INCREMENT;

除了改变列的名字。该列与原始列位于同一位置,列中的所有索引都将保留。

CREATE TABLE t1 (a INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(a));
ALTER TABLE t1 CHANGE a b BIGINT UNSIGNED AUTO_INCREMENT;
4. 添加约束 - ADD CONSTRAINT

修改在表的特定列或列上添加约束。

语法

ALTER TABLE table_name 
ADD CONSTRAINT [constraint_name] CHECK(expression);

在插入或更新行之前,所有约束都将按照它们定义的顺序进行评估。如果任何约束失败,那么该行将不会被更新。

示例

CREATE TABLE account_ledger (
    id INT PRIMARY KEY AUTO_INCREMENT,
    transaction_name VARCHAR(100),
    credit_account VARCHAR(100),
    credit_amount INT,
    debit_account VARCHAR(100),
    debit_amount INT);
 
ALTER TABLE account_ledger 
ADD CONSTRAINT is_balanced 
    CHECK((debit_amount + credit_amount) = 0);

删除DROP CONSTRAINT

修改表结构,删除给定的约束。

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

向表中添加约束时,无论是通过CREATE TABLE还是ALTER TABLE ... ADD CONSTRAINT语句,都可以自己设置constraint_name,或者允许MariaDB自动为您生成一个约束。例如,

CREATE TABLE t (
   a INT,
   b INT,
   c INT,
   CONSTRAINT CHECK(a > b),
   CONSTRAINT check_equals CHECK(a = c)); 
 
SELECT CONSTRAINT_NAME, TABLE_NAME, CONSTRAINT_TYPE 
FROM information_schema.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 't';
 
+-----------------+----------------+-----------------+
| CONSTRAINT_NAME | TABLE_NAME     | CONSTRAINT_TYPE |
+-----------------+----------------+-----------------+
| check_equals    | t              | CHECK           |
| CONSTRAINT_1    | t              | CHECK           |
+-----------------+----------------+-----------------+

要从表中删除约束,请使用ALTER TABLE ... DROP CONSTRAINT语句。 例如,

ALTER TABLE t DROP CONSTRAINT is_unique;
4. 常用语句

添加一个新的列:

ALTER TABLE t1 ADD x INT;

删除一个列:

ALTER TABLE t1 DROP x;

修改列的类型:

ALTER TABLE t1 MODIFY x bigint unsigned;

更改列的名称和类型:

ALTER TABLE t1 CHANGE a b bigint unsigned auto_increment;

在单个ALTER TABLE语句中组合多个子句,用逗号分隔:

ALTER TABLE t1 DROP x, ADD x2 INT,  CHANGE y y2 INT;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值