欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

postgresql入门笔记

程序员文章站 2024-03-21 10:30:46
...

简介:postgresql数据库与mysql在操作数据方面很多都是一样的,只是在少数个别出有不同,只要你熟练使用mysql数据库,postgresql对你来说就是小菜一碟。
1)

登录

 命令:psql -h 172.16.35.179 -U username -d dbname 
 然后输入用户的密码即可进入psql环境。

切换数据库

 \c dbname username serverIP port
 数据库必选,其他参数可选

查看帮助

 help
 注意:psql的命令多数是以 \ 开始的

显示所有的数据库 :

 mysql: show databases
 psql: \l或\list

数据库切换

 mysql: use dbname
 psql: \c dbname

数据库下的所有表

 mysql: show tables  
 psql: \d

表所有字段

 mysql: show columns from table name
 psql: \d tablename

表描述

 mysql: describe tablename
 psql: \d+ tablename

登录退出

 mysql: quit 或者\q
 psql:\q

二)

数据类型:

      特殊类型:json,jsonb (后面会讲解)
      数值数据类型:smallint,integer,bigint,decimal,numeric,real,double,serial,bigserial。
	  字符串数据类型:char(size),character(size),varchar(size),character,varying(size),text
	  日期/时间数据类型:timestamp [ (p) ] [不带时区 ],timestamp [ (p) ]带时区,date,time [ (p) ] [ 不带时区 ],time [ (p) ] 带时区,interval [ fields ] [ (p) ]
	  其他:boolean,money,point,line,lseg,box,path,polygon,circle

3)

数据库(表)

 创建数据库:CREATE DATABASE database_name;
 删除数据库:drop database database_name
 
 创建表:
 CREATE TABLE table_name(  
   column1 datatype,  
   column2 datatype,  
   column3 datatype,  
   .....  
   columnN datatype,  
   PRIMARY KEY( one or more columns )  
);
 删除表:drop table table_name

 创建模式:模式(也叫架构)是指定的表集合。 它还可以包含视图,索引,序列,数据类型,运算符和函数。
  CREATE SCHEMA myschema
  删除制定架构的表
  DROP TABLE myschema.tb_test

4)

查询插入更新删除数据,(与mysql操作一致)

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

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

删除:
   DELETE FROM table_name  WHERE [condition];

查询:
   SELECT "column1", "column2".."column" FROM "table_name";
....

4)

json.jsonb 详解

 1)json存储快,使用慢; 存的时候不做处理,使用时再解析
 2)jsonb存储稍慢,存储时就做了解析,使用时速度较快
 3)两者的部分函数很相似,稍有区别

 操作符:->,->>,#>,#>>区别不大,只是返回的数据类型不同,->,#>返回json,而->>,#>>返回文本text

  -> // 右边传入整数(针对纯数组)
  例: select '[{"a":"foo"},{"b":"bar"},{"c":"baz"}]'::json->2 // 输出 {"c":"baz"}

  -> // 右边传入键值(针对关联数组)
  例: select '{"a": {"b":"foo"}, "c":{"a": "aaa"}}'::json->'a' // 输出 {"b":"foo"}

  ->> // 右边传入整数(针对纯数组)
  例: select '[{"a":"foo"},{"b":"bar"},{"c":"baz"}]'::json->>2 // 输出 {"c":"baz"}

  ->> // 右边传入键值(针对关联数组)
  例: select '{"a": {"b":"foo"}, "c":{"a": "aaa"}}'::json->>'a' // 输出 {"b":"foo"}

  #> // 获取json子对象,传入数组,返回json
  例: select '{"a": {"b":{"c": "foo"}}}'::json#> '{a,b}' // 输出 {"c": "foo"}

  #>> // 获取json子对象并转换为文本
  例: select '{"a": {"b":{"c": "foo"}}}'::json#>> '{a,b}' // 输出 {"c": "foo"}


相关函数: 
  json_each 和 jsonb_each , json_array_elements 和 jsonb_array_elements 。
  json_object_keys  // 返回json的键(多层只返回第一层),该函数不能用于纯数组.
  json_array_elements  // 提取转换纯数组元素
  json_extract_path   // 返回JSON值所指向的某个键元素(相当于 #> 操作符),该函数不能直接操作纯数组。
  array_to_json //把数组json转换为数组 ,参数可以直接写表名称
  row_to_json  把一行数据按Json字符串形式返回
  to_json  就是字符串,但是要加类型 'Fred said "Hi"'::text
  json_array_length 获取数组的长度
  json_each  遍历json数据
  json_each_text  遍历json数据,值类型是text
  json_populate_recordset  将json数据转化为表
    ```
相关标签: postgresql psql