【PostgreSQL】SQL 基础语法笔记

SQL 基础语法笔记

《PostgreSQL修炼之道:从小工到专家(第2版)》 reading

1 DDL

1.1 基础语法

创建表

CREATE table2 table_name (
	col1_name data_type,
	col2_name data_type,
);

指定主键

CREATE table2 table_name (
	col1_name data_type primary key,
	col2_name data_type,
);

删除表

DROP table2 table_name;
1.2 TRUNCATE TABLE 语句
TRUNCATE TABLE table;

注意它与 DELETE FROM table_name; 的不同。

2 DML

2.1 INSERT 语句

语法一

INSERT INTO table_name VALUES(value1,value2);

语法二

INSERT INTO student(col1_name,col2_name) VALUES(value1,value2);
INSERT INTO student(col2_name,col1_name) VALUES(value2,value1);

以上两行代码插入的内容相同。

可以对应全部列,也可以对应部分列。如果是部分列,未指定的列的对应数据为 NULL。

INSERT INTO student(col1_name) VALUES(value1);
2.1.1 INSERT…SELECT 语句
INSERT INTO table2 SELECT * FROM table1;

将表 1 的所有数据插入表 2 中,例如,可用于备份表。

INSERT INTO table_bak SELECT * FROM table;

2.2 UPDATE 语句

针对所有列的更新

UPDATE table_name SET col_name=value;

带有条件的更新

UPDATE table_name SET col_name=value WHERE子句;

同时更新多列

UPDATE table_name SET col1_name=value1,col1_name=value1,col2_name=value2 WHERE子句;

注意,如果 value 为字符串,需用单引号包起而非双引号。

2.3 DELETE 语句

删除表内全部数据

DELETE FROM table_name;

删除特定列数据

DELETE FROM table_name WHERE子句;

其中,WHERE 子句用于筛选出特定列。

3 DQL

3.1 基础语法

基本语法一

SELECT col_name FROM table_name;
SELECT col1.name,col2.name FROM table_name;

基础语法二

SELECT 包含列名的算数表达式 FROM table_name;
SELECT 算数表达式;

也可用 WHERE 子句。

3.2 排序

正序

select * from table_name order by col_name;
select * from table_name order by col1_name,col2_name;

倒序

select * from table_name order by col_name DESC;
select * from table_name order by col1_name DESC,col2_name;
select * from table_name order by col1_name,col2_name DESC;
select * from table_name order by col1_name DESC,col2_name DESC;

注意:ORDER BY 子句应在 where 子句之后,不然就会报错。

3.3 分组查询

SELECT col_name,聚合函数 FROM table_name GROUP BY col_name;

3.4 多表关联语句

SELECT col_name,COL_NAME FROM table,table2 WHERE 多表关联条件;

如果感觉表名太长,可以为其取个别名,如 a、b。

SELECT col_name,COL_NAME FROM table a,table2 b WHERE 多表关联条件;

有意思的是,别名可以先于表名出现(一般存在子查询语句),如

SELECT cols_name(SELECT max(value) as max_value FROM table a WHERE a.col_name = b.COL_NAME) as max_value FROM table2 b;

仅作为示例以说明这一点,不必过分关注语句内容。

3.5 UNION 语句

SELECT * FROM table WHERE子句 UNION SELECT * FROM table where子句;

默认结果集中相同的两条记录合并成一条。如果不想合并

SELECT * FROM table WHERE子句 UNION ALL SELECT * FROM table where子句;

4 psql 基本操作

使用 \d 显示数据库中有哪些表;

使用 \d table_name 可以显示这张表的定义情况;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂杀傲骨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值