创建human用户登录数据库创建表
根据人力资源管理系统中表的设计,创建human用户登录数据库创建
准备阶段
把运行脚本复制到D:\app\Administrator\product\11.2.0\dbhome_1\demo\schema\human_resources\下。
运行脚本@D:\app\Administrator\product\11.2.0\dbhome_1\demo\schema\human_resources\hr_main.sql。我先前已经创建过hr,所以用户名为hr01.
验证用户是否创建成功
创建human用户,create user human identified by human;
其中by后面的是密码,随便写。
修改human密码
解锁并登陆human
会发现连接失败,这是因为缺会话(session)权限
用sys用户授予用户权限
导入数据时会发现访问其他用户表权限不足,需要sysdba授权。
但是发现对表空间权限不足,仍需要sysdba授权。
实验阶段
1、 创建REGIONS表
2、 创建COUNTRIES表
3、 创建lOCATIONS表
4、 创建DEPARTMENTS表
5、 创建JOBS表
6、 创建EMPLOYEES表
7、 创建JOB_HISTROY表
8、 创建SAL_GRADES表
9、 创建UERS表
10、 使用子查询创建一个表,保存工资高于1500元的员工的员工号、员工姓名和部门号。
11、 使用子查询创建一个包含员工号、员工email、员工工资及部门号信息的,其中员工号为主键、email唯一。
12、 查询当前用户拥有的所有表的信息。
13、查询employees表中所有约束的名称和类型。
创建表语句
CREATE TABLE regions(
region_id NUMBER PRIMARY KEY NOT NULL,
region_name VARCHAR2(25));
CREATE TABLE countries(
country_id CHAR(2) PRIMARY KEY NOT NULL,
country_name VARCHAR2(40),
region_id NUMBER REFERENCES regions(region_id));
CREATE TABLE locations(
location_id NUMBER(4) PRIMARY KEY NOT NULL,
street_address VARCHAR2(40),
postal_code VARCHAR2(12),
city VARCHAR2(30) NOT NULL,
state_province VARCHAR2(25),
country_id CHAR(2) REFERENCES countries(country_id));
CREATE TABLE departments(
department_id NUMBER(4) PRIMARY KEY NOT NULL,
department_name VARCHAR2(30) NOT NULL,
manager_id NUMBER(6),
location_id NUMBER(4) REFERENCES locations(location_id));
CREATE TABLE jobs(
job_id VARCHAR2(10) PRIMARY KEY NOT NULL,
job_title VARCHAR2(35) NOT NULL,
min_salary NUMBER(6),
max_salary NUMBER(6));
CREATE TABLE employees(
employee_id NUMBER(6) PRIMARY KEY NOT NULL,
first_name VARCHAR2(20),
last_name VARCHAR2(25) NOT NULL,
email VARCHAR2(25) NOT NULL,
phone_number VARCHAR2(20),
hire_date DATE NOT NULL,
job_id VARCHAR2(10) NOT NULL REFERENCES jobs (job_id),
salary NUMBER(8,2) CHECK (salary > 0),
commission_pct NUMBER(2,2),
manager_id NUMBER(6),
department_id NUMBER(4) REFERENCES departments(department_id));
CREATE TABLE job_history(
employee_id NUMBER(6) NOT NULL
REFERENCES employees(employee_id),
start_date DATE NOT NULL,
end_date DATE NOT NULL,
job_id VARCHAR2(10) NOT NULL
REFERENCES jobs(job_id),
department_id NUMBER(4) REFERENCES
departments(department_id),
CONSTRAINT jhist_date_interval
CHECK (end_date>start_date),
CONSTRAINT jhist_emp_id_st_date_pk
PRIMARY KEY (employee_id, start_date));
CREATE TABLE sal_grades(
grade NUMBER PRIMARY KEY,
min_salary NUMBER(8,2),
max_salary NUMBER(8,2));
CREATE TABLE users(
user_id NUMBER(2)PRIMARY KEY,
user_name CHAR(20),
password VARCHAR2(20) NOT NULL);