通俗易懂的学会SQL,30道练习题(PostgreSQL基础版)

通俗易懂的学会SQL,30道练习题(PostgreSQL基础版),第1张

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录 前言🚀 1.数据定义语言DDL🌈 1.1 数据库操作🌈 1.2 表操作 🚀 2.处理数据DML🌈 2.1 INSERT INTO🌈 2.2 UPDATE🌈 2.3 DELETE 🚀 3、查询语言DQL🌈 3.1 SELECT 语句🌈 3.2 子查询🌈 3.3 LIKE 子句🌈 3.4 LIMIT 子句🌈 3.5 GROUP BY 语句🌈 3.6 WITH 子句

前言 PostgreSQL是加州大学伯克利分校计算机系开发的,一个开源免费的关系式数据库管理系统,经过长达15年以上的积极开发和不断改进,PostgreSQL已在可靠性、稳定性、数据一致性等获得了业内相对高的声誉
🚀 1.数据定义语言DDL 🌈 1.1 数据库操作

📣📣【选择数据库】

#使用 \l 用于查看已经存在的数据库:

#使用 \c 数据库名 来进入数据库:

#使用?查看所有信息,比如jempgdb=# \conninfo

#可以在连接数据库后面添加数据库名来选择数据库:


📣📣 【删除数据库】

PostgreSQL 删除数据库可以用以下三种方式:
1、使用 DROP DATABASE SQL 语句来删除。
2、使用 dropdb 命令来删除。
3、使用 pgAdmin 工具。
注意:删除数据库要谨慎操作,一旦删除,所有信息都会消失。
#DROP DATABASE 删除数据库
DROP DATABASE 会删除数据库的系统目录项并且删除包含数据的文件目录
DROP DATABASE 只能由超级管理员或数据库拥有者执行
DROP DATABASE 命令需要在 PostgreSQL 命令窗口来执行,语法格式如下:
DROP DATABASE [ IF EXISTS ] name

🌈 1.2 表操作

以下创建了一个表,表名为 COMPANY 表格,主键为 ID,NOT NULL 表示字段不允许包含 NULL 值:
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);

postgres=# \d --查看所有表
postgres=# \d department --查看表的定义

📣📣 【删除表】

我们创建了 COMPANY 和 DEPARTMENT 两个表,我们可以先使用 \d 命令来查看表是否创建成功:

从以上结果可以看出,我们表格已经创建成功,接下来我们删除这两个表:
postgres=# drop table department, company;
再使用 \d 命令来查看就找不到表

🚀 2.处理数据DML 🌈 2.1 INSERT INTO

在 jempgdb 数据库中创建 COMPANY 表
postgres=# create database jempgdb;
postgres=# \c jempgdb
postgres=# CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL,
JOIN_DATE DATE
);

在 COMPANY 表中插入以下数据:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE)
VALUES (1, ‘Paul’, 32, ‘California’, 20000.00,‘2001-07-13’);

以下实例插入多行:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE)
VALUES (4, ‘Mark’, 25, 'Rich-Mond ', 65000.00, ‘2007-12-13’ ),
(5, ‘David’, 27, ‘Texas’, 85000.00, ‘2007-12-13’);

🌈 2.2 UPDATE

更新在 PostgreSQL 数据库中的数据,我们可以用 UPDATE 来操作。
#以下是 UPDATE 语句修改数据的通用 SQL 语法:
UPDATE table_name
SET column1 = value1, column2 = value2…, columnN = valueN
WHERE [condition];
我们可以同时更新一个或者多个字段。
我们可以在 WHERE 子句中指定任何条件

更新 COMPANY 表中 id 为 3 的 salary 字段值:
UPDATE COMPANY SET SALARY = 15000 WHERE ID = 3;
同时更新 salary 字段和 address 字段的值:
UPDATE COMPANY SET ADDRESS = ‘Texas’, SALARY=20000;

🌈 2.3 DELETE

#DELETE 语句删除数据的通用语法:
DELETE FROM table_name WHERE [condition];
如果没有指定 WHERE 子句,PostgreSQL 表中的所有记录将被删除。
一般我们需要在 WHERE 子句中指定条件来删除对应的记录
条件语句可以使用 AND 或 OR 运算符来指定一个或多个。

删除 ID 为 2 的数据:
DELETE FROM COMPANY WHERE ID = 2;
删除整张 COMPANY 表:
DELETE FROM COMPANY;

🚀 3、查询语言DQL 🌈 3.1 SELECT 语句

PostgreSQL SELECT 语句用于从数据库中选取数据,结果被存储在一个结果表中,称为结果集。
#语法
SELECT 语句语法格式如下:
SELECT column1, column2,…columnN FROM table_name;
如果我们想读取表中的所有数据可以使用以下 SQL 语句:
SELECT * FROM table_name;

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

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

🌈 3.2 子查询

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

🌈 3.3 LIKE 子句

在 PostgreSQL 数据库中,我们如果要获取包含某些字符的数据,可以使用 LIKE 子句。
在 LIKE 子句中,通常与通配符结合使用,通配符表示任意字符,在 PostgreSQL 中,
主要有以下两种通配符:百分号 % 下划线 _
如果没有使用以上两种通配符,LIKE 子句和等号 = 得到的结果是一样的。

找出 AGE 以 2 开头的数据:
SELECT * FROM COMPANY WHERE AGE::text LIKE ‘2%’;
找出 address 字段中含有 - 字符的数据:
SELECT * FROM COMPANY WHERE ADDRESS LIKE ‘%-%’;

🌈 3.4 LIMIT 子句

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

🌈 3.5 GROUP BY 语句

根据 NAME 字段值进行分组,找出每个人的工资总额:
SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME;

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

🌈 3.6 WITH 子句

在 PostgreSQL 中,WITH 子句提供了一种编写辅助语句的方法,以便在更大的查询中使用。
WITH 子句有助于将复杂的大型查询分解为更简单的表单,便于阅读。这些语句通常称为通用表表达式(Common Table Express, CTE),
也可以当做一个为查询而存在的临时表。
WITH 子句是在多次执行子查询时特别有用,允许我们在查询中通过它的名称(可能是多次)引用它。
WITH 子句在使用前必须先定义。

With CTE AS
(Select
ID
, NAME
, AGE
, ADDRESS
, SALARY
FROM COMPANY )
Select * From CTE;

查找 SALARY(工资) 字段小于 20000 的数据并计算它们的和:
WITH RECURSIVE t(n) AS (
VALUES (0)
UNION ALL
SELECT SALARY FROM COMPANY WHERE SALARY < 20000
)
SELECT sum(n) FROM t;

欢迎分享,转载请注明来源:内存溢出

原文地址:http://outofmemory.cn/sjk/991262.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-21
下一篇2022-05-21

随机推荐

  • 加拿大皇后大学设施

      立思辰留学360介绍:皇后大学是安大略省第二古老的大学,1841年根据维多利亚女王的皇家宪章建立,原为教会赞助学校,1912年变为非教会学校。在学术方面,皇后大学一直保持着很高的水准,其生物、医学

    2022-07-03
    000
  • 马来西亚万达国际学院密集英语课程详解

    KBU万达国际学院成立于1990年,是由著名发展商四海栈联营集团所兴建 。该集团也是发展综合市镇-占地一千英亩(约6,000华亩)的万达镇 (Bandar Utama)的业主兼发展商。立思辰留学360

    2022-07-03
    000
  • 詹姆斯库克大学新加坡校区教学模式

    立思辰留学360新加坡部介绍:詹姆斯库克大学新加坡校区成立于2003年,是第一家由澳洲政府大学在新加坡的直属校区。学校所开设的课程、颁发的学位证书都与澳洲主校区完全相同。JCU新加坡校区在新加坡的学生

    2022-07-03
    000
  • 新加坡楷博学院传播管理大专怎么样

    立思辰留学360介绍:新加坡楷博高等教育学院传播管理大专课程涵盖大众传播的所有基本知识。课程设置包括公共关系写作、营销传播以及新闻发布、背景资料、通讯、杂志文章、手册、印刷广告及广播稿等各种书面材料的

    2022-07-03
    000
  • 西那瓦国际大学申请条件

    西那瓦国际大学立思辰留学360介绍,西那瓦国际大学(ShinawatraUniversity)由泰国前总理他信·西那瓦投资创办于1996年,位于泰国。西那瓦国际大学的目标是成为一所注重研究、追求卓越的

    2022-07-03
    000
  • 皇太后大学保健科学学院

    泰国清莱皇太后大学据立思辰留学360介绍,皇太后大学于1998年9月25日正式成立 , 她是一所国立自治大学。她的建立是为了回应泰国北方人民为缅怀诗娜卡琳皇太后殿下宏恩厚泽的需要,使之成为人民纪念、效

    2022-07-03
    000
  • 泰国班颂德皇家大学具体介绍

    班颂德皇家大学好吗?立思辰留学360介绍,泰国班颂德皇家大学(BansomedjchaoprayaRajabhatUniversity)是根据拉玛五世国王的意愿,按照英国公学的形式于1896年成立。当

    2022-07-03
    300
  • 曼谷皇家理工大学费用

    曼谷皇家理工大学立思辰留学360介绍,泰国皇家理工大学原名泰国皇家理工学院,2005年1月18日经泰国教育部批准正式更名为泰国皇家理工大学。是一个以机械制造和农业研究为主的工科大学,拥有36个校区遍布

    2022-07-03
    000
  • 留学美国席勒国际大学简介

    美国席勒大学以“一所大学,八个校园,七个国家”的鲜明特色吸引着世界各地的学生。毕业于这里的不论大专生、本科生或是研究生都拥有足够的技巧与能力确保自己在国际上个专业领域扮演其核心的角色。同时它与全世界四

    2022-07-03
    000

发表评论

登录后才能评论

评论列表(0条)

    保存