PostgreSQL入门基本语法之DDL-(user、database、schema)
目錄
?
前言
1、用戶對象操作
1.1新增用戶
1.1.1 語法
1.1.2 常用例子
1.2修改用戶
1.2.1 語法
1.2.2 常用例子
1.3刪除用戶
1.3.1 語法
1.3.2 常用例子
2.數據庫對象操作
2.1創建數據庫
2.1.1 語法
2.1.2 常用例子
2.2 修改數據庫
2.2.1 語法
2.2.2 常用例子
2.3 刪除數據庫
2.3.1 語法
2.3.2 常用例子
3.模式對象操作
3.1 創建模式
3.1.1 語法
3.1.2 常用例子
3.2 修改模式
3.2.1 語法
3.2.2 常用例子
3.3 刪除模式
3.3.1 語法
3.3.2 常用例子
前言
數據庫中所有使用的sql命令,都可以使用psql 登錄數據庫后,使用\h ?命令 ?進行查看語法。如我們需要查看創建用戶的語法(create user)
?
第一步:psql 登錄數據庫
psql -h localhost -p 5432 -U postgres -d postgres
?
第二步:查看create ?user 語法
\h create user
1、用戶對象操作
1.1新增用戶
1.1.1 語法
命令: ??????CREATE USER
描述: ??????定義一個新數據庫角色
語法:
CREATE USER 名稱 [ [ WITH ] 選項 [ ... ] ]
?
選項可以是
?
??????SUPERUSER | NOSUPERUSER
????| CREATEDB | NOCREATEDB
????| CREATEROLE | NOCREATEROLE
????| INHERIT | NOINHERIT
????| LOGIN | NOLOGIN
????| REPLICATION | NOREPLICATION
????| BYPASSRLS | NOBYPASSRLS
????| CONNECTION LIMIT 連接限制
????| [ ENCRYPTED ] PASSWORD '口令'
????| VALID UNTIL '時間戳'
????| IN ROLE 角色名稱 [, ...]
????| IN GROUP 角色名稱 [, ...]
????| ROLE 角色名稱 [, ...]
????| ADMIN 角色名稱 [, ...]
????| USER 角色名稱 [, ...]
????| SYSID uid
1.1.2 常用例子
例一:新建用戶及設置用戶密碼
create user test_user password 'test_user';
創建test_user用戶并設置密碼為test_user。
例二:新建用戶并設置用戶權限
create user test1_user superuser password 'test1_user';
創建test1_user用戶并設置為超級用戶且設置密碼
1.2修改用戶
1.2.1 語法
命令: ??????ALTER USER
描述: ??????更改數據庫角色
語法:
ALTER USER role_specification [ WITH ] 選項 [ ... ]
?
選項可以是
?
??????SUPERUSER | NOSUPERUSER
????| CREATEDB | NOCREATEDB
????| CREATEROLE | NOCREATEROLE
????| INHERIT | NOINHERIT
????| LOGIN | NOLOGIN
????| REPLICATION | NOREPLICATION
????| BYPASSRLS | NOBYPASSRLS
????| CONNECTION LIMIT 連接限制
????| [ ENCRYPTED ] PASSWORD '口令'
????| VALID UNTIL '時間戳'
?
ALTER USER 名稱 RENAME TO 新的名稱
?
ALTER USER { role_specification | ALL } [ IN DATABASE 數據庫名稱 ] SET 配置參數 { TO | = } { 值 | DEFAULT }
ALTER USER { role_specification | ALL } [ IN DATABASE 數據庫名稱 ] SET 配置參數 FROM CURRENT
ALTER USER { role_specification | ALL } [ IN DATABASE 數據庫名稱 ] RESET 配置參數
ALTER USER { role_specification | ALL } [ IN DATABASE 數據庫名稱 ] RESET ALL
?
這里role_specification可以是:
?
????角色名稱
??| CURRENT_USER
??| SESSION_USER
1.2.2 常用例子
例一:修改用戶密碼
alter user test_user password 'test123';
將用戶test_user的密碼修改為test123。
例二:修改用戶權限
alter user test_user superuser;
將用戶test_user的權限修改為超級用戶權限
例三:修改用戶密碼有效期
alter user test_user valid until '2020-04-17 00:00:00';
修改用戶test_user密碼的有效時間為 2020-04-17 00:00:00。
1.3刪除用戶
1.3.1 語法
命令: ??????DROP USER
描述: ??????移除一個數據庫成員
語法:
DROP USER [ IF EXISTS ] 名稱 [, ...]
1.3.2 常用例子
drop user if exists test1_user;
若存在用戶test1_user則刪除該用戶。
2.數據庫對象操作
2.1創建數據庫
2.1.1 語法
命令: ??????CREATE DATABASE
描述: ??????建立新的數據庫
語法:
CREATE DATABASE 名稱
????[ [ WITH ] [ OWNER [=] 用戶名 ]
???????????[ TEMPLATE [=] 模版 ]
???????????[ ENCODING [=] 字符集編碼 ]
???????????[ LC_COLLATE [=] 排序規則 ]
???????????[ LC_CTYPE [=] 字符分類 ]
???????????[ TABLESPACE [=] 表空間的名稱 ]
???????????[ ALLOW_CONNECTIONS [=] allowconn ]
???????????[ CONNECTION LIMIT [=] 連接限制 ]
???????????[ IS_TEMPLATE [=] istemplate ] ]
2.1.2 常用例子
create database test_db owner test_user;
創建數據庫test_db 并指定數據庫的所屬者用戶為test_user;(當然,前提是創建了用戶test_user)
2.2 修改數據庫
2.2.1 語法
命令: ??????ALTER DATABASE
描述: ??????更改一個數據庫
語法:
ALTER DATABASE 名稱 [ [ WITH ] 選項 [ ... ] ]
?
選項可以是
?
????ALLOW_CONNECTIONS allowconn
????CONNECTION LIMIT 連接限制
????IS_TEMPLATE istemplate
?
ALTER DATABASE 名稱 RENAME TO 新的名稱
ALTER DATABASE 名稱 OWNER TO { 新的屬主 | CURRENT_USER | SESSION_USER }
ALTER DATABASE 名稱 SET TABLESPACE 新的表空間
ALTER DATABASE 名稱 SET 配置參數 { TO | = } { 值 | DEFAULT }
ALTER DATABASE 名稱 SET 配置參數 FROM CURRENT
ALTER DATABASE 名稱 RESET 配置參數
ALTER DATABASE 名稱 RESET ALL
2.2.2 常用例子
例一:修改數據庫名
alter database test_db rename to t_db;
將名為test_db的數據庫重命名為t_db;
例二:修改數據庫屬主
alter database t_db owner to postgres;
將數據庫t_db的屬主修改為postgres(對比例一查看,屬主由test_user重置為postgres)
2.3 刪除數據庫
2.3.1 語法
命令: ??????DROP DATABASE
描述: ??????移除數據庫
語法:
DROP DATABASE [ IF EXISTS ] 名稱
2.3.2 常用例子
drop database if exists t_db;
刪除數據庫t_db(對比2.2.2中的例二我們可以看到數據庫t_db已被刪除)
3.模式對象操作
準備測試用戶及數據庫
創建了用戶test_user和數據庫test_db,并且test_db的屬主是test_user。
圖中\c test_db test_user 為在psql命令行中切換數據庫及登錄用戶
命令詳情:\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}
?\c 數據庫名 ?用戶名 ??????同時切換數據庫及登錄用戶
?\c ?數據庫名 ?????????????只切換數據庫
?\c - 用戶名 ??????????????只切換登錄用戶
?
3.1 創建模式
3.1.1 語法
命令: ??????CREATE SCHEMA
描述: ??????建立新的架構模式
語法:
CREATE SCHEMA 模式名稱 [ AUTHORIZATION role_specification ] [ 模式中對象 [ ... ] ]
CREATE SCHEMA AUTHORIZATION role_specification [ 模式中對象 [ ... ] ]
CREATE SCHEMA IF NOT EXISTS 模式名稱 [ AUTHORIZATION role_specification ]
CREATE SCHEMA IF NOT EXISTS AUTHORIZATION role_specification
?
這里role_specification可以是:
?
????用戶名
??| CURRENT_USER
??| SESSION_USER
3.1.2 常用例子
例一:創建一個模式
create schema if not exists my_schema;
創建一個名為my_schema的模式
例二:創建一個與當前用戶同名的模式
create schema if not exists authorization current_user;
如下圖,當前用戶為test_user,使用該語法創建同名模式為test_user;
3.2 修改模式
3.2.1 語法
命令: ??????ALTER SCHEMA
描述: ??????更改架構模式的定義
語法:
ALTER SCHEMA 名稱 RENAME TO 新的名稱
ALTER SCHEMA 名稱 OWNER TO { 新的屬主 | CURRENT_USER | SESSION_USER }
3.2.2 常用例子
例一:修改模式名
alter schema my_schema rename to test_schema;
將名為my_schema的模式名重命名為 test_schema。
例二:修改模式屬主
alter schema test_schema owner to postgres;
將模式test_schema的屬主修改為postgres用戶。
3.3 刪除模式
3.3.1 語法
命令: ??????DROP SCHEMA
描述: ??????移除一個模式
語法:
DROP SCHEMA [ IF EXISTS ] 名稱 [, ...] [ CASCADE | RESTRICT ]
3.3.2 常用例子
drop schema if exists test_schema;
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的PostgreSQL入门基本语法之DDL-(user、database、schema)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 优秀的软文标题应该怎么起才能吸引人?
- 下一篇: mysql管理员权限哪个表_Mysql