Article Directory
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:执行操作(create、insert、update 等)
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:
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;
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;