docker安装postgresql和持久化启动

docker pull postgres
docker run --name 
\<container-name> -p 5433:5433 
\-e POSTGRES_PASSWORD=123456 
\-v pgdata:/var/lib/postgresql/data 
\-d postgres
docker exec -it <container-name> bash
# bash of postgresql container
su postgres#change user
createuser -P -s -e <username>#创建自定义用户,输入密码两次
#进入psql shell,postgres用户才有这个命令
psql
#为刚刚的创建数据库
create database test_db owner=<username>
#查看所有数据库
\l

回到mac终端,推出container

# 使用 ID 或名称验证 PostgreSQL 容器的状态 id=...
docker ps -a -f name=postgres
# 容器日志
docker logs postgres 

postgresql学习

1. 简单使用数据库和表

#psql内,承上面的操作
\c test_db#选择数据库
#postgres用户的bash内链接数据库
psql -h localhost -p 5433 -U test test_db#注意这个端口,我报错,说是支持tcp/ip什么的
#回到psql
drop database test_db;#好像只有postgres才能删除,默认三个数据库postgres + template0/1,不能删除
#还是默认使用postgres数据库吧
create table student(name text not null);#创建表
\d #查看表 \d student
drop table student;

1.1模式

  • 回顾:已学到数据库和表的创建切换删除,用户的创建
  • 模式(SCHEMA)是PostgreSQL的集合。一个模式可以包含视图、索引、数据类型、函数和操作符等。标红的都视作重要概念
#psql
create schema myschema;#创建模式
create table myschema.company(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25),
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);#模式下的company表
DROP SCHEMA myschema;#其中的所有对象已经被删除否则拒绝删除
DROP SCHEMA myschema CASCADE;# 强制级联删除

1.2简单插入数据到表和简单查询表中的记录(数据)

  • 回顾:使用schema管理一个数据库下的多个表和表同级的模式对象
#psql
# 字段对应的插入
insert into myschema.company(id,name,age) values(1,'fuck',25);
select * from myschema.company;
select id shit from myschema.company;#这里的shit为id别名

1.3复杂一点的对表条件查询

  • 回顾:对表的插入和简单查询
#psql
select name from myschema.company where id = 1;
#where 后面接 字段 条件

细化一下字段 条件规则,这里与上面的表无关,只是测试where后的字段 条件的使用

  1. age > 25 and id < 10
  2. age > 25 or id < 10
  3. age is not null # is null
  4. name like ‘Pa%’ #通配,以Pa开头,_表示占一位,这个字符串严格顺序,'_2fuck%'表示第二位开始以2fuck开头的字符串, 支持not like
  5. age in (25,30) #枚举匹配 age = 25 or age = 30, not in
  6. age between 25 and 30 #not betweem … and …
  7. exists (子查询或子条件查询)

其他不在where引导的条件查询

  1. 分组后的having 条件: SELECT NAME FROM myschema.COMPANY GROUP BY name HAVING count(name) < 2;

参考一下oracle的条件查询


1.4更新(修改)和删除

#psql
update myschema.company set name = 'fuck pussy' where id = 1;# 不指定where条件时将字段下的所有值设置
delete from myschema.company where id = 1;
delete from myschema.company;#整表的记录都删除

1.5对表字段(列级)约束的种类,可以延伸到表级

  1. not null约束
  2. unique约束
  3. primary key约束
  4. foreign key约束
  5. check约束(枚举约束)
  6. execlude约束
  7. 删除约束

这里应用在数据库表的设计,暂时不讲

1.6连接查询(连接查询到底是什么,是分立的两张张表合查成一张,相同字段约去吗?)

你可能感兴趣的:(数据库/Oracle数据库,docker,postgresql,容器)