Detailed Oracle table (table)

1 Overview

1. 表设计时,尽量遵从 '第三范式(3NF)'
2. 对象名称不能超过 30 个字符
3. 字符可以是 '字母''数字''_''$''#'

2 Grammar

Note: The following tests are composed of the following 3 users, simulating common operations in the production environment

1. odsdata:存放业务数据
2. odsrule:存放基表数据
3. odscde:执行操作(createinsertupdate 等)

2.1 Create a table

Step 1: Under the odsrule user, create the gender base table sex:

-- 创建表
CREATE TABLE odsrule.sex (
  sex_code     VARCHAR2(2),
  sex_descript VARCHAR2(10) NOT NULL,
  create_date  DATE NOT NULL,
  create_user  VARCHAR2(30) NOT NULL,
  update_date  DATE NOT NULL,
  update_user  VARCHAR2(30) NOT NULL
);
-- 添加 "主键约束" 信息
ALTER TABLE odsrule.sex ADD CONSTRAINT pk_sex_sex_code PRIMARY KEY(sex_code);
-- 添加 "备注" 信息
COMMENT ON TABLE odsrule.sex IS '性别基表';
COMMENT ON COLUMN odsrule.sex.sex_code IS '性别代码';
COMMENT ON COLUMN odsrule.sex.sex_descript IS '性别描述';
COMMENT ON COLUMN odsrule.sex.create_date IS '创建时间';
COMMENT ON COLUMN odsrule.sex.create_user IS '创建人';
COMMENT ON COLUMN odsrule.sex.update_date IS '更新时间';
COMMENT ON COLUMN odsrule.sex.update_user IS '更新人';
-- "授权" 信息
GRANT SELECT, INSERT, UPDATE ON odsrule.sex TO odscde;
GRANT REFERENCES ON odsrule.sex TO odsdata; -- 特别注意!!!

Insert several pieces of test data:

INSERT INTO odsrule.sex
  (sex_code, sex_descript, create_date, create_user, update_date, update_user)
VALUES
  ('1', '男', SYSDATE, 'admin', SYSDATE, 'admin');
  
INSERT INTO odsrule.sex
  (sex_code, sex_descript, create_date, create_user, update_date, update_user)
VALUES
  ('2', '女', SYSDATE, 'admin', SYSDATE, 'admin');

search result:

Insert picture description here


Step 2: Under the odsdate user, create the person information data table person_info, and rely on the odsrule.sex base table

CREATE TABLE odsdata.person_info (
  person_no    VARCHAR2(10),
  NAME         VARCHAR2(30) NOT NULL,
  sex_code     VARCHAR2(2),
  age          NUMBER(3) NOT NULL,
  create_date  DATE NOT NULL,
  create_user  VARCHAR2(30) NOT NULL,
  update_date  DATE NOT NULL,
  update_user  VARCHAR2(30) NOT NULL
);

ALTER TABLE odsdata.person_info ADD CONSTRAINT pk_person_info_person_no PRIMARY KEY(person_no);
ALTER TABLE odsdata.person_info ADD CONSTRAINT fk_person_info_sex_code FOREIGN KEY(sex_code)
REFERENCES odsrule.sex(sex_code);

COMMENT ON TABLE odsdata.person_info IS '人员信息表';
COMMENT ON COLUMN odsdata.person_info.person_no IS '人员编号';
COMMENT ON COLUMN odsdata.person_info.name IS '姓名'; 
COMMENT ON COLUMN odsdata.person_info.sex_code IS '性别代码';
COMMENT ON COLUMN odsdata.person_info.age IS '年龄';
COMMENT ON COLUMN odsdata.person_info.create_date IS '创建时间';
COMMENT ON COLUMN odsdata.person_info.create_user IS '创建人';
COMMENT ON COLUMN odsdata.person_info.update_date IS '更新时间';
COMMENT ON COLUMN odsdata.person_info.update_user IS '更新人';

GRANT SELECT, INSERT, UPDATE ON odsdata.person_info TO odscde;

Insert several pieces of test data:

INSERT INTO odsdata.person_info
  (person_no, NAME, sex_code, age, create_date, create_user, update_date, update_user)
VALUES
  ('001', '瑶瑶', '2', 18, SYSDATE, 'admin', SYSDATE, 'admin');

INSERT INTO odsdata.person_info
  (person_no, NAME, sex_code, age, create_date, create_user, update_date, update_user)
VALUES
  ('002', '优优', '1', 19, SYSDATE, 'admin', SYSDATE, 'admin');

Full query result:

SELECT pi.person_no 人员编号,
       pi.name 姓名,
       s.sex_descript 性别,
       pi.age 年龄
  FROM odsdata.person_info pi, -- person_no
       odsrule.sex s -- sex_code
 WHERE s.sex_code = pi.sex_code;

Insert picture description here

2.2 Modify the table

  • Demonstrate operation of person_info table under odsdata user
1. '增加' 一列或者多列
ALTER TABLE person_info ADD address VARCHAR2(50); -- 增加一列 '住址'
ALTER TABLE person_info ADD (id_type VARCHAR2(1), id_no VARCHAR2(10)); -- 增加 '证件类型', '证件号码'	

2. '修改' 一列或者多列
-- 数据类型
ALTER TABLE person_info MODIFY (address VARCHAR2(100)); -- 修改一列
ALTER TABLE person_info MODIFY (id_type VARCHAR(2), id_no VARCHAR2(20)); -- 修改多列
-- 列名
ALTER TABLE person_info RENAME COLUMN address TO new_address;
-- 表名
ALTER TABLE person_info RENAME TO new_person_info;

3. '删除' 一列或者多列
ALTER TABLE person_info DROP COLUMN new_address; -- 删除一列
ALTER TABLE person_info DROP (id_type, id_no); -- 删除多列

2.3 Delete and truncate tables

1. 清空表数据
TRUNCATE TABLE odsdata.person_info;

2. 删除表结构
DROP TABLE odsdata.person_info;

3 Common queries

权限说明:dba_xx > all_xx > user_xx (仅 dba_xx 需要授权)

1. 查询表信息 SELECT * FROM dba_tables;
2. 查询表的备注信息 SELECT * FROM dba_tab_comments:
3. 查询列信息 SELECT * FROM dba_tab_cols t ORDER BY t.column_id;
4. 查询列的备注信息 SELECT * FROM dba_col_comments t;

Guess you like

Origin blog.csdn.net/qq_34745941/article/details/99960820