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