PostgreSQL基础语法与实用技巧:自增长字段、时间操作与字符串转换
本文档主要介绍了 PostgreSQL 常用的基本 SQL 语法以及几个实用技巧,针对 PostgreSQL 数据库管理中的关键操作进行了详细阐述。以下是文章的主要知识点: 1. 字段自增长: PostgreSQL 支持 `serial` 和 `bigserial` 数据类型,它们可以自动为表中的某个字段(如 ID)提供递增的值。例如,创建序列 `id_seq` 的命令: ```sql CREATE SEQUENCE id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1; ``` 这里定义了一个名为 `id_seq` 的序列,每次插入新记录时,其值会递增1,最小值为1,最大值可达整数的最大值,且缓存1个值,提高性能。 2. 数据库内文本类数据转换为数字: 文本数据在某些场景下需要转换为数字,如将身份证号 `xzqdm` 的前六位转换为整数。在 `UPDATE` 语句中,使用了 ASCII 函数和字符串处理函数来实现: ```sql UPDATE mytestsys_dat SET id = (ASCII(substring(xzqdm, 1, 1)) - 48) * 100000 + (ASCII(substring(xzqdm, 2, 1)) - 48) * 10000 + (ASCII(substring(xzqdm, 3, 1)) - 48) * 1000 + (ASCII(substring(xzqdm, 4, 1)) - 48) * 100 + (ASCII(substring(xzqdm, 5, 1)) - 48) * 10 + (ASCII(substring(xzqdm, 6, 1)) - 48); ``` 这段代码通过逐位提取身份证号的每一位,并将其转换为对应的 ASCII 值,再减去 48(ASCII 码值 '0' 对应的值),然后相加得到整数。 3. SQL 查询技巧: - `LIKE` 操作用于模式匹配,例如查询包含特定区号的数据: ```sql SELECT tfsq, gid FROM DAT_TF WHERE position(tfsq IN '370211370203') > 0; ``` - `position()` 函数用来查找字符串中的子串位置,`position(tfsq in '370211370203') > 0` 表示查找 '370211' 在 `tfsq` 字段中的位置,返回值大于0即表示存在。 4. 基础数据操作: - 插入操作:使用 `INSERT INTO` 语句插入记录,同时设置 `ID` 字段的默认值。 - 更新操作:通过 `UPDATE` 语句更改字段值,这里更新 `S` 字段为 'lpc003'。 - 删除操作:使用 `DELETE FROM` 语句删除满足条件的记录,如删除 `ID` 为1的记录。 - 时间戳操作:`SELECT CURRENT_TIMESTAMP(0)` 获取当前时间,`::TIMESTAMP WITHOUT TIME ZONE` 转换为无时区时间。 这些知识点覆盖了 PostgreSQL 数据库的基本操作和数据转换,对熟悉和掌握 PostgreSQL 的用户来说非常实用。在实际开发中,理解和灵活运用这些语法能够提高数据管理效率。
select * from "M" --查询
INSERT INTO public."M" ("ID", "S") VALUES (1, 'lpc001'); --"插入"(public可加可不加)
INSERT INTO public."TimeTest" ("ID", "Time","F","FU") VALUES (1, now(), now(),now());--"插入‘现在’(时间类型字段)"
update "M" set "S"= 'lpc003' where "ID" = 1 -- “更改”
DELETE FROM public."M" where "ID" = 1 --“删除”
SELECT CURRENT_TIMESTAMP(0) :: TIMESTAMP WITHOUT TIME ZONE “查询数据库所在服务器时间并只显示 年月日,时分秒
----------------------------------------------------文本类型变数字类型(xzqdm为370101),可能比较笨,但是管用
UPDATE mytestsys_dat
SET id= (ascii(substring(xzqdm,1,1))-48) * 100000
+ (ascii(substring(xzqdm,2,1))-48) * 10000
+ (ascii(substring(xzqdm,3,1))-48) * 1000
+ (ascii(substring(xzqdm,4,1))-48) * 100
+ (ascii(substring(xzqdm,5,1))-48) * 10
+ (ascii(substring(xzqdm,6,1))-48) * 1
WHERE 1=1;
下载后可阅读完整内容,剩余3页未读,立即下载
- 粉丝: 1
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展