根據人力資源管理系統中表的設計,創建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);