PostgreSQL学习笔记(更新ing)+c# 使用ef连接数据库postgreSQL

目录

PostgreSQL学习笔记

一、PostgreSQL创建、删除数据库(表)、架构

1、创建数据库 CREATE DATABASE

在PostgreSQL中,可以使用CREATE DATABASE命令创建数据库。
语法:
CREATE DATABASE database_name;
这里,database_name是指定要创建的数据库的名称。

PostgreSQL使用查询工具创建数据库
打开SQL Shell(psql),执行以下创建语句

CREATE DATABASE database_name;

2、查看数据库

postgres=# \l

3、删除数据库

postgres=# drop database testdb; 

4、创建表

在PostgreSQL中,CREATE TABLE语句用于在任何给定的数据库中创建一个新表。
语法:

CREATE TABLE table_name(  
   column1 datatype,  
   column2 datatype,  
   column3 datatype,  
   .....  
   columnN datatype,  
   PRIMARY KEY( one or more columns )  
);

PostgreSQL使用UI创建表 -
首先选择要创建表的数据库。
左键单击与所选数据库关联的框类型结构,将看到目录和模式(架构)。
左键单击与模式(架构)关联的框类型结构。现在可以看到 public 。
左键单击与公共( public )关联的框类型结构,就可以看到有数据表。
选择数据表,右键单击数据表,会得到一个新的弹出表框,创建所需的表。

示例:

CREATE TABLE public.student2
 ( 
    id integer NOT NULL, 
    name character(100), 
    subjects character(1), 
    CONSTRAINT student2_pkey PRIMARY KEY (id) 
) 
WITH (
    OIDS=FALSE
 );
ALTER TABLE public.student2 
    OWNER TO postgres; 
COMMENT ON TABLE public.student2 
IS '这是一个学生信息表2';

5、删除表

postgres=# 
postgres=# drop table student2; 
DROP TABLE 
postgres=#

6、架构

模式(也叫架构)是指定的表集合。 它还可以包含视图,索引,序列,数据类型,运算符和函数。
创建模式
在PostgreSQL中,CREATE SCHEMA语句用于创建模式。 模式不能嵌套。
语法:

CREATE SCHEMA schema_name;

通过SQL命令行直接创建 -
CREATE SCHEMA myschema;

示例:

-- Table: myschema.tb_test 
-- DROP TABLE myschema.tb_test; 
CREATE TABLE myschema.tb_test 
( 
    id integer, 
    name character(254) 
) 
WITH ( 
    OIDS=FALSE 
); 
ALTER TABLE myschema.tb_test
    OWNER TO postgres;

二、PostgreSQL数据类型

PostgreSQL中主要有三种类型的数据类型:
数值数据类型
字符串数据类型
日期/时间数据类型

1、数值数据类型

在这里插入图片描述
decimal(size,d)
numeric(size,d)
容纳带有小数的数字。
“size” 规定数字的最大位数。“d” 规定小数点右侧的最大位数。

2、字符串数据类型

在这里插入图片描述

3、日期/时间数据类型

在这里插入图片描述

4、 一些其他数据类型

在这里插入图片描述

三、PostgreSQL查询工具

插入INSERT
查询SELECT
更新UPDATE
删除 DELETE
ORDER BY子句
分组(GROUP BY子句)
Having字句

1、插入INSERT

在PostgreSQL中, INSERT 查询用于在表中插入新行。 您可以一次插入单行或多行到表中。
语法:

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)  
VALUES (value1, value2, value3,...valueN);

注意:column1, column2, column3,…columnN是要插入数据的表中的列的名称。
示例:

CREATE TABLE public.table01
(
    ID integer NOT NULL,
    NAME character(100),
    AGE integer,
    ADDRESS character(100),
    SALARY decimal
);

INSERT INTO public.table01( ID, NAME, AGE, ADDRESS, SALARY)  
VALUES
(1, 'Maxsu', 25, '海口市人民大道2880号', 109990.00 ),
(2, 'minsu', 25, '广州中山大道 ', 125000.00 ),
(3, '李洋', 21, '北京市朝阳区', 185000.00),   
(4, 'Manisha', 24, 'Mumbai', 65000.00),
(5, 'Larry', 21, 'Paris', 85000.00);

在这里插入图片描述

2、查询SELECT

在PostgreSQL中,SELECT语句用于从数据库表中检索数据。 数据以结果表格的形式返回。 这些结果表称为结果集。
语法:

SELECT "column1", "column2".."column" FROM "table_name";

这里,column1,column2,… columnN指定检索哪些数据的列。 如果要从表中检索所有字段,则必须使用以下语法:

SELECT * FROM "table_name";

示例:
执行以下查询从表中检索指定字段:

SELECT id,name FROM table01;

在这里插入图片描述
3、更新UPDATE
在PostgreSQL中,UPDATE语句用于修改表中现有的记录。 要更新所选行,您必须使用WHERE子句,否则将更新所有行。
语法:
以下是 update 语句的基本语法:

UPDATE table_name  
SET column1 = value1, column2 = value2...., columnN = valueN  
WHERE [condition];

示例
将ID为1的员工(“EMPLOYEES”表)记录更新AGE的值为29和SALARY的值为9800。

UPDATE public.EMPLOYEES_test
SET age = 29, salary = 9800 
WHERE id=1;

更改前:

SELECT * FROM public.employees_test

在这里插入图片描述

更改后:
在这里插入图片描述
您可以看到ID为1的记录的已更新:AGE和SALARY列。

4、删除 DELETE

DELETE语句用于从表中删除现有记录。 “WHERE”子句用于指定删除所选记录的条件,如是不指定条件则将删除所有记录。
语法:
以下是DELETE语句的基本语法:

DELETE FROM table_name  
WHERE [condition];

示例:

DELETE FROM public.EMPLOYEES_test
 WHERE ID = 1;

在这里插入图片描述

注意:如果不使用“WHERE”条件,整个表中的记录都将被删除。

5、 ORDER BY子句

ostgreSQL ORDER BY 子句用于按升序或降序对数据进行排序。数据在一列或多列的基础上进行排序。
语法:

SELECT column-list  
FROM table_name  
[WHERE condition]  
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

参数说明:
column_list:它指定要检索的列或计算。
table_name:它指定要从中检索记录的表。FROM子句中必须至少有一个表。
WHERE conditions:可选。 它规定必须满足条件才能检索记录。
ASC:升序。也是可选的。它通过表达式按升序排序结果集(默认,如果没有修饰符是提供者)。
DESC:降序。也是可选的。 它通过表达式按顺序对结果集进行排序。

示例:

SELECT * 
FROM public.EMPLOYEES_test
ORDER BY AGE ASC;

在这里插入图片描述

6、 分组(GROUP BY子句)

PostgreSQL GROUP BY 子句用于将具有相同数据的表中的这些行分组在一起。 它与SELECT语句一起使用。
GROUP BY 子句通过多个记录收集数据,并将结果分组到一个或多个列。 它也用于减少输出中的冗余。
语法:

SELECT column-list  
FROM table_name  
WHERE [conditions ]  
GROUP BY column1, column2....columnN  
ORDER BY column1, column2....columnN

注意:在 GROUP BY 多个列的情况下,您使用的任何列进行分组时,要确保这些列应在列表中可用。
示例:

SELECT AGE, SUM(SALARY)
FROM public.EMPLOYEES_test
GROUP BY AGE;

在这里插入图片描述
如何减少冗余数据:
再来看看下面这个例子:
我们在“EMPLOYEES”表中插入一些重复的记录。添加以下数据:

INSERT INTO public.EMPLOYEES_test VALUES (6, '李洋', 24, '深圳市福田区中山路', 135000);  
INSERT INTO public.EMPLOYEES_test VALUES (7, 'Manisha', 19, 'Noida', 125000);  
INSERT INTO public.EMPLOYEES_test VALUES (8, 'Larry', 45, 'Texas', 165000);

INSERT INTO public.EMPLOYEES_test( ID, NAME, AGE, ADDRESS, SALARY)  
VALUES
(6, '李洋', 24, '深圳市福田区中山路', 135000),
(7, 'Manisha', 19, 'Noida', 125000),
(8, 'Larry', 45, 'Texas', 165000);
SELECT * FROM public.EMPLOYEES_test;  //检索所有字段

在这里插入图片描述
执行以下查询以消除冗余:

SELECT NAME, SUM(SALARY)   
FROM public.EMPLOYEES_test
GROUP BY NAME;

上面的SQL语句是按名字 ( NAME ) 执行分组统计每个名字的薪水总额,如:两个名字叫作李洋的薪水总额是:320000等等,得到结果如下 -
在这里插入图片描述

7、Having字句

在PostgreSQL中,HAVING子句与GROUP BY子句组合使用,用于选择函数结果满足某些条件的特定行。
语法:

SELECT column1, column2  
FROM table1, table2  
WHERE [ conditions ]  
GROUP BY column1, column2  
HAVING [ conditions ]  
ORDER BY column1, column2

示例1:
在这个例子中,它将显示名称(name)数量小于2的记录。
执行以下查询:

SELECT NAME
FROM public.EMPLOYEES_test
GROUP BY NAME HAVING COUNT (NAME) < 2;

在这里插入图片描述
示例2:
执行以下查询表“EMPLOYEES”中name字段值计数大于1的名称。

SELECT NAME,COUNT (NAME)
FROM public.EMPLOYEES_test 
GROUP BY NAME HAVING COUNT (NAME) > 1;

在这里插入图片描述

四、PostgreSQL条件查询

AND 条件
OR 条件
AND & OR 条件
NOT 条件
LIKE 条件
IN 条件
NOT IN 条件
BETWEEN 条件
检索所有字段

SELECT * FROM public.EMPLOYEES_test;  

1、AND 条件

PostgreSQL AND条件与WHERE子句一起使用,以从表中的多个列中选择唯一的数据。
语法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition]    
AND [search_condition];

示例:
下面来查询所有ID小于4并且薪水大于120000的员工数据信息,执行以下查询语句:

SELECT *  
FROM public.EMPLOYEES_test  
WHERE SALARY > 120000  
AND ID <= 4;

在这里插入图片描述

2、OR 条件

PostgreSQL OR条件与WHERE子句一起使用,以从表中的一列或多列列中选择唯一数据。
语法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition]    
OR [search_condition];

示例:
查询名字是李洋或者地址为Noida员工信息,执行以下查询:

SELECT *  
FROM public.EMPLOYEES_test
WHERE NAME = '李洋'  
OR ADDRESS = 'Noida';

在这里插入图片描述

3、AND & OR 条件

PostgreSQL AND&OR条件在仅一个查询中提供了AND和OR条件的优点。
语法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition]  AND [search_condition]     
OR [search_condition];

示例:
查询名字的值为李洋和地址的值为’北京市朝阳区‘,或者ID值大于等7的记录信息,执行以下查询:

SELECT *  
FROM public.EMPLOYEES_test  
WHERE (NAME = '李洋' AND ADDRESS = '北京市朝阳区')  
OR (ID>= 7);

在这里插入图片描述

4、NOT 条件

PostgreSQL NOT条件与WHERE子句一起使用以否定查询中的条件。
语法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] NOT [condition];

示例:
查询那些年龄不是21和24的所有记录,执行以下查询:

SELECT *  
FROM public.EMPLOYEES_test 
WHERE age NOT IN(21,24);

在这里插入图片描述

5、LIKE 条件

PostgreSQL LIKE条件与WHERE子句一起用于从指定条件满足LIKE条件的表中获取数据。
语法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] LIKE [condition];

示例1:
查询名字以Ma开头的数据记录,如下查询语句:

SELECT *   
FROM public.EMPLOYEES_test  
WHERE NAME LIKE 'Ma%';

在这里插入图片描述
‘Ma%’——以Ma开头
‘%su’——以su结尾
%大道% ’——含有大道

6、IN 条件

PostgreSQL IN条件与WHERE子句一起使用,从指定条件满足IN条件的表中获取数据。
语法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] IN [condition];

示例:

SELECT * 
FROM public.EMPLOYEES_test
WHERE AGE IN (19, 21);

在这里插入图片描述

7、NOT IN 条件

PostgreSQL NOT IN条件与WHERE子句一起使用,以从指定条件否定 IN 条件的表中获取数据。
语法:

SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] NOT IN [condition];
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值