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

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

时间:2023-12-06 23:03:54浏览次数:43  
标签:SQL 数据类型 约束 表名 TABLE ALTER

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,关注后即可获取最新文章推送

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

标签:SQL,数据类型,约束,表名,TABLE,ALTER
From: https://blog.51cto.com/xiaowange/8711279

相关文章

  • MySQL基础命令笔记
    MySQL基础命令笔记上学期间学习记录的笔记,放这里方便查阅。--创建数据库--CREATE创建;DATABASE数据库;CREATEDATABASEstuinfo--默认字符集DEFAULTCHARACTERSETutf8mb4--排序规则DEFAULTCOLLATEutf8mb4_general_ci;--显示当前服务器下,所有数据库SHOWDA......
  • 【数据库概论】第三章 SQL简述、数据定义和索引
    3.1SQL概述3.1.1产生与发展最早在IBM的关系数据库管理系统原型SystemR上实现,后来美国国家标准局(ANSI)批准SQL作为关系数据库语言的美国标准,同年公布了SQL标准文本。近些年来SQL标准的内容越来越丰富和复杂。目前没有任何一个数据库系统能够支持SQL标准的所有概念和特性,同时不少......
  • Java 操作 MySQL 数据库
    Java入门-获取MySQL数据java代码/***@Author编程无忧*@Date2022/1/1313:17*@Desc*/publicclassmysqlTest{@TestpublicvoidgetMysqlCon(){//声明Connection对象Connectioncon;//驱动程序名Stringdriver=......
  • SQL ALTER TABLE 语句- 灵活修改表结构和数据类型
    SQLALTERTABLE语句SQLALTERTABLE语句用于在现有表中添加、删除或修改列,也可用于添加和删除各种约束。ALTERTABLE-添加列要在表中添加列,请使用以下语法:ALTERTABLE表名ADD列名数据类型;以下SQL向"Customers"表添加了一个"Email"列:ALTERTABLECustomers......
  • python连接mysql、oracle数据库
    python版本:3.10.5mysql版本:8.0.27oracle版本:oracle12c一、python连接mysql数据库安装第三方依赖PyMySQL,终端执行如下命令:pipinstallPyMySQLPyMySQL使用importpymysqlconfig={'host':'127.0.0.1','port':3306,'u......
  • 大白话说Python+Flask入门(六)Flask SQLAlchemy操作mysql数据库
    写在前面这篇文章被搁置真的太久了,不知不觉拖到了周三了,当然,也算跟falsk系列说再见的时候,真没什么好神秘的,就是个数据库操作,就大家都知道的CRUD吧。FlaskSQLAlchemy的使用1、FlaskSQLAlchemy简介FlaskSQLAlchemy是基于Flaskweb框架和SQLAlchemyORM(对象关系映射)的工具......
  • 【python基础之数据类型的内置方法】--- 数据类型的内置方法
    title:【python基础之数据类型的内置方法】---数据类型的内置方法date:2023-12-0120:54:06updated:2023-12-0620:30:00description:【python基础之数据类型的内置方法】---数据类型的内置方法cover:https://home.cnblogs.com/u/dream-ze/【一】八大基......
  • MySQL数据库的CURD
    一、数据库的CURD对数据库进行增(Create)、改(Update)、查(Retrieve)、删(Delete)等操作。CREATE{DATABASE|SCHEMA}[IFNOTEXISTS]db_name[create_specification[,create_specification]...]IFNOTEXISTS表示只有数据库不存在的时候才创建,如果存在同名就不再执......
  • mysql 自定义 sql 拼接执行
    一、背景二、实现第一种:使用Mybatis,纯sql插入(推荐使用)动态创建Sql拼接在Mapper接口种指定该方法@InsertProvider(type=AutoCreateReport.class,method="insertSelectSqlFun")publicvoidsqlInsert(Stringsql);//insertSelectSqlFun方法sql参数传参sql执行......
  • mysql 读取 influxdb
    QueryResultcountResults=influxDBConfig.query(selectSql.toString());QueryResultresults=influxDBConfig.query(selectSql.toString());List<KeyValue>keyValues=queryResultProcess(results);privateList<KeyValue>queryResultProcess(QueryRe......