PostgreSQL简介以及简单使用
1.简介
PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。
PostgreSQL 开发者把它念作 post-gress-Q-L。
PostgreSQL 的 Slogan 是 "世界上最先进的开源关系型数据库"。
关于与mysql的区别参考:https://www.cnblogs.com/geekmao/p/8541817.html
2. 安装
1. 下载安装包:这里
2. 安装
直接下一步即可,需要注意:
(1) postgresql的默认账号是postgres
(2)postgresql的默认端口是5432
3.简单使用
1. 登录
psql -U postgres
2.查看存在的库
\l
3.创建数据库并且进入以及查看
postgres=# CREATE DATABASE test; CREATE DATABASE postgres=# \c test; 您现在已经连接到数据库 "test",用户 "postgres".
4.创建表以及查看信息
test-# CREATE TABLE DEPARTMENT( test(# ID INT PRIMARY KEY NOT NULL, test(# DEPT CHAR(50) NOT NULL, test(# EMP_ID INT NOT NULL test(# ); 错误: 语法错误 在 "CREATE" 或附近的 第2行CREATE TABLE DEPARTMENT( ^ test=# CREATE TABLE DEPARTMENT( test(# ID INT PRIMARY KEY NOT NULL, test(# DEPT CHAR(50) NOT NULL, test(# EMP_ID INT NOT NULL test(# ); CREATE TABLE test=# \d 关联列表 架构模式 | 名称 | 类型 | 拥有者 ----------+------------+--------+---------- public | department | 数据表 | postgres (1 行记录) test=# \d department 数据表 "public.department" 栏位 | 类型 | Collation | Nullable | Default --------+---------------+-----------+----------+--------- id | integer | | not null | dept | character(50) | | not null | emp_id | integer | | not null | 索引: "department_pkey" PRIMARY KEY, btree (id)
5. 插入一条数据以及搜索
test=# INSERT INTO department values(1, '测试', 1); INSERT 0 1 test=# select * from department; id | dept | emp_id ----+------------------------------------------------------+-------- 1 | 测试 | 1 (1 行记录)
6. 在插入一条进行分页查询(limit是取的行数,offset是偏移量,从0开始且包含offset指定的下标值)
test=# INSERT INTO department values(2, '测试2', 2); INSERT 0 1 test=# select * from department limit 1 offset 1; id | dept | emp_id ----+------------------------------------------------------+-------- 2 | 测试2 | 2 (1 行记录)
7. explain简单分析(列出的信息少于mysql的explain分析)
test=# explain select * from department where id = 1; QUERY PLAN ------------------------------------------------------------------------------------ Index Scan using department_pkey on department (cost=0.15..8.17 rows=1 width=212) Index Cond: (id = 1) (2 行记录)
其他事务类似于mysql,锁也有共享锁和排它锁。也有JSON类型的字段,mysql新版本(应该是5.7开始)也是支持JSON类型的字段。也有全文索引的功能,mysql5.7之后也支持全文索引。
只是公司用到了postgresql,所以简单的使用下postgresql。
补充:postgreSQL的schema模式
一个模式可以包含视图、索引、据类型、函数和操作符等。
相同的对象名称可以被用于不同的模式中而不会出现冲突,例如 schema1 和 myschema 都可以包含名为 mytable 的表。
使用模式的优势:
(1)允许多个用户使用一个数据库并且不会互相干扰。
(2)将数据库对象组织成逻辑组以便更容易管理。
(3)第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。
模式类似于操作系统层的目录,但是模式不能嵌套。
postgres=# create schema myschema; #创建模式 CREATE SCHEMA postgres=# create table myschema.company( #创建表且指定模式 postgres(# ID INT NOT NULL, postgres(# NAME VARCHAR (20) NOT NULL, postgres(# AGE INT NOT NULL, postgres(# ADDRESS CHAR (25), postgres(# SALARY DECIMAL (18, 2), postgres(# PRIMARY KEY (ID) postgres(# ); CREATE TABLE postgres=# select * from myschema.company; #查询指定模式的表 id | name | age | address | salary ----+------+-----+---------+-------- (0 行记录) postgres=# DROP SCHEMA myschema CASCADE; 删除模式级联删除数据 注意: 递归删除 表 myschema.company DROP SCHEMA
默认的schema是public模式。
补充:PG索引用法
PG创建索引:
CREATE INDEX index_name ON table_name(colname);
删除索引:
DROP INDEX index_name;
查看索引:
select * from pg_indexes where tablename='tableName';