- MariaDB数据库操作
- MariaDB表操作
- MariaDB表结构修改
- MariaDB增删改查操作
- MariaDB子句
- MariaDB聚合函数
- MariaDB连接
- MariaDB操作符
- MariaDB正则与条件
- MariaDB约束
- MariaDB导出与导入
- 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;