首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第1章 数据库和SQL
1-1 数据库是什么
我们身边的数据库
为什么DBMS那么重要
DBMS的种类
1-2 数据库的结构
RDBMS的常见系统结构
表的结构
1-3 SQL概要
标准SQL
SQL语句及其种类
SQL的基本书写规则
1-4 表的创建
表的内容的创建
数据库的创建(CREATE DATABASE语句)
表的创建(CREATE TABLE语句)
命名规则
数据类型的指定
约束的设置
1-5 表的删除和更新
表的删除(DROP TABLE语句)
表定义的更新(ALTER TABLE语句)
向Product表中插入数据
第2章 查询基础
2-1 SELECT语句基础
列的查询
查询出表中所有的列
为列设定别名
常数的查询
从结果中删除重复行
根据WHERE语句来选择记录
注释的书写方法
算术运算符
需要注意NULL
比较运算符
对字符串使用不等号时的注意事项
不能对NULL使用比较运算符
2-3 逻辑运算符
NOT运算符
AND运算符和OR运算符
通过括号强化处理
逻辑运算符和真值
含有NULL时的真值
第3章 聚合与排序
3-1 对表进行聚合查询
聚合函数
计算表中数据的行数
计算NULL之外的数据的行数
计算合计值
计算平均值
计算值和小值
使用聚合函数删除重复值(关键字DISTINCT)
3-2 对表进行分组
GROUP BY子句
聚合键中包含NULL的情况
使用WHERE子句时GROUP BY的执行结果
与聚合函数和GROUP BY子句有关的常见错误
3-3 为聚合结果指定条件
HAVING子句
HAVING子句的构成要素
相对于HAVING子句,更适合写在WHERE子句中的条件
3-4 对查询结果进行排序
ORDER BY子句
指定升序或降序
指定多个排序键
NULL的顺序
在排序键中使用显示用的别名
ORDER BY子句中可以使用的列
不要使用列编号
当前位置:
首页>>
技术小册>>
SQL基础教程(上)
小册名称:SQL基础教程(上)
### 章节:表定义的更新(ALTER TABLE语句) 在数据库管理系统(DBMS)中,随着业务需求的不断变化,对数据库表结构的调整成为了一项常规操作。`ALTER TABLE`语句正是用于修改已存在表的结构,包括添加、删除或修改列(字段),以及设置或删除约束等。本章节将详细介绍`ALTER TABLE`语句的基本用法、高级功能及在实际应用中的注意事项,帮助读者掌握表结构动态调整的技巧。 #### 一、`ALTER TABLE`语句基础 ##### 1.1 添加列 向已存在的表中添加新列是最常见的操作之一。使用`ADD COLUMN`(或简写为`ADD`)关键字可以实现这一目的。 ```sql ALTER TABLE 表名 ADD COLUMN 列名 数据类型 [约束]; ``` **示例**:假设我们有一个名为`employees`的表,用于存储员工信息,现在需要添加一个新列`email`来存储员工的电子邮件地址。 ```sql ALTER TABLE employees ADD COLUMN email VARCHAR(255); ``` ##### 1.2 删除列 当表中的某些列不再需要时,可以使用`DROP COLUMN`关键字将其删除。注意,删除列会同时删除该列中的所有数据,且该操作是不可逆的。 ```sql ALTER TABLE 表名 DROP COLUMN 列名; ``` **示例**:从`employees`表中删除`email`列(假设这一决策是出于某种考虑)。 ```sql ALTER TABLE employees DROP COLUMN email; ``` ##### 1.3 修改列 修改已存在列的数据类型、名称或约束也是常见的需求。`ALTER TABLE`提供了相应的语法来实现这些操作。 - **修改数据类型**: ```sql ALTER TABLE 表名 ALTER COLUMN 列名 SET DATA TYPE 新数据类型; ``` 注意:不是所有数据库系统都支持直接修改列的数据类型,有时需要删除旧列并添加新列来实现。 - **修改列名**: 大多数数据库系统不直接支持修改列名的标准SQL语法,但可以通过重命名列来实现(这通常涉及到创建新列、复制数据、删除旧列等步骤,或使用数据库特定的语法)。 - **修改列约束**: 修改列的约束通常涉及添加或删除特定的约束条件,如设置主键、外键、唯一约束等,这通常需要使用`ADD CONSTRAINT`或`DROP CONSTRAINT`语句,并结合具体的约束类型。 #### 二、`ALTER TABLE`的高级功能 ##### 2.1 添加和删除主键约束 主键是表中每行数据的唯一标识。`ALTER TABLE`可用于添加或删除主键约束。 - **添加主键**: ```sql ALTER TABLE 表名 ADD CONSTRAINT 主键约束名 PRIMARY KEY (列名); ``` - **删除主键**(注意:直接删除主键可能需要先找到并删除对应的约束名): ```sql ALTER TABLE 表名 DROP CONSTRAINT 主键约束名; ``` ##### 2.2 添加和删除外键约束 外键用于在两个表之间建立关系,确保数据的参照完整性。 - **添加外键**: ```sql ALTER TABLE 子表名 ADD CONSTRAINT 外键约束名 FOREIGN KEY (子表列名) REFERENCES 父表名(父表列名); ``` - **删除外键**: ```sql ALTER TABLE 子表名 DROP CONSTRAINT 外键约束名; ``` ##### 2.3 修改表的其他属性 某些数据库系统还支持使用`ALTER TABLE`来修改表的其他属性,如更改表的存储引擎(在MySQL中)、更改表的默认字符集等。 ```sql -- MySQL示例:更改表的存储引擎 ALTER TABLE 表名 ENGINE = InnoDB; -- 更改表的默认字符集(需数据库支持) ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` #### 三、实际应用中的注意事项 1. **备份数据**:在进行任何重大表结构更改之前,都应该先备份相关数据,以防万一操作失误导致数据丢失。 2. **评估影响**:修改表结构可能会影响到基于该表的应用程序逻辑、性能以及数据的完整性。因此,在执行操作前,应充分评估其潜在影响。 3. **考虑事务**:在支持事务的数据库系统中,使用事务来封装`ALTER TABLE`操作可以确保操作的原子性,即要么全部成功,要么全部失败回滚。 4. **权限问题**:执行`ALTER TABLE`语句的用户需要具有足够的权限。确保在执行操作前,用户拥有相应的权限。 5. **数据库特定语法**:不同的数据库系统(如MySQL、PostgreSQL、SQL Server等)在`ALTER TABLE`语句的具体语法上可能存在差异。因此,在编写跨数据库系统的脚本时,需要特别注意这一点。 6. **性能考虑**:大型表的结构更改可能会对数据库性能产生显著影响,尤其是在高并发环境下。考虑在低峰时段执行此类操作,并监控执行过程中的性能变化。 7. **约束和依赖**:在修改表结构时,要特别注意表之间的约束和依赖关系。例如,删除一个被外键引用的列之前,必须先删除或修改这些外键约束。 #### 四、总结 `ALTER TABLE`语句是数据库管理中不可或缺的工具,它允许我们在不删除并重新创建表的情况下,灵活地调整表的结构。通过掌握`ALTER TABLE`的基本用法和高级功能,以及在实际应用中注意相关事项,我们可以更加高效地管理数据库表结构,满足不断变化的业务需求。
上一篇:
表的删除(DROP TABLE语句)
下一篇:
向Product表中插入数据
该分类下的相关小册推荐:
高性能的Postgres SQL
PostgreSQL入门教程
SQL基础教程(下)
SQL基础教程(中)