PostgreSQL简单的动态SQL语句

本文介绍了一种在不重建数据库的情况下动态调整字段长度的方法,并提供了生成批量修改字段及删除视图SQL语句的技术方案。

       今天在做项目时发现已部署的项目的数据库表中当初设计的表字段长度太短,导致有时数据不能正常录入,数据库中已有大批量的用户数据所以不能删库重建,所以需要动态的去修改已有的表字段属性。该数据库中几乎所有表都有该字段,所有需要每个表都去执行一条更改字段属性的SQL语句,数了数一共近百个表,而且在修改表字段属性时必须删除与该表关联的视图,在修改后再新建该视图,好吧,这下来要写多少SQL语句,还好问了某位牛人之后最起码修改100个表的字段属性的SQL和删除80个视图的SQL可分别通过一个SQL语句一次获取到,下面就是两条相关SQL语句,记录与此作为备忘记录。


动态生成删除piblic模式下的所有视图SQL;

select 'drop view '||viewname||';' from pg_views where schemaname='public'

动态生成将public模式下所有表的primary_pollutant长度设为50的SQL

select 'alter table '||tablename||' alter column primary_pollutant TYPE varchar(50);'  from pg_tables t where schemaname='public';

### PostgreSQL 常用 SQL 语句示例 以下是 PostgreSQL 中常用的 SQL 语句及其功能说明: #### 数据查询 (SELECT) 通过 `SELECT` 关键字可以从指定的表中检索数据。以下是一个基本的例子: ```sql SELECT id, name FROM runoob; ``` 此语句表示从名为 `runoob` 的表中选取 `id` 和 `name` 列的数据[^2]。 如果需要过滤特定记录,可以使用 `WHERE` 子句: ```sql SELECT * FROM users WHERE age > 30; ``` 这条语句会返回 `users` 表中年龄大于 30 的所有列的数据。 #### 插入数据 (INSERT INTO) 向表中插入新记录可以通过 `INSERT INTO` 实现: ```sql INSERT INTO employees VALUES(1234, 'John Doe', 'john@example.com', '+1234567890', '2023-01-01', 'Engineer', 50000.00, NULL, 10, 5); ``` 该语句将一条员工记录插入到 `employees` 表中[^4]。 #### 更新数据 (UPDATE) 更新现有记录可使用 `UPDATE` 语句: ```sql UPDATE products SET price = price * 1.1 WHERE category = 'Electronics'; ``` 这将把类别为 `Electronics` 的商品价格提高 10%。 #### 删除数据 (DELETE) 删除不需要的记录可通过 `DELETE` 完成: ```sql DELETE FROM orders WHERE order_date < '2022-01-01'; ``` 以上语句会移除订单日期早于 2022 年 1 月 1 日的所有订单。 #### 创建数据库和表 创建一个新的数据库可以用如下命令完成: ```sql CREATE DATABASE mydatabase; ``` 而定义一张新的表则需指明其结构: ```sql CREATE TABLE customers ( customer_id SERIAL PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), email VARCHAR(100) ); ``` #### 查看表结构 (\d) 要查看某张表的具体设计细节,可以在交互式环境中运行 `\d` 命令加上目标表的名字: ```bash \d customers ``` 它提供了有关字段类型、约束和其他元信息的内容[^3]。 #### 执行外部脚本文件 (\i) 当有大量预写好的 SQL 脚本时,可以直接加载并执行它们: ```bash \i /path/to/script.sql ``` 这样能够简化复杂任务的操作流程[^3]。 #### 控制事务 (BEGIN, COMMIT, ROLLBACK) 为了确保一组操作要么全部成功要么完全失败,在处理涉及多个更改的情况下应采用显式的事务管理机制: ```sql BEGIN; -- 多条修改指令... COMMIT; -- 或者 ROLLBACK 如果出现问题的话. ``` 这些命令有助于维护数据的一致性和可靠性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值