PostgreSQL 基础知识

执行环境: psql

1. 创建一个表格

sql 复制代码
CREATE TABLE customers (
customer_id serial PRIMARY KEY,
	firstname VARCHAR(100) NOT NULL,
	lastname VARCHAR(100) NOT NULL,
	username VARCHAR(50) UNIQUE NOT NULL,
	password VARCHAR(50) NOT NULL,
	email VARCHAR(255) UNIQUE NOT NULL,
	created_on TIMESTAMPTZ NOT NULL	
);
  • customer_id:这是一个序列,意味着它将自动递增,用作主键,用来唯一标识每个客户。
  • created_on:这是一个不允许为空的日期时间字段,用来存储客户的创建时间。

2. 插入

sql 复制代码
INSERT INTO customers(firstname, lastname, username, password, email, created_on)
VALUES('Elizabeth', 'Banks', 'elizabethbanks', '4s$5eks9m', 'elizabethbanks@myemail.com', CURRENT_TIMESTAMP);
sql 复制代码
SELECT * FROM customers;

插入两条记录

sql 复制代码
INSERT INTO customers(firstname, lastname, username, password, email, created_on)
VALUES('Nicole', 'Kidman', 'nkidman', '392kMLK!m', 'nicole@kidman.com', CURRENT_TIMESTAMP),
('Leroy', 'Jenkins', 'leeroy', '4k2ln@Lm', 'leroy@email.com', CURRENT_TIMESTAMP);
sql 复制代码
SELECT * FROM customers;

3. 修改

sql 复制代码
UPDATE customers
SET username='aliceinwonderland'
WHERE email=
'elizabethbanks@myemail.com';
sql 复制代码
SELECT * FROM customers;

4. 查找

sql 复制代码
SELECT * FROM customers WHERE username='aliceinwonderland';
仅当"email"字段的值满足特定模式时才被选择,这个模式是以"@myemail.com"结尾的,而"%"符号表示可以有零个或多个字符。
sql 复制代码
SELECT username FROM customers WHERE email LIKE '%@myemail.com';
利用选择的数据创建一个新表
sql 复制代码
CREATE TABLE usernames AS SELECT username FROM customers WHERE email LIKE '%@myemail.com';

5. 排序

选择的数据将按照"lastname"字段进行降序排列
sql 复制代码
SELECT firstname, lastname
FROM customers
ORDER BY lastname DESC;
返回的结果将会包含每个客户的完整姓名、邮箱地址以及密码的长度,并且按照密码长度从短到长进行排序。
sql 复制代码
SELECT firstname || ' ' || lastname fullname, email, LENGTH(password) passwordlength
FROM customers
ORDER BY passwordlength;
选择 password 长度小于9的数据
sql 复制代码
SELECT firstname || ' ' || lastname fullname, email, LENGTH(password) passwordlength
FROM customers
WHERE LENGTH(password) < 9
ORDER BY passwordlength;

6. 删除

使用RETURNING关键字,返回受影响的行。
sql 复制代码
DELETE FROM customers
WHERE customer_id = 1
RETURNING *;
从"customers"表中删除"username"字段不等于'nkidman'的行
sql 复制代码
DELETE FROM customers
WHERE username <> 'nkidman'
RETURNING *;
从"customers"表中删除所有行。
sql 复制代码
DELETE FROM customers
RETURNING *;

7. 创建只读用户

该用户的有效期截止到'2024-02-02'。
sql 复制代码
CREATE USER readitralph
WITH PASSWORD 'password'
VALID UNTIL '2024-02-02';
授予名为"readitralph"的用户对数据库中所有数据的读取权限。
sql 复制代码
GRANT pg_read_all_data TO readitralph;
相关推荐
S1998_1997111609•X8 分钟前
论当今社会主义与人文关怀人格思想下的恶意仿生注入污染蜜罐描述进行函数值非法侵入爬虫的咼忄乂癿〇仺⺋.
数据库·网络协议·百度·ssh·开闭原则
倔强的石头_1 小时前
kingbase备份与恢复实战(六)—— 备份自动化与保留策略:Windows任务计划+日志追溯
数据库
轻刀快马2 小时前
别被 ORM 框架宠坏了:从一场“订单消失”悬案,看懂 MySQL 为什么要强推 InnoDB
数据库·mysql
后端漫漫3 小时前
Redis 客户端工具体系
数据库·redis·缓存
PaperData5 小时前
1988-2025年《中国人口和就业统计年鉴》全年份excel+PDF
数据库·人工智能·数据分析·经管
星河耀银海5 小时前
C语言与数据库交互:SQLite实战与数据持久化
c语言·数据库·sqlite·交互
过期动态5 小时前
MySQL中的约束
android·java·数据库·spring boot·mysql
程序员陆通5 小时前
月烧 400 刀到不到 20 刀:我是怎么把 OpenClaw 的 Token 账单砍掉 95% 的
java·前端·数据库
Shan12056 小时前
站在计算机领域视角看:SQL注入攻击
网络·数据库·sql
轻刀快马6 小时前
别干背八股文了:从一场“双十一秒杀”惨案,看懂 InnoDB 事务、锁与索引的底层齿轮
数据库·sql