目录
一、安装
从官网下载直接安装https://www.postgresql.org/
二、基本操作
1、mac下搜索sql shell进入命令行工具
windows在安装目录下 */PostgreSQL 12/SQL Shell(psql)
2、可视化界面
三、基本命令
1、查看命令帮助
\help <command_name>
例如:
2、创建数据库
2-1、使用sql语句创建
CREATE DATABASE dbname;
2-2、使用createdb命令创建
createdb [option...] [dbname [description]]
使用pgadmin查看数据库
用命令行查看\l
3、选择数据库
\c + 数据库名
4、删除数据库
DROP DATABASE [ IF EXISTS ] name
如果出现如下报错说明有别的用户在占用数据库,要谨慎删除
postgres=# drop database if exists test01; ERROR: database "test01" is being accessed by other users
DETAIL: There is 1 other session using the database.
解决办法:先运行如下命令再删除
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datname='test01' AND pid<>pg_backend_pid();
# test01换成自己要删除的数据库
使用命令删除
dropdb [connection-option...] [option...] dbname
dropdb 命令只能由超级管理员或数据库拥有者执行。
5、创建表格
语法格式:
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
.....
columnN datatype,
PRIMARY KEY( 一个或多个列 )
);
创建一个学生表:
CREATE TABLE stu
(
id integer NOT NULL,
name text COLLATE pg_catalog."default" NOT NULL,
age integer not null
);
6、查看表
\d
查看表结构
\d tablename
7、删除表
DROP TABLE table_name;
8、插入数据
语法格式:
插入一条数据
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);
插入多条数据
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value11, value21, value31,...valueN1),
(value12, value22, value32,...valueN2),
....
(value1M, value2M, value3M,...valueNM);
向表中插入数据:
insert into stu (id, name, age)
values (1, 'xiaowang', 15);
insert into stu (id, name, age)
values (2, 'xiaohong', 22),
(3, 'dawang', 19),
(4, 'laowang', 78);
9、查看表数据
语法格式(与mysql相似)
SELECT column1, column2,...columnN FROM table_name WHERE 表达式;
select * from stu;
select name,age from stu;
select * from stu where name='laowang';
select * from stu where age>22;
10、and和or运算符
先向表中插入多点数据:
insert into stu (id, name, age)
values (5, 'zhangsan', 18),
(6, 'lisi', 19),
(7, 'wangwu', 78);
AND 运算符表示一个或者多个条件必须同时成立。
SELECT column1, column2, columnN
FROM table_name
WHERE [condition1] AND [condition2]...AND [conditionN];
查找id>5且age=78的同学
select * from stu where id>5 and age=78;
查找id>5或age=78的同学
select * from stu where id>5 or age=78;
11、like字句查询
在 LIKE 子句中,通常使用通配符模糊查询,主要有以下两种通配符:
百分号 %
表示任意个任意字符
下划线 _
表示一个任意字符
语法格式:
SELECT FROM table_name WHERE column LIKE 含有通配符的表达式;
查询名字里带有wang的同学
select * from stu where name like '%wang%';
查询名字以wang结尾的同学
select * from stu where name like '%wang';
查询名字里第二个字母时i的同学
select * from stu where name like '_i%';
12、order by
ORDER BY 用于对一列或者多列数据进行升序(ASC)或者降序(DESC)排列。
语法格式:
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
查询结果按年龄排序
升序(默认)
select * from stu order by age;
降序
select * from stu order by age desc;
13、group by分组
语法格式:
SELECT column-list
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2....columnN
按年龄分组:
select * from stu group by age;
按年龄分组并计算同龄人的数量:
select age, count(*) as num from stu group by age;
14、更新表数据
语法格式:
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
修改xiaohong的年龄为18岁
15、删除数据
DELETE FROM table_name WHERE [condition];
删除dawang
delete from stu where name='dawang';