PostgreSQL学习总结—— PostgreSQL 语句 INSERT INTOSELECTUPDATEDELETE 等学习
Posted 科技D人生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL学习总结—— PostgreSQL 语句 INSERT INTOSELECTUPDATEDELETE 等学习相关的知识,希望对你有一定的参考价值。
一、INSERT INTO 语句
PostgreSQL INSERT INTO 语句用于向表中插入新记录。我们可以插入一行也可以同时插入多行。
语法
INSERT INTO 语句语法格式如下:
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);
column1, column2,...columnN 为表中字段名。
value1, value2, value3,...valueN 为字段对应的值。
在使用 INSERT INTO 语句时,字段列必须和数据值数量相同,且顺序也要对应。如果我们向表中的所有字段插入值,则可以不需要指定字段,只需要指定插入的值即可:
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
下表列出执行插入后返回结果的说明:
序号 | 输出信息 & 描述 |
---|---|
1 | INSERT oid 1 只插入一行并且目标表具有 OID的返回信息, 那么 oid 是分配给被插入行的 OID。 |
2 | INSERT 0 # 插入多行返回的信息, # 为插入的行数。 |
实例
在 runoobdb 数据库中创建 COMPANY 表:
runoobdb=# 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 表中插入以下数据:
runoobdb=# INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (1, 'Paul', 32, 'California', 20000.00,'2001-07-13');
INSERT 0 1
以下插入语句忽略 SALARY 字段:
runoobdb=# INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,JOIN_DATE) VALUES (2, 'Allen', 25, 'Texas', '2007-12-13');
INSERT 0 1
以下插入语句 JOIN_DATE 字段使用 DEFAULT 子句来设置默认值,而不是指定值:
runoobdb=# INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (3, 'Teddy', 23, 'Norway', 20000.00, DEFAULT );
INSERT 0 1
以下实例插入多行:
runoobdb=# 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');
INSERT 0 2
使用 SELECT 语句查询表格数据:
runoobdb=# SELECT * FROM company;
ID NAME AGE ADDRESS SALARY JOIN_DATE
---- ---------- ----- ---------- ------- --------
1 Paul 32 California 20000.0 2001-07-13
2 Allen 25 Texas 2007-12-13
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0 2007-12-13
5 David 27 Texas 85000.0 2007-12-13
二、SELECT 语句
PostgreSQL SELECT 语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集。
语法
SELECT 语句语法格式如下:
SELECT column1, column2,...columnN FROM table_name;
column1, column2,...columnN 为表中字段名。
table_name 为表名。
如果我们想读取表中的所有数据可以使用以下 SQL 语句:
SELECT * FROM table_name;
在上面 INSERT INTO 中,我们已经向表 company 插入了一些数据,使用 * 号可以读取该表的所有数据:
runoobdb=# SELECT * FROM company;
ID NAME AGE ADDRESS SALARY JOIN_DATE
---- ---------- ----- ---------- ------- --------
1 Paul 32 California 20000.0 2001-07-13
2 Allen 25 Texas 2007-12-13
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0 2007-12-13
5 David 27 Texas 85000.0 2007-12-13
我们也可以读取指定字段 ID 和 NAME:
runoobdb=# SELECT ID,NAME FROM company;
id | name
----+-------
1 | Paul
2 | Allen
3 | Teddy
4 | Mark
5 | David
(5 rows)
三、UPDATE 语句
如果我们要更新在 PostgreSQL 数据库中的数据,我们可以用 UPDATE 来操作。
语法
以下是 UPDATE 语句修改数据的通用 SQL 语法:
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
- 我们可以同时更新一个或者多个字段。
- 我们可以在 WHERE 子句中指定任何条件。
实例
创建 COMPANY 表
-- This is the file to create COMPANY table and to populate it with 7 records.
-- Just copy and past them on psql prompt.
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 );
数据内容如下:
runoobdb# select * from COMPANY;
id | name | age | address | salary
----+-------+-----+-----------+--------
1 | Paul | 32 | California| 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall| 45000
7 | James | 24 | Houston | 10000
(7 rows)
以下实例将更新 COMPANY 表中 id 为 3 的 salary 字段值:
runoobdb=# UPDATE COMPANY SET SALARY = 15000 WHERE ID = 3;
得到结果如下:
id | name | age | address | salary
----+-------+-----+------------+--------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 15000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall | 45000
7 | James | 24 | Houston | 10000
3 | Teddy | 23 | Norway | 15000
从结果上看,COMPANY 表中的 id 为 3 的 salary 字段值已被修改。以下实例将同时更新 salary 字段和 address 字段的值:
runoobdb=# UPDATE COMPANY SET ADDRESS = 'Texas', SALARY=20000;
得到结果如下:
id | name | age | address | salary
----+-------+-----+---------+--------
1 | Paul | 32 | Texas | 20000
2 | Allen | 25 | Texas | 20000
4 | Mark | 25 | Texas | 20000
5 | David | 27 | Texas | 20000
6 | Kim | 22 | Texas | 20000
7 | James | 24 | Texas | 20000
3 | Teddy | 23 | Texas | 20000
(7 rows)
四、DELETE 语句
你可以使用 DELETE 语句来删除 PostgreSQL 表中的数据。
语法
以下是 DELETE 语句删除数据的通用语法:
DELETE FROM table_name WHERE [condition];
如果没有指定 WHERE 子句,PostgreSQL 表中的所有记录将被删除。
一般我们需要在 WHERE 子句中指定条件来删除对应的记录,条件语句可以使用 AND 或 OR 运算符来指定一个或多个。
实例
创建 COMPANY 表
-- This is the file to create COMPANY table and to populate it with 7 records.
-- Just copy and past them on psql prompt.
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 );
runoobdb# select * from COMPANY;
id | name | age | address | salary
----+-------+-----+-----------+--------
1 | Paul | 32 | California| 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall| 45000
7 | James | 24 | Houston | 10000
(7 rows)
以下 SQL 语句将删除 ID 为 2 的数据:
runoobdb=# DELETE FROM COMPANY WHERE ID = 2;
得到结果如下:
id | name | age | address | salary
----+-------+-----+-------------+--------
1 | Paul | 32 | California | 20000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall | 45000
7 | James | 24 | Houston | 10000
(6 rows)
从上面结果可以看出,id 为 2 的数据已被删除。以下语句将删除整张 COMPANY 表:
DELETE FROM COMPANY;
以上是关于PostgreSQL学习总结—— PostgreSQL 语句 INSERT INTOSELECTUPDATEDELETE 等学习的主要内容,如果未能解决你的问题,请参考以下文章