超炫酷的网站,二次元wordpress博客,软件公司的税收优惠政策,营销技巧数据库database #创建数据库#xff0c;指定字符集UTF8#xff0c;缺省情况下新数据库将通过复制标准系统数据库template0来创建#xff0c;且仅支持使用template0来创建。 CREATE DATABASE devdb ENCODING UTF8 template template0; CREATE DATABASE testdb; 标识符的命名…数据库database #创建数据库指定字符集UTF8缺省情况下新数据库将通过复制标准系统数据库template0来创建且仅支持使用template0来创建。 CREATE DATABASE devdb ENCODING UTF8 template template0; CREATE DATABASE testdb; 标识符的命名需要遵守如下规范 * 标识符需要为字母a-z、下划线_、数字0-9或美元符号$。 * 标识符必须以字母a-z或下划线_开头。 ENCODING [ ] encoding 可选。指定数据库使用的字符编码 TEMPLATE [ ] template可选。模板名。即从哪一个模板创建新数据库。GaussDB采用从模板数据库复制的方式来创建新的数据库。 #修改数据库搜索路径 ALTER DATABASE testdb SET search_path TO pa_catalog,public; #查询搜索路径 show search_path; #查询数据库 SELECT datname FROM pg_database; \l #切回切换回默认数据库postgres \c postgres #重命名数据库 ALTER DATABASE testdb RENAME TO testdb1 表table #行存表 CREATE TABLE PART ( P_PARTKEY BIGINT NOT NULL, P_NAME VARCHAR(55) NOT NULL, P_MFGR CHAR(25) NOT NULL, P_BRAND CHAR(10) NOT NULL, P_TYPE VARCHAR(25) NOT NULL, P_SIZE BIGINT NOT NULL, P_CONTAINER CHAR(10) NOT NULL, P_RETAILPRICE DECIMAL(15,2) NOT NULL, P_COMMENT VARCHAR(23) NOT NULL ) WITH (ORIENTATION ROW); #列存表 CREATE TABLE PART1 ( P_PARTKEY BIGINT NOT NULL, P_NAME VARCHAR(55) NOT NULL, P_MFGR CHAR(25) NOT NULL, P_BRAND CHAR(10) NOT NULL, P_TYPE VARCHAR(25) NOT NULL, P_SIZE BIGINT NOT NULL, P_CONTAINER CHAR(10) NOT NULL, P_RETAILPRICE DECIMAL(15,2) NOT NULL, P_COMMENT VARCHAR(23) NOT NULL ) WITH (ORIENTATION COLUMN); #查看表信息 \d #增加列 ALTER TABLE part ADD COLUMN p_col1 bigint; #增加列默认值 ALTER TABLE part ALTER COLUMN p_col1 SET DEFAULT 1; #删除列默认值 ALTER TABLE part ALTER COLUMN p_col1 drop DEFAULT ; #修改列数据类型 ALTER TABLE part MODIFY p_col1 INT; #修改列名称 ALTER TABLE part RENAME p_col1 to p_col; #查看表结构 \d part #添加约束 CREATE UNIQUE INDEX bmsql_oorder_idx1 ON bmsql_oorder USING btree (o_w_id, o_d_id, o_carrier_id, o_id); #添加索引 create index bmsql_customer_idx1 on bmsql_customer (c_w_id, c_d_id, c_last, c_first); #查看索引 \di bmsql_customer_idx1 用户user #创建用户 CREATE USER hccdp SYSADMIN IDENTIFIED BY NHY^7ujm; CREATE USER jim PASSWORD Gaussdb123; CREATE USER dim CREATEDB PASSWORD Gaussdb123; #修改密码 ALTER USER jim IDENTIFIED BY Abcd123 REPLACE Gaussdb123; #添加权限 ALTER USER jim CREATEROLE; #锁定用户 解锁用户 ALTER USER jim ACCOUNT LOCK; ALTER USER jim ACCOUNT UNLOCK; #删除用户 DROP USER jim CASCADE; #查看角色 \du jim #查看用户列表 SELECT * FROM pg_user; 模式Schema #创建模式 在数据库创建用户时系统会自动帮助用户创建一个同名Schema CREATE SCHEMA ds; #更改模式名 ALTER SCHEMA ds RENAME TO ds_new; #修改模式的所有者 ALTER SCHEMA ds_new OWNER TO jack; #查看模式的所有者 SELECT s.nspname,u.usename AS nspowner FROM pg_namespace s, pg_user u WHERE s.nspowner u.usesysid; #查看模式 \dn 权限 #sysadmin权限授权给他 CREATE USER joe PASSWORD Gaussdb123; ALTER USER joe with sysadmin; #查看用户权限变化 \du #撤回权限 ALTER USER joe with nosysadmin; #使用schema权限 GRANT USAGE ON SCHEMA tpcds TO joe; #表所有权限 GRANT ALL PRIVILEGES ON tpcds.reason TO joe; #列的权限 GRANT select (r_reason_sk,r_reason_id,r_reason_desc),update (r_reason_desc) ON tpcds.reason TO joe; #数据库连接权限 创建schema 且允许joe将此权限授权给其他用户 GRANT create,connect on database postgres TO joe WITH GRANT OPTION; #创建角色 CREATE ROLE tpcds_manager PASSWORD Gaussdb123; #赋予权限给角色 GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager; 存储过程示例 #创建表 插入数据 CREATE TABLE employee (id varchar(100),name varchar(100),salary int); CREATE TABLE ep_grade (id varchar(100),grade varchar(100),flag int); Insert into employee values(1,张三,5000); Insert into employee values(2,李四,5000); Insert into employee values(3,王五,5000); Insert into employee values(4,赵六,5000); Insert into employee values(5,太一,5000); Insert into employee values(6,太二,5000); Insert into employee values(7,太三,5000); Insert into employee values(8,太四,5000); Insert into ep_grade values(1,A,2022); Insert into ep_grade values(2,S,2021); Insert into ep_grade values(3,B,2021); Insert into ep_grade values(4,B,2021); Insert into ep_grade values(5,A,2021); Insert into ep_grade values(6,C,2022); Insert into ep_grade values(7,C,2021); Insert into ep_grade values(8,B,2022); #创建存储过程 CREATE OR REPLACE PROCEDURE proc_emp() AS DECLARE EP_ID VARCHAR(100); GRADE VARCHAR(10); SALARY INT; CURSOR C1 IS select distinct id,grade FROM ep_grade where Flag 2021; BEGIN OPEN C1; LOOP FETCH C1 INTO EP_ID,GRADE; EXIT WHEN C1%NOTFOUND; Case GRADE when S then update employee set salary salary1000 where idEP_ID ; when A then update employee set salary salary500 where idEP_ID ; when B then update employee set salary salary100 where idEP_ID; when C then update employee set salary salary-200 where idEP_ID; END Case; DBE_OUTPUT.PRINT_LINE(ID: ||EP_ID||, Grade: ||GRADE||, updated.); END LOOP; CLOSE C1; END; / #调用存储过程 call proc_emp();