doc-exports/docs/dws/dev/dws_04_0036.html
Lu, Huayi ef0ada5a59 DWS DEV 20240716 version
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2024-11-02 09:07:47 +00:00

116 lines
29 KiB
HTML

<a name="EN-US_TOPIC_0000001510162997"></a><a name="EN-US_TOPIC_0000001510162997"></a>
<h1 class="topictitle1">Creating and Managing Schemas</h1>
<div id="body8662426"><p id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_p10619133922618">A schema is the logical organization of objects and data in a database. Schema management allows multiple users to use the same database without interfering with each other. Third-party applications can be added to corresponding schemas to avoid conflicts. </p>
<p id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_ad688620dd190447280515535bc37fe6e">The same database object name can be used in different schemas in a database without causing conflicts. For example, both <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b88943870811410">a_schema</strong> and <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b105764550811410">b_schema</strong> can contain a table named <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b178603146211410">mytable</strong>. Users with required permissions can access objects across multiple schemas in a database.</p>
<p id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_aa8ec337a2a1741718cfbde0e195582ff">If a user is created, a schema named after the user will also be created in the current database.</p>
<div class="section" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_section17652140205310"><h4 class="sectiontitle">Public mode</h4><p id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_p17606129113412">Each database has a schema named <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b7492718132712">public</strong>. All users have the ability to use the public schema in the database, but only certain roles have the authority to create objects within it.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_sada77bb2ed844804ad83aed46553d0db"><h4 class="sectiontitle">Creating a Schema</h4><ul id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_ud41a1de7e2574faf87854ea403fa3bd0"><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_labbfd31c9e8440d491485ca435a4f34c">Run the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b649515451867">CREATE SCHEMA</strong> command to create a schema.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_s4f0bc159e34c4120ac3949394c5f0045"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="n">myschema</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_aa37ef6ba14e44c4a807a2080b31cd045">To create or access an object in the schema, the object name in the command should be composed of the schema name and the object name, which are separated by a dot (.), for example, <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b321877959104527">myschema.table</strong>.</p>
</li><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_l755776c4878c4edfb337ab5d511ecc83">Users can create a schema owned by others. For example, run the following command to create a schema named <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b8172181410717">myschema</strong> and set the owner of the schema to user<strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b8470101912714"> jack</strong>:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_sc7bd7031e41745ffaeb0f57f5f06dd27"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="n">myschema</span><span class="w"> </span><span class="k">AUTHORIZATION</span><span class="w"> </span><span class="n">jack</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_p15843645114417">If <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b74021592718">authorization username</strong> is not specified, the schema owner is the user who runs the command.</p>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_section13998104116562"><h4 class="sectiontitle">Modifying a Schema</h4><ul id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_ul11759114735620"><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_lbd8983740cec41f0ac03ec4fc2681dd5">Run the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b7227510689">ALTER SCHEMA</strong> command to change the schema name. Only the schema owner can change the schema name.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_screen13307125104"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">ALTER</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="k">schema_name</span><span class="w"> </span><span class="k">RENAME</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">new_name</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_li14031425718">Run the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b26305141087">ALTER SCHEMA</strong> command to change the schema owner.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_screen46605366577"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">ALTER</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="k">schema_name</span><span class="w"> </span><span class="k">OWNER</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">new_owner</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_section868521215287"><h4 class="sectiontitle">Setting the Schema Search Path</h4><p id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_ada78e7aaaa884e478c21e88ae4abf61b">The GUC parameter <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b14446228820">search_path</strong> specifies the schema search sequence. The parameter value is a series of schema names separated by commas (,). If no schema is specified during object creation, the object will be added to the first schema displayed in the search path. If there are objects with the same name in different schemas and no schema is specified for an object query, the object will be returned from the first schema containing the object in the search path.</p>
<ul id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_ul1652913237018"><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_li19529623909">Run the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b150495749811410">SHOW </strong>command to view the current search path.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_sf1f71b75227f4932bf93778630cf4336"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SHOW</span><span class="w"> </span><span class="n">SEARCH_PATH</span><span class="p">;</span>
<span class="w"> </span><span class="n">search_path</span>
<span class="c1">----------------</span>
<span class="w"> </span><span class="ss">&quot;$user&quot;</span><span class="p">,</span><span class="k">public</span>
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_en-us_topic_0156599225_p118434120229">The default value of <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b82012363811410">search_path</strong> is <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b102183446011410">"$user",public</strong>. <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b44610406411410">$user</strong> indicates the name of the schema with the same name as the current session user. If the schema does not exist, <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b62571483911410">$user</strong> will be ignored. By default, after a user connects to a database that has schemas with the same name, objects will be added to all the schemas. If there are no such schemas, objects will be added to only to the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b10248711410">public</strong> schema.</p>
</li><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_li14375054304">Run the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b9354132614913">SET </strong>command to modify the default schema of the current session. For example, if the search path is set to "<strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b1860654018919">myschema</strong>, <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b148008416911">public</strong>", <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b04841817107">myschema </strong>is searched first.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_s07254b6c5a9443c5bc22640bf46d1ede"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SET</span><span class="w"> </span><span class="n">SEARCH_PATH</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">myschema</span><span class="p">,</span><span class="w"> </span><span class="k">public</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<div class="p" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_p1531871325">You can also run the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b9275643131119">ALTER ROLE</strong> command to set search_path for a role (user). For example:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_screen19112528113219"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">ALTER</span><span class="w"> </span><span class="k">ROLE</span><span class="w"> </span><span class="n">jack</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">search_path</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">myschema</span><span class="p">,</span><span class="w"> </span><span class="k">public</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_section197711122152716"><h4 class="sectiontitle">Using a Schema</h4><p id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_a69962eb7e3b74e3bad215af61228c2b7">If you want to create or access an object in a specified schema, the object name must contain the schema name. To be specific, the name consists of a schema name and an object name, which are separated by a dot (.).</p>
<ul id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_uad4815fcff1f4ee88fdece3b2969e745"><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_lb6c77c468a93424ca1187c4249f6a2a7">Create a table <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b0252183317188">mytable</strong> in <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b59573172189">myschema</strong>. Create a table in <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b6921121412109">schema_name.table_name</strong> format.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_s6d2e9ac5456a4186ab076e8fc4738626"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">myschema</span><span class="p">.</span><span class="n">mytable</span><span class="p">(</span><span class="n">id</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="nb">varchar</span><span class="p">(</span><span class="mi">20</span><span class="p">));</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_l4f9f3fd6172b442ba71423449f584e2d">Query all data in the table <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b13374191513195">mytable</strong> in <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b71505194195">myschema</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_s2ff29a0bd71341a28c97d4c169c04e24"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">myschema</span><span class="p">.</span><span class="n">mytable</span><span class="p">;</span>
<span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">name</span>
<span class="c1">----+------</span>
<span class="p">(</span><span class="mi">0</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span>
</pre></div></td></tr></table></div>
</div>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_section6836629142210"><h4 class="sectiontitle">Viewing a Schema</h4><ul id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_ul741859102218"><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_li1651059122211">Use the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b14401159191911">current_schema()</strong> function to view the current schema.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_screen9515902214"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">current_schema</span><span class="p">();</span>
<span class="w"> </span><span class="n">current_schema</span><span class="w"> </span>
<span class="c1">----------------</span>
<span class="w"> </span><span class="n">myschema</span>
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_l7f2438b17b424139bf02c49f7e947597">To view the owner of a schema, perform the following join query on the system catalogs <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b4156502911410">PG_NAMESPACE</strong> and <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b149180788511410">PG_USER</strong>. Replace <em id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_i72459352611410">schema_name</em> in the statement with the name of the schema to be queried.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_s0986197b2f4e4d5ea8265f4930ed218e"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">s</span><span class="p">.</span><span class="n">nspname</span><span class="p">,</span><span class="n">u</span><span class="p">.</span><span class="n">usename</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">nspowner</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">PG_NAMESPACE</span><span class="w"> </span><span class="n">s</span><span class="p">,</span><span class="w"> </span><span class="n">PG_USER</span><span class="w"> </span><span class="n">u</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">nspname</span><span class="o">=</span><span class="s1">'schema_name'</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">s</span><span class="p">.</span><span class="n">nspowner</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">u</span><span class="p">.</span><span class="n">usesysid</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_lecaae9ea66d64072b1ab715073698836">To view a list of all schemas, query the system catalog <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b149826955811410">PG_NAMESPACE</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_s940ec357a54f4cb7b89d609e8408fe7c"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">PG_NAMESPACE</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_li14144165312218">Use the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b586798161113">PGXC_TOTAL_SCHEMA_INFO</strong> view to query the space usage of schemas in the cluster.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_screen6839754153613"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">PGXC_TOTAL_SCHEMA_INFO</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_l22931b8d595944e0a42a778fd3c64b37">To view a list of tables in a schema, query the system catalog <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b928907311410">PG_TABLES</strong>. For example, the following query will return a table list from <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b116318384911410">PG_CATALOG</strong> in the schema.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_s9de64766691d4cbbab0d430b3242d618"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="k">distinct</span><span class="p">(</span><span class="n">tablename</span><span class="p">),</span><span class="n">schemaname</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">PG_TABLES</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="n">schemaname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'pg_catalog'</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_section18721517122918"><h4 class="sectiontitle">Schema Permission Control</h4><p id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_aff4147521a744a5bb2679a5ee63657cb">By default, a user can only access database objects in its own schema. To access objects in other schemas, the user must have the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b3689161312215">usage</strong> permission of the corresponding schema.</p>
<p id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_p142851438205220">By granting the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b152701655125416">CREATE</strong> permission for a schema to a user, the user can create objects in this schema.</p>
<ul id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_uc4a214131a4f4747a96e67e926bfde24"><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_l06b3b3b58bf9456a8548206451f704a0">Grant the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b17879226172114">usage </strong>permission of <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b20907173612112">myschema</strong> to user <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b265118404216">jack</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_s4b1357b0013f43118f6b7502325bcf00"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">GRANT</span><span class="w"> </span><span class="k">USAGE</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">schema</span><span class="w"> </span><span class="n">myschema</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">jack</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_l82425455e6f34a028bbb8e4856274db3">Run the following command to revoke the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b5248930183319">USAGE</strong> permission for <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b842352706111723">myschema</strong> from <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b842352706111728">jack</strong>:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_s1028a928d34140cab9152f850c9299c5"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">REVOKE</span><span class="w"> </span><span class="k">USAGE</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">schema</span><span class="w"> </span><span class="n">myschema</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">jack</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_section83484280332"><h4 class="sectiontitle">Drop Schema</h4><ul id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_u419fb5335b4644cc858b24d5e282b541"><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_l41e626c874484fc2959fbe6033234d2f">Run the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b17508948162217">DROP SCHEMA</strong> command to delete an empty schema (no database objects in the schema).<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_s2d1eb7ca40e747c6932ce25650e13a79"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DROP</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">myschema</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_le00869df58e542b09fadffcb32ab8fc0">By default, a schema must be empty before being deleted. To delete a schema and all its objects (such as tables, data, and functions), use the <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b14280133818231">CASCADE</strong> keyword.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_sa1378d73a5a2483eb9f5206dbd1b601c"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DROP</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="n">myschema</span><span class="w"> </span><span class="k">CASCADE</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_section16601142924012"><h4 class="sectiontitle">System Schema</h4><ul id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_ul147761711134214"><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_li2737141624214">Each database has a <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b2698658014110">pg_catalog</strong> schema, which contains system catalogs and all built-in data types, functions, and operators. <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b84235270617230">pg_catalog</strong> is a part of the search path and has the second highest search priority. It is searched after the schema of temporary tables and before other schemas specified in <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b84235270617239">search_path</strong>. This search order ensures that database built-in objects can be found. To use a custom object that has the same name as a built-in object, you can specify the schema of the custom object.</li><li id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_li12737141617420">The <strong id="EN-US_TOPIC_0000001510162997__en-us_topic_0000001233563167_b316617311010">information_schema</strong> consists of a collection of views that contain object information in a database. These views obtain system information from the system catalogs in a standardized way.</li></ul>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_04_0016.html">Defining Database Objects</a></div>
</div>
</div>