alter table,复制, 单表查询

本文详细介绍了如何使用SQL语句进行表结构的修改,包括修改表名、增加和删除字段、修改字段类型、添加和删除主键等操作,并提供了丰富的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

修改表
语法:
1. 修改表名
      ALTER TABLE 表名
                          RENAME 新表名;
2. 增加字段
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…],
                          ADD 字段名  数据类型 [完整性约束条件…];
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
                           
3. 删除字段
      ALTER TABLE 表名
                          DROP 字段名;
删除外键:
alter table xxx drop foreign key 外键名;
4. 修改字段
      ALTER TABLE 表名
                          MODIFY  字段名 数据类型 [完整性约束条件…];
      ALTER TABLE 表名
                          CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
      ALTER TABLE 表名
                          CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
示例:
1. 修改存储引擎
mysql> alter table service 
    -> engine=innodb;

2. 添加字段
mysql> alter table student10
    -> add name varchar(20) not null,
    -> add age int(3) not null default 22;
    
mysql> alter table student10
    -> add stu_num varchar(10) not null after name;                //添加name字段之后

mysql> alter table student10                        
    -> add sex enum('male','female') default 'male' first;          //添加到最前面

3. 删除字段
mysql> alter table student10
    -> drop sex;

mysql> alter table service
    -> drop mac;

4. 修改字段类型modify
mysql> alter table student10
    -> modify age int(3);
mysql> alter table student10
    -> modify id int(11) not null primary key auto_increment;    //修改为主键

5. 增加约束(针对已有的主键增加auto_increment)
mysql> alter table student10 modify id int(11) not null primary key auto_increment;
ERROR 1068 (42000): Multiple primary key defined

mysql> alter table student10 modify id int(11) not null auto_increment;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

6. 对已经存在的表增加复合主键
mysql> alter table service2
    -> add primary key(host_ip,port);        

7. 增加主键
mysql> alter table student1
    -> modify name varchar(10) not null primary key;

8. 增加主键和自动增长
mysql> alter table student1
    -> modify id int not null primary key auto_increment;

9. 删除主键
a. 删除自增约束
mysql> alter table student10 modify id int(11) not null; 

b. 删除主键
mysql> alter table student10                                 
    -> drop primary key;

示例
示例

 

 

复制表

复制表结构+记录 (key不会复制: 主键、外键和索引)
mysql> create table new_service select * from service;
只复制表结构
mysql> select * from service where 1=2;        //条件为假,查不到任何记录
Empty set (0.00 sec)
mysql> create table new1_service select * from service where 1=2; 
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> create table t4 like employees;

 

删除表:

DROP TABLE 表名;

转载于:https://www.cnblogs.com/TF511/p/9997297.html

在 Hive 中,`ALTER TABLE` 语句用于修改现有表的结构,包括重命名表名、添加或删除列、更改列名或类型等。以下是常见的 `ALTER TABLE` 使用方法: ### 重命名表 可以使用 `RENAME TO` 子句来更改表的名称: ```sql ALTER TABLE old_table_name RENAME TO new_table_name; ``` 此操作将表名从 `old_table_name` 更改为 `new_table_name` [^1]。 ### 添加列 使用 `ADD COLUMNS` 可以为表添加一个或多个新列: ```sql ALTER TABLE table_name ADD COLUMNS (new_col1 data_type, new_col2 data_type); ``` 新增的列会出现在表的最后位置 [^1]。 ### 删除列 Hive 不直接支持删除列的操作。如果需要删除列,可以通过创建一个不包含该列的新表并复制数据的方式来实现。 ### 更改列名或类型 使用 `CHANGE` 子句可以更改列的名称和/或数据类型: ```sql ALTER TABLE table_name CHANGE old_col_name new_col_name new_data_type; ``` 此操作允许修改列名以及其数据类型 [^1]。 ### 替换所有列 使用 `REPLACE COLUMNS` 可以替换表中的所有列定义: ```sql ALTER TABLE table_name REPLACE COLUMNS (col1 data_type, col2 data_type, ...); ``` 此操作将删除原有的所有列,并替换为新的列列表 [^1]。 ### 示例 以下是一些具体的 `ALTER TABLE` 操作示例: #### 修改列名 ```sql ALTER TABLE employee CHANGE id emp_id INT; ``` 此语句将 `employee` 表中的 `id` 列重命名为 `emp_id` [^2]。 #### 修改列类型 ```sql ALTER TABLE employee CHANGE salary salary DOUBLE; ``` 此语句将 `employee` 表中的 `salary` 列的数据类型从 `float` 更改为 `double` [^2]。 #### 添加新列 ```sql ALTER TABLE employee ADD COLUMNS (hiredate DATE); ``` 此语句向 `employee` 表中添加了一个名为 `hiredate` 的新列,其数据类型为 `DATE` [^2]。 ### 注意事项 - 对于外部表,使用 `ALTER TABLE ... ADD PARTITION` 增加分区时,即使删除分区,数据文件也不会被删除。 - 修改表结构时,特别是涉及列的更改,需要注意数据兼容性问题,例如将 `INT` 类型更改为 `DOUBLE` 通常是安全的,但反向操作可能会导致数据丢失 [^4]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值