Commit 10082fd5 by Patryk Czarnik

Poprawki w kodach SQL - głównie wcięcia :)

parent 067dfbfa
CREATE TABLE regions ( CREATE TABLE regions (
region_id INTEGER CONSTRAINT region_id_nn NOT NULL, region_id INTEGER CONSTRAINT region_id_nn NOT NULL,
region_name VARCHAR(25), region_name VARCHAR(25),
CONSTRAINT reg_id_pk PRIMARY KEY (region_id) CONSTRAINT reg_id_pk PRIMARY KEY (region_id)
); );
CREATE TABLE countries ( CREATE TABLE countries (
country_id CHAR(2) CONSTRAINT country_id_nn NOT NULL, country_id CHAR(2) CONSTRAINT country_id_nn NOT NULL,
country_name VARCHAR(40), country_name VARCHAR(40),
region_id INTEGER, region_id INTEGER,
CONSTRAINT country_c_id_pk PRIMARY KEY (country_id), CONSTRAINT country_c_id_pk PRIMARY KEY (country_id),
CONSTRAINT countr_reg_fk FOREIGN KEY (region_id) REFERENCES regions(region_id) CONSTRAINT countr_reg_fk FOREIGN KEY (region_id) REFERENCES regions(region_id)
); );
CREATE TABLE locations ( CREATE TABLE locations (
location_id INTEGER, location_id INTEGER,
street_address VARCHAR(40), street_address VARCHAR(40),
postal_code VARCHAR(12), postal_code VARCHAR(12),
city VARCHAR(30) CONSTRAINT loc_city_nn NOT NULL, city VARCHAR(30) CONSTRAINT loc_city_nn NOT NULL,
state_province VARCHAR(25), state_province VARCHAR(25),
country_id CHAR(2), country_id CHAR(2),
CONSTRAINT loc_id_pk PRIMARY KEY (location_id), CONSTRAINT loc_id_pk PRIMARY KEY (location_id),
CONSTRAINT loc_c_id_fk FOREIGN KEY (country_id) REFERENCES countries(country_id) CONSTRAINT loc_c_id_fk FOREIGN KEY (country_id) REFERENCES countries(country_id)
); );
CREATE TABLE departments ( CREATE TABLE departments (
department_id INTEGER, department_id INTEGER,
department_name VARCHAR(100) CONSTRAINT dept_name_nn NOT NULL, department_name VARCHAR(100) CONSTRAINT dept_name_nn NOT NULL,
manager_id INTEGER, manager_id INTEGER,
location_id INTEGER, location_id INTEGER,
CONSTRAINT dept_id_pk PRIMARY KEY (department_id), CONSTRAINT dept_id_pk PRIMARY KEY (department_id),
CONSTRAINT dept_loc_fk FOREIGN KEY (location_id) REFERENCES locations (location_id) CONSTRAINT dept_loc_fk FOREIGN KEY (location_id) REFERENCES locations (location_id)
) ; ) ;
CREATE TABLE jobs ( CREATE TABLE jobs (
job_id VARCHAR(10), job_id VARCHAR(10),
job_title VARCHAR(35) CONSTRAINT job_title_nn NOT NULL, job_title VARCHAR(35) CONSTRAINT job_title_nn NOT NULL,
min_salary NUMERIC(8, 2), min_salary NUMERIC(8, 2),
max_salary NUMERIC(8, 2), max_salary NUMERIC(8, 2),
CONSTRAINT job_id_pk PRIMARY KEY(job_id) CONSTRAINT job_id_pk PRIMARY KEY(job_id)
); );
CREATE TABLE employees ( CREATE TABLE employees (
employee_id INTEGER, employee_id INTEGER,
first_name VARCHAR(25), first_name VARCHAR(25),
last_name VARCHAR(30) CONSTRAINT emp_last_name_nn NOT NULL, last_name VARCHAR(30) CONSTRAINT emp_last_name_nn NOT NULL,
email VARCHAR(30) CONSTRAINT emp_email_nn NOT NULL, email VARCHAR(30) CONSTRAINT emp_email_nn NOT NULL,
phone_number VARCHAR(20), phone_number VARCHAR(20),
hire_date DATE CONSTRAINT emp_hire_date_nn NOT NULL, hire_date DATE CONSTRAINT emp_hire_date_nn NOT NULL,
job_id VARCHAR(10) CONSTRAINT emp_job_nn NOT NULL, job_id VARCHAR(10) CONSTRAINT emp_job_nn NOT NULL,
salary NUMERIC(8, 2), salary NUMERIC(8, 2),
commission_pct NUMERIC(2, 2), commission_pct NUMERIC(2, 2),
manager_id INTEGER, manager_id INTEGER,
department_id INTEGER, department_id INTEGER,
CONSTRAINT emp_emp_id_pk PRIMARY KEY (employee_id), CONSTRAINT emp_emp_id_pk PRIMARY KEY (employee_id),
CONSTRAINT emp_dept_fk FOREIGN KEY (department_id) REFERENCES departments, CONSTRAINT emp_dept_fk FOREIGN KEY (department_id) REFERENCES departments,
CONSTRAINT emp_job_fk FOREIGN KEY (job_id) REFERENCES jobs (job_id), CONSTRAINT emp_job_fk FOREIGN KEY (job_id) REFERENCES jobs (job_id),
CONSTRAINT emp_manager_fk FOREIGN KEY (manager_id) REFERENCES employees, CONSTRAINT emp_manager_fk FOREIGN KEY (manager_id) REFERENCES employees,
CONSTRAINT emp_salary_min CHECK (salary > 0), CONSTRAINT emp_salary_min CHECK (salary > 0),
CONSTRAINT emp_email_uk UNIQUE (email) CONSTRAINT emp_email_uk UNIQUE (email)
); );
CREATE TABLE job_history ( CREATE TABLE job_history (
employee_id INTEGER CONSTRAINT jhist_employee_nn NOT NULL, employee_id INTEGER CONSTRAINT jhist_employee_nn NOT NULL,
start_date DATE CONSTRAINT jhist_start_date_nn NOT NULL, start_date DATE CONSTRAINT jhist_start_date_nn NOT NULL,
end_date DATE CONSTRAINT jhist_end_date_nn NOT NULL, end_date DATE CONSTRAINT jhist_end_date_nn NOT NULL,
job_id VARCHAR(10) CONSTRAINT jhist_job_nn NOT NULL, job_id VARCHAR(10) CONSTRAINT jhist_job_nn NOT NULL,
department_id INTEGER, department_id INTEGER,
CONSTRAINT jhist_date_interval CHECK (end_date > start_date), CONSTRAINT jhist_date_interval CHECK (end_date > start_date),
CONSTRAINT jhist_emp_id_st_date_pk PRIMARY KEY (employee_id, start_date), CONSTRAINT jhist_emp_id_st_date_pk PRIMARY KEY (employee_id, start_date),
CONSTRAINT jhist_job_fk FOREIGN KEY (job_id) REFERENCES jobs, CONSTRAINT jhist_job_fk FOREIGN KEY (job_id) REFERENCES jobs,
CONSTRAINT jhist_emp_fk FOREIGN KEY (employee_id) REFERENCES employees, CONSTRAINT jhist_emp_fk FOREIGN KEY (employee_id) REFERENCES employees,
CONSTRAINT jhist_dept_fk FOREIGN KEY (department_id) REFERENCES departments CONSTRAINT jhist_dept_fk FOREIGN KEY (department_id) REFERENCES departments
); );
...@@ -160,29 +160,29 @@ CREATE SEQUENCE employees_seq START WITH 207 INCREMENT BY 1 NO CYCLE; ...@@ -160,29 +160,29 @@ CREATE SEQUENCE employees_seq START WITH 207 INCREMENT BY 1 NO CYCLE;
ALTER TABLE employees ALTER COLUMN employee_id SET DEFAULT nextval('employees_seq'); ALTER TABLE employees ALTER COLUMN employee_id SET DEFAULT nextval('employees_seq');
CREATE OR REPLACE VIEW emp_details_view ( CREATE OR REPLACE VIEW emp_details_view (
employee_id, job_id, manager_id, department_id, location_id, country_id, first_name, last_name, salary, commission_pct, department_name, job_title, city, state_province, country_name, region_name employee_id, job_id, manager_id, department_id, location_id, country_id, first_name, last_name, salary, commission_pct, department_name, job_title, city, state_province, country_name, region_name
) AS SELECT e.employee_id, ) AS SELECT e.employee_id,
e.job_id, e.job_id,
e.manager_id, e.manager_id,
e.department_id, e.department_id,
d.location_id, d.location_id,
l.country_id, l.country_id,
e.first_name, e.first_name,
e.last_name, e.last_name,
e.salary, e.salary,
e.commission_pct, e.commission_pct,
d.department_name, d.department_name,
j.job_title, j.job_title,
l.city, l.city,
l.state_province, l.state_province,
c.country_name, c.country_name,
r.region_name r.region_name
FROM employees e, FROM employees e,
departments d, departments d,
jobs j, jobs j,
locations l, locations l,
countries c, countries c,
regions r regions r
WHERE e.department_id = d.department_id WHERE e.department_id = d.department_id
AND d.location_id = l.location_id AND d.location_id = l.location_id
AND l.country_id = c.country_id AND l.country_id = c.country_id
......
...@@ -91,12 +91,12 @@ $$ LANGUAGE plpgsql; ...@@ -91,12 +91,12 @@ $$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION zarabiajacy_wiecej_niz(emp_id INTEGER) CREATE OR REPLACE FUNCTION zarabiajacy_wiecej_niz(emp_id INTEGER)
RETURNS SETOF employees AS $$ RETURNS SETOF employees AS $$
DECLARE DECLARE
the_salary NUMERIC; the_salary NUMERIC;
BEGIN BEGIN
SELECT salary INTO the_salary FROM employees WHERE employee_id = emp_id; SELECT salary INTO the_salary FROM employees WHERE employee_id = emp_id;
RETURN QUERY RETURN QUERY
SELECT * FROM employees WHERE salary > the_salary ORDER BY salary ASC; SELECT * FROM employees WHERE salary > the_salary ORDER BY salary ASC;
END END
$$ LANGUAGE plpgsql; $$ LANGUAGE plpgsql;
CREATE TABLE skocznie ( CREATE TABLE skocznie (
id_skoczni integer, id_skoczni integer primary key,
miasto text, miasto text,
kraj_s text, kraj_s text,
nazwa text, nazwa text,
k integer, k integer,
sedz integer sedz integer
); );
CREATE TABLE trenerzy ( CREATE TABLE trenerzy (
kraj text, kraj char(3) primary key,
imie_t text, imie_t text,
nazwisko_t text, nazwisko_t text,
data_ur_t date data_ur_t date
); );
CREATE TABLE zawodnicy ( CREATE TABLE zawodnicy (
id_skoczka integer, id_skoczka integer primary key,
imie text, imie text,
nazwisko text, nazwisko text,
kraj char(3), kraj char(3),
data_ur date, data_ur date,
wzrost integer, wzrost integer,
waga integer waga integer
); );
CREATE TABLE zawody ( CREATE TABLE zawody (
id_zawodow integer, id_zawodow integer primary key,
id_skoczni integer, id_skoczni integer,
data date data date
); );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment