SQL ALTER TABLE 语句- 灵活修改表结构和数据类型

小万哥
• 阅读 333

SQL ALTER TABLE 语句

SQL ALTER TABLE 语句用于在现有表中添加、删除或修改列,也可用于添加和删除各种约束。

ALTER TABLE - 添加列

要在表中添加列,请使用以下语法:

ALTER TABLE 表名
ADD 列名 数据类型;

以下 SQL 向 "Customers" 表添加了一个 "Email" 列:

ALTER TABLE Customers
ADD Email varchar(255);

ALTER TABLE - 删除列

要在表中删除列,请使用以下语法(请注意,某些数据库系统不允许删除列):

ALTER TABLE 表名
DROP COLUMN 列名;

以下 SQL 从 "Customers" 表中删除了 "Email" 列:

ALTER TABLE Customers
DROP COLUMN Email;

ALTER TABLE - 重命名列

要在表中重命名列,请使用以下语法:

ALTER TABLE 表名
RENAME COLUMN 旧名 TO 新名;

ALTER TABLE - 修改数据类型

要更改表中列的数据类型,请使用以下语法:

对于 SQL Server / MS Access:

ALTER TABLE 表名
ALTER COLUMN 列名 数据类型;

对于 MySQL / Oracle(10G 之前的版本):

ALTER TABLE 表名
MODIFY COLUMN 列名 数据类型;

对于 Oracle 10G 及更高版本:

ALTER TABLE 表名
MODIFY 列名 数据类型;

SQL ALTER TABLE 示例

看看 "Persons" 表:

ID  LastName  FirstName  Address  City
1  Hansen  Ola  Timoteivn 10  Sandnes
2  Svendson  Tove  Borgvn 23  Sandnes
3  Pettersen  Kari  Storgt 20  Stavanger

现在,我们想在 "Persons" 表中添加一个名为 "DateOfBirth" 的列。

我们使用以下 SQL 语句:

ALTER TABLE Persons
ADD DateOfBirth date;

请注意,新列 "DateOfBirth" 的数据类型为 date,将保存日期。

"Persons" 表现在如下所示:

ID  LastName  FirstName  Address  City  DateOfBirth
1  Hansen  Ola  Timoteivn 10  Sandnes   
2  Svendson  Tove  Borgvn 23  Sandnes   
3  Pettersen  Kari  Storgt 20  Stavanger   

更改数据类型示例

现在,我们想更改 "Persons" 表中名为 "DateOfBirth" 的列的数据类型。

我们使用以下 SQL 语句:

ALTER TABLE Persons
ALTER COLUMN DateOfBirth year;

请注意,"DateOfBirth" 列现在的数据类型为 year,将保存以两位或四位格式表示的年份。

删除列示例

接下来,我们想删除 "Persons" 表中名为 "DateOfBirth" 的列。

我们使用以下 SQL 语句:

ALTER TABLE Persons
DROP COLUMN DateOfBirth;

"Persons" 表现在如下所示:

ID  LastName  FirstName  Address  City
1  Hansen  Ola  Timoteivn 10  Sandnes
2  Svendson  Tove  Borgvn 23  Sandnes
3  Pettersen  Kari  Storgt 20  Stavanger

希望这些例子能够帮助您更好地理解 SQL ALTER TABLE 语句的用法。

SQL 约束

SQL 约束用于指定表中数据的规则,以确保数据的准确性和可靠性。约束可以在创建表时指定,也可以在创建表后使用 ALTER TABLE 语句添加。

创建表时指定约束

CREATE TABLE 表名 (
    列1 数据类型 约束,
    列2 数据类型 约束,
    列3 数据类型 约束,
    ....
);

常用的约束类型

1. NOT NULL 约束

确保列不能有 NULL 值。

CREATE TABLE 表名 (
    列1 数据类型 NOT NULL,
    列2 数据类型,
    列3 数据类型,
    ....
);

2. UNIQUE 约束

确保列中的所有值都是不同的。

CREATE TABLE 表名 (
    列1 数据类型 UNIQUE,
    列2 数据类型,
    列3 数据类型,
    ....
);

3. PRIMARY KEY 约束

是 NOT NULL 和 UNIQUE 约束的组合,在表中唯一标识每一行。

CREATE TABLE 表名 (
    列1 数据类型 PRIMARY KEY,
    列2 数据类型,
    列3 数据类型,
    ....
);

4. FOREIGN KEY 约束

用于防止破坏表之间关系的操作。

CREATE TABLE 表名1 (
    列1 数据类型 PRIMARY KEY,
    列2 数据类型,
    列3 数据类型,
    ....
);

CREATE TABLE 表名2 (
    列A 数据类型,
    列B 数据类型,
    列C 数据类型,
    FOREIGN KEY (列A) REFERENCES 表名1(列1)
);

5. CHECK 约束

确保列中的值满足特定条件。

CREATE TABLE 表名 (
    列1 数据类型,
    列2 数据类型 CHECK (列2 > 0),
    列3 数据类型,
    ....
);

6. DEFAULT 约束

如果未指定值,则为列设置默认值。

CREATE TABLE 表名 (
    列1 数据类型,
    列2 数据类型 DEFAULT 默认值,
    列3 数据类型,
    ....
);

7. CREATE INDEX 约束

用于快速创建和检索数据库中的数据。

CREATE INDEX 索引名
ON 表名 (列1, 列2, 列3, ...);

这些约束类型可以根据表的设计和需求进行灵活组合使用,以确保数据库中的数据的完整性和一致性。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
SQL 删除外键列
一 SQL删除列的语句是:altertabletableNamedropcolumncolumnName(其中,tableName为表名,columnName为列名)但是,如果某列有约束时,不能直接删除,需要先删除约束,再删除列。如果某个列是外键,在不知道外键约束名称的情况下,那么首先是查找外键约束名称,根据名称删除约束,
peter peter
3年前
mysql 修改表或表结构常用sql语句
批量修改表名的sql语句altertableold_namerenamenew_name;修改表名altertabletestaddcolumnadd_namevarchar(10);添加表列altertabletestdropcolumndel_name;删除表列altertabletestm
Wesley13 Wesley13
3年前
MySQL 添加列,修改列,删除列
ALTERTABLE:添加,修改,删除表的列,约束等表的定义。查看列信息:desc表名;修改表名:altertablet\_bookrenametobbb;添加列:altertable表名addcolumn字段名varchar(length);删除列:altertable表名drop
Wesley13 Wesley13
3年前
MySQL:ALTER COLUMN、MODIFY COLUMN 和 CHANGE COLUMN
ALTERCOLUMN、MODIFYCOLUMN和CHANGECOLUMN语句修改列:ALTERCOLUMN:改变、删除列的默认值(备注:列的默认值存储在.frm文件中)。这个语句会直接修改 .frm文件而不涉及表数据,所以操作很快。改变列的默认值ALTERTABLEtest
Wesley13 Wesley13
3年前
MySQL数据查询(重点)
1.查询所有列  \为所有列select\fromtable\_name;2.查询指定列selectid,agefromtable\_name;3.查询时添加常量列本次查询有效,不会添加到表中,只显示 可以用as来命名本列名select'java0328'fromtable\_name;
Wesley13 Wesley13
3年前
mysql常用命令
mysql常用命令——删除主键,添加新主键【适用于以前主键不是id的场景】altertable表名change现在主键名现在主键名int(11);altertable表名dropprimarykey;altertable表名addCOLUMN新主键名INT(11)NOTNUL
Wesley13 Wesley13
3年前
Mysql之常用sql总结
下面是我总结的Mysql中常用的一些SQL,一般分为下面三种:DDL:DataDefinitionLanguage,数据定义语言,这些语句操作的是数据库对象,比如:定义了数据库、表、列、索引等。常用的关键字包括:create、drop、alter等。DML:DataManipulationLanguage,数据操作语句,用于添加、更新、删除、
Stella981 Stella981
3年前
Hadoop Hive基础sql语法
1.DDL操作1.建表2.3.创建简单表4.创建外部表5.建分区表6.建Bucket表7.创建表并创建索引字段ds8.复制一个空表9.显示所有表10.按正条件正则表达式显示表11.修改表结构12.表添加一列13.添加一列并增加列字段注释14.更改表名15.删除列16.增加删除分区17.重命名表18.修改列的名字类型位置注
小万哥 小万哥
1年前
SQL INSERT INTO 语句详解:插入新记录、多行插入和自增字段
SQLINSERTINTO语句用于在表中插入新记录。INSERTINTO语法可以以两种方式编写INSERTINTO语句:1.指定要插入的列名和值:sqlINSERTINTO表名(列1,列2,列3,...)VALUES(值1,值2,值3,...);2.如果要
小万哥 小万哥
1年前
SQL DELETE 语句:删除表中记录的语法和示例,以及 SQL SELECT TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句的使用
SQLDELETE语句SQLDELETE语句用于删除表中的现有记录。DELETE语法sqlDELETEFROM表名WHERE条件;注意:在删除表中的记录时要小心!请注意DELETE语句中的WHERE子句。WHERE子句指定应删除哪些记录。如果省略WHERE