postgresql常用的SQL语句

本文深入讲解SQL语言的高级应用,包括字段与表名修改、条件更新、数据插入、级联删除及表恢复等核心操作,同时展示如何通过复杂查询获取分组后的特定数据。

更改字段类型 :

ALTER TABLE layer ALTER COLUMN ad_code TYPE VARCHAR (50);

更改表名 :

alter table 表名 rename to 新表名

更改字段名

alter table 表名 rename 字段名 to 新字段名

更改字段类型为bigint:

ALTER TABLE layer ALTER COLUMN ad_code
SET DATA TYPE BIGINT USING ad_code :: BIGINT

CASE WHEN 使用 :

update layer set ph_level =(
CASE
WHEN ph>8.5 then 1
when ph>=7.5 and ph <=8.5 then 2
when ph>=6.5 and ph <=7.5 then 3
when ph>=5.5 and ph <=6.5 then 4
when ph>=4.5 and ph <=5.5 then 5
when ph <=4.5 then 6
END
)
where "id" ="id";

循环插入其他表内数据:

INSERT INTO layer (ID, geom) SELECT
	topology.layer. ID,
	topology.layer.geom
FROM
	topology.layer
WHERE
	ID = ID;

在删除一个表时,如果该表的主键是另一个表的外键,如果不用cascade关键字就会报错:

drop table dict_loc_type; 
-- drop table dict_loc_type ORA-02449: 表中的唯一/主键被外键引用

-- 使用cascade关键字,表被成功删除:
drop table dict_loc_type cascade constraints;
-- Table dropped

使用flashback语句可以恢复被删除的表,但是被删除的外键无法恢复:

flashback table dict_loc_type to before drop;
-- DROP TABLE layer_yjfscqy CASCADE;

获取分组后每组前2条记录数据:

-- ROW_NUMBER()为返回的记录定义个行编号
-- PARTITION BY ad_code 是根据ad_code 分组 
SELECT
 *
FROM (
  SELECT
    ROW_NUMBER() OVER (PARTITION BY ad_code ORDER BY statics_year DESC) AS r,
    t.*
  FROM
    gdxgdk_statics t
) x
WHERE
  x.r <= 2 AND x.up_ad_code = 530300 --筛选条件
### 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、付费专栏及课程。

余额充值