16道经典SQL试题(postgreSQL版,配图附答案)

Posted 莫若心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了16道经典SQL试题(postgreSQL版,配图附答案)相关的知识,希望对你有一定的参考价值。

📢📢📢📣📣📣
哈喽!大家好,我是【莫若心】,一位上进心十足的【大数据领域博主】!😜😜😜
擅长主流数据Oracle、mysql、PG 运维开发
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

🐴 1.环境准备

🌈1.1 建表

#创建COMPANY表,数据内容如下:
DROP TABLE COMPANY;
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'David', 27, 'Texas', 85000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 );
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );

🌈1.2 查询表

select * from COMPANY;

🐴 2.实战案例

🚀🚀 找出 AGE(年龄) 字段大于等于 25,并且 SALARY(薪资) 字段大于等于 65000 的数据
SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;

🚀🚀 找出 AGE(年龄) 字段大于等于 25,或者 SALARY(薪资) 字段大于等于 65000 的数据
SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;

🚀🚀 在公司表中找出 AGE(年龄) 字段不为空的记录

🚀🚀 在 COMPANY 表中找出 NAME(名字) 字段中以 Pa 开头的的数据

🚀🚀 列出AGE(年龄) 字段不为 25 或 27 的数据:

🚀🚀 列出 AGE(年龄) 字段在 25 到 27 的数据:
SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;

🚀🚀 以下的 SELECT 语句使用了 SQL 的子查询,
子查询语句中读取 SALARY(薪资) 字段大于 65000 的数据,
然后通过 EXISTS 运算符判断它是否返回行,如果有返回行则读取所有的 AGE(年龄) 字段。
SELECT AGE FROM COMPANY
WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

🚀🚀 找出限定的数量的数据,即读取 4 条数据:
SELECT * FROM COMPANY LIMIT 4;

🚀🚀 从第三位开始提取 3 个记录:
SELECT * FROM COMPANY LIMIT 3 OFFSET 2;

🚀🚀 对结果根据NAME字段值进行降序,SALARY 字段值进行升序排列:
SELECT * FROM COMPANY ORDER BY NAME DESC,SALARY;

🚀🚀 根据 NAME 字段值进行分组,找出每个客户的工资总额,且name降序:
SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME DESC;

🚀🚀 找出根据 name 字段值进行分组,并且名称的计数大于 1 数据:
SELECT NAME FROM COMPANY GROUP BY name HAVING count(name) > 1;

🚀🚀 SELECT 语句中使用 DISTINCT 子句:

🚀🚀 SELECT DISTINCT name FROM COMPANY;

🚀🚀 在 SELECT 语句中使用子查询,查询薪资大于4500的员工
jempgdb=# SELECT * FROM COMPANY WHERE ID
IN (SELECT ID FROM COMPANY WHERE SALARY > 45000) ;

🚀🚀 把COMPANY 表中所有 AGE 大于27的客户的 SALARY 更新为原来的 0.50 倍
jempgdb=# UPDATE COMPANY SET SALARY = SALARY * 0.50
WHERE AGE IN (SELECT AGE FROM COMPANY_BKP WHERE AGE >= 27 );


🚀🚀🚀🚀 体系化掌握SQL,关注以下博客
https://blog.csdn.net/weixin_41645135/category_11653817.html

大家点赞、收藏、关注、评论啦 👇🏻👇🏻👇🏻

以上是关于16道经典SQL试题(postgreSQL版,配图附答案)的主要内容,如果未能解决你的问题,请参考以下文章

经典71道Android试题及答案

Linux运维工程师经典笔试题30道

100道Python经典练习题.pdf(附答案)

100道Python经典练习题.pdf(附答案)

几道经典动态内存分配笔试题!楼下大爷做完直呼就这?(题目+答案+详解)C语言

《PostgreSQL面试题集锦》学习与回答