1. 程式人生 > >postgresql 命令

postgresql 命令

# Postgresql 建立主鍵並設定自動遞增

# 重置id自增起始 值(從1開始)
alter sequence fame_queue_id_seq restart with 1

# 方法一
  SERIAL:加此關鍵字代表遞增
  PRIMARY KEY:主鍵

# 方法二
  
# 建表
  create table test_c 
  (
   id integer PRIMARY KEY,
   name character varying(128)
  );

# 建立序列
  CREATE SEQUENCE test_c_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

# 將表test_c 的id設定為自增長
  alter table test_c alter column id set default nextval('test_c_id_seq');

# 時間函式
  current_timestamp
  
  插入示例:insert into demo (add_time) values(current_timestamp)
  
  查詢格式化示例:select to_char(d.add_time,'YYYY-MM-DD HH24:MI:SS') from department d 

  sql 中如何將字串時間轉換為timestamp 時間戳
  register_time >= to_timestamp(#{draw_time1}, 'YYYY-MM-DD HH24:MI:SS') and to_timestamp(#{draw_time2},'YYYY-MM-DD HH24:MI:SS') > register_time


# ifnull 判斷然後賦予預設值
  select  coalesce(column,0) as column from table

# postgresql 查詢連線數
  select * from pg_stat_activity;

# 修改資料型別
alter table tb101 alter id type int using id::int;


# centos7 資料庫安裝

# 1. yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
# 2. yum install postgresql10
# 3. yum install postgresql10-server
# 4. 初始化資料庫,並設定開啟自啟動
     /usr/pgsql-10/bin/postgresql-10-setup initdb
     systemctl enable postgresql-10 (啟動伺服器)
     systemctl start postgresql-10 (開啟自啟動)

# 5. PostgreSQL安裝後會建立一個使用者,名為postgres
# 輸入 su - postgres 並回車,切換至使用者
# 輸入 psql -U postgres 並回車,登入資料庫
# 輸入 ALTER USER postgres with encrypted password 'abc123';(不要漏了“;”)並回車,設定預設使用者postgre的密碼,此處密碼為abc123,可自行修改
# 檢視新的資料目錄:show data_directory;
# 輸入\q並回車, 退出資料庫
# 輸入exit並回車,退出使用者。 

# 啟動資料庫
  service postgresql-10 start
  service postgresql-10 stop

# 遷移資料庫開始

# 找到postgresql-10.service所在目錄:
      /usr/lib/systemd/system/postgresql-10.service  該檔案中,Environment 表示資料存放目錄

# 拷貝資料存放目錄到指定地方     
cp -rf /var/lib/pgsql/10/ /data/database/pgsql

# 設定新目錄的許可權
sudo chown -R postgres:postgres /data/database/pgsql
sudo chmod 700 /data/database/pgsql

# 過載:systemctl daemon-reload


# postgresql 配置訪問的ip

# 1. 修改配置檔案:postgresql.conf    預設地址:vim /usr/local/pgsql/data/postgresql.conf
# 2. 修改監聽地址:
    #listen_addresses='localhost'
    #將上面這行改成如下
    listen_addresses='*'
# 3. 修改配置檔案:pg_hba.conf  與postgresql.confg在同一個目錄
     新增一條IP授權記錄(如192.168.2.23),可以對一個網段授權
     # 這是在/pgsql/data/pg_hba.conf檔案里加
     # IPv4 myhost connections:
     host    all         all         192.168.2.0/24          trust(password)
     第一個 all 是指所有資料庫
     第二個 all 是指所有使用者
     192.168.2.0/24 表示 192.168.2.0 -192.168.2.255 網段的所有地址都可以訪問

# postgresql 許可權管理

# 1. 建立新使用者,如 dbuser:
    CREATE USER dbuser WITH PASSWORD '123456';

# 2. 建立新的資料庫,該資料庫屬於dbuser使用者:
    CREATE DATABASE lmmr OWNER dbuser;

# 3. 將新資料庫的所有許可權分配給dbuser使用者:
    GRANT ALL PRIVILEGES ON DATABASE lmmr TO dbuser;

# 4. 將某角色許可權賦予給某使用者:
    GRANT "group" TO guest; //將group許可權分配給guest使用者

# 5. 將某資料庫所有許可權分配給某使用者:
    grant all on database lmmr to dbuser;
    grant all on all tables in schema public to dbuser; // 起作用的是這句 要進入crm_db 操作,在那個db環境執行就授哪個db的權

切換資料庫,相當於mysql的use dbname
\c dbname
列舉資料庫,相當於mysql的show databases
\l
列舉表,相當於mysql的show tables
\dt
查看錶結構,相當於desc tblname,show columns from tbname
\d tblname
檢視索引 
\di
檢視角色
\du


# 匯入資料:
psql -U postgres -d fame -f D:/fame.sql