Таблицы, Используемые в Примерах Рубрики
Таблицы используемые в этой рубрике:
EMPLOYEES : Обеспечивает подробности относительно всех текущих сотрудников
JOB_HISTORY : Записывает подробности даты начала и даты окончания прежней работы, и идентификационный номер работы и отдела, когда сотрудник меняет работу
Две таблицы используются в этой рубрике: таблица EMPLOYEES и таблица JOB_HISTORY .
Вы уже знакомы с таблицей EMPLOYEES , которая хранит подробные сведения о сотрудниках, такие как уникальный идентификационный номер, адрес электронной почты, идентификация работы (такая как ST_CLERK , SA_REP и так далее), зарплата, менеджер и так далее.
Некоторые из сотрудников работают в компании в течение долгого времени и меняли работу с одной на другую. Это контролируется посредством таблицы JOB_HISTORY . Когда сотрудник меняет работу, сведения о дате начала и дате окончания прежней работы, job_id (такой как ST_CLERK , SA_REP и так далее) и отдел записываются в таблицу JOB_HISTORY .
Структура и данные из таблиц EMPLOYEES и JOB_HISTORY показаны на следующих страницах.
Были случаи среди сотрудников, когда человек занимал ту же самую позицию неоднократно в течение их пребывания в компании. Например, рассмотрим сотрудника Taylor (Тэйлор), который присоединился к компании в 24-MAR-1998 . Тэйлор занимал работу с названием SA_REP в течение периода с 24-MAR-98 до 31- DEC-98 и работу под названием SA_MAN в течение периода с 01-JAN-99 до 31-DEC-99 . Тэйлор вернулся к работе SA_REP , которая является его текущей работой.
Источник
Запрос данных из таблицы MySQL
Таблица employee_data содержит теперь достаточно данных, чтобы можно было начать с ней работать. Запрос данных выполняется с помощью команды MySQL SELECT. Оператор SELECT имеет следующий формат:
SELECT имена_столбцов from имя_таблицы [WHERE . условия];
Часть оператора с условиями является необязательной (мы рассмотрим ее позже). По сути, требуется знать имена столбцов и имя таблицы, из которой извлекаются данные.
Например, чтобы извлечь имена и фамилии всех сотрудников, выполните следующую команду.
SELECT f_name, l_name from employee_data;
Оператор приказывает MySQL вывести все данные из столбцов f_name и l_name. Результат работы оператора представлен на рис. 5.2.
Рис. 5.2. Вывод данных из таблицы
При ближайшем рассмотрении можно заметить, что данные представлены в том порядке, в котором они были введены. Более того, последняя строка указываете число строк в таблице — 21.
Чтобы вывести всю таблицу, можно либо ввести имена всех столбцов, либо воспользоваться упрощенной формой оператора SELECT.
SELECT * from employee_data;
Символ * в этом выражении означает ‘ВСЕ столбцы’. Поэтому этот оператор выводит все строки всех столбцов.
Рассмотрим ещё один пример.
SELECT f_name, l_name, age from employee_data;
Выборка столбцов f_name, l_name и age представлена на рис. 5.3.
Рис. 5.3. Выборка столбцов f_name, l_name и age
Задания
1. Напишите оператор SQL для создания новой базы данных с именем addressbook
2. Какой оператор используется для получения информации о таблице? Как используется этот оператор?
3. Как получить список всех баз данных, доступных в системе?
4. Напишите оператор для записи следующих данных в таблицу employee_data
Имя: Рудольф Фамилия: Курочкин Должность: Программист Возраст: 34 Стаж работы в компании: 2 Зарплата: 95000 Надбавки: 17000 email: rudolf@yandex.ru
5. Приведите две формы оператора SELECT, которые будут выводить все данные из таблицы employee_data.
6. Как извлечь данные столбцов f_name, email из таблицы employee_data?
7. Напишите оператор для вывода данных из столбцов salary, perks и yos таблицы employee_data.
8. Как узнать число строк в таблице с помощью оператора SELECT?
9. Как извлечь данные столбцов salary, l_name из таблицы employee_data?
Возможные решения
1. create database addressbook;
CREATE DATABASE addressbook;
Примечание: Операторы SQL не различают регистр символов, однако имена таблиц и имена баз данных могут различать регистр символов, в зависимости от используемой операционной системы.
2. Оператор DESCRIBE, например:
3. SHOW DATABASES; (в приглашении mysql)
4. INSERT INTO employee_data(f_name, l_name, title, age, yos, salary, perks, email)values(«Рудольф», «Курочкин», «программист», 34, 2, 95000, 17000, «rudolf@yandex.ru»);
Примечание: Текстовые строки заключаются в кавычки.
5. SELECT emp_id, f_name, l_name, title, age, yos, salary, perks, email from employee_data;
SELECT * from employee_data;
Вторая форма лучше. Ее легче использовать и труднее ошибиться.
6. Чтобы вывести данные столбцов f_name и email, используем следующий оператор.
select f_name, email from employee_data;
7. SELECT salary, perks, yos from employee_data;
8. Последняя строка вывода любого оператора SELECT содержит число полученных строк. Поэтому при выводе всех данных в любом столбце (или всех столбцах), последняя строка будет указывать число строк в таблице.
9. select salary, l_name from employee_data;
Дата добавления: 2016-02-04 ; просмотров: 1257 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ
Источник
Практическое занятие 10, Часть 1
Дата добавления: 2015-08-31 ; просмотров: 1771 ; Нарушение авторских прав
o Создание простого представления
o Создание сложного представления
o Создание представления с ограничением CHECK
o Попытки изменить данные в представлении
o Вывод определений представлений
o Удаление представлений
- Создайте представление EMPLOYEES_VU. Включите номер служащего, фамилию служащего и номер отдела из таблицы EMPLOYEES. Смените заголовок столбца с фамилией служащего на EMPLOYEE.
create view EMPLOYEES_VU as(
select employee_id, last_name EMPLOYEE, department_id from employees
- Выведите содержимое представления EMPLOYEE_VU.
select * from EMPLOYEES_VU;
EMPLOYEE_ID | EMPLOYEE | DEPARTMENT_ID |
OConnell | ||
Grant | ||
Whalen | ||
Hartstein | ||
Fay | ||
Mavris | ||
Baer | ||
Higgins | ||
Gietz | ||
King | ||
Kochhar | ||
De Haan | ||
Hunold | ||
Ernst | ||
Austin | ||
Pataballa | ||
Lorentz | ||
Greenberg | ||
Faviet | ||
Chen | ||
Sciarra | ||
Urman | ||
Popp | ||
Raphaely |
- Используя своё представление EMPLOYEES_VU, создайте запрос для вывода всех фамилий и номеров отделов служащих.
select employee, department_id from EMPLOYEES_VU;
EMPLOYEE | DEPARTMENT_ID |
OConnell | |
Grant | |
Whalen | |
Hartstein | |
Fay | |
Mavris | |
Baer | |
Higgins | |
Gietz | |
King | |
Kochhar | |
De Haan | |
Hunold | |
Ernst | |
Austin | |
Pataballa |
- Создайте представление DEPT50, содержащее номер служащего и номер отдела для всех служащих отдела 50. Назовите столбцы представления EMPNO, EMPLOYEE и DEPTNO. Запретите операцию перевода служащего в другой отдел через представление.
create view DEPT50 as(
select employee_id EMPNO, last_name EMPLOYEE, department_id DEPTNO from employees where department_Id=50
) with check option constraint DEPT50_ck;
- Выведите содержимое представления DEPT50.
select * from DEPT50;
EMPNO | EMPLOYEE | DEPTNO |
OConnell | ||
Grant | ||
Weiss | ||
Fripp | ||
Kaufling | ||
Vollman | ||
Mourgos | ||
Nayer | ||
Mikkilineni | ||
Landry | ||
Markle | ||
Bissot | ||
Atkinson | ||
Marlow | ||
Olson |
- Попробуйте сменить номер отдела служащего по фамилии Matos на 80.
update DEPT50 set DEPTNO=80 where EMPLOYEE=’Matos’;
SQL Error: ORA-01402: представление WITH CHECK OPTION не соответствует фразе WHERE
01402. 00000 — «view WITH CHECK OPTION where-clause violation»
- Создайте представление SALARY_VU, включающее фамилию служащего, название отдела, оклад и категорию оклада для всех служащих. Используйте таблицы EMPLOYEES, DEPARTMENTS и JOB_GRADES. Соответственно назовите столбцы Employee, Department, Salary и Grade.
Источник
Практические занятия по курсу введение в ORACLE 10g: SQL (Часть 1) (стр. 10 )
| Из за большого объема этот материал размещен на нескольких страницах: 1 2 3 4 5 6 7 8 9 10 |
4. Создайте таблицу EMPLOYEES2, основанную на структуре таблицы EMPLOYEES, включив только столбцы EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY и DEPARTMENT_ID. Имена колонок в новой таблице должны быть ID, FIRST_NAME, LAST_NAME, SALARY и DEPT_ID соответственно.
CREATE TABLE employees2 AS
SELECT employee_id id, first_name, last_name, salary, department_id dept_id
table EMPLOYEES2 created.
5. Удалите таблицу EMP.
table EMP dropped.
Практическое занятие 10, Часть 1
· Создание простого представления
· Создание сложного представления
· Создание представления с ограничением CHECK
· Попытки изменить данные в представлении
· Вывод определений представлений
1. Создайте представление EMPLOYEES_VU. Включите номер служащего, фамилию служащего и номер отдела из таблицы EMPLOYEES. Смените заголовок столбца с фамилией служащего на EMPLOYEE.
CREATE VIEW employees_vu AS
SELECT employee_id, last_name employee, department_id
view EMPLOYEES_VU created.
2. Выведите содержимое представления EMPLOYEE_VU.
EMPLOYEE_ID EMPLOYEE DEPARTMENT_ID
198 OConnell 50
201 Hartstein 20
107 rows selected
3. Используя своё представление EMPLOYEES_VU, создайте запрос для вывода всех фамилий и номеров отделов служащих.
SELECT employee, department_id
107 rows selected
……
4. Создайте представление DEPT50, содержащее номер служащего и номер отдела для всех служащих отдела 50. Назовите столбцы представления EMPNO, EMPLOYEE и DEPTNO. Запретите операцию перевода служащего в другой отдел через представление.
DROP VIEW dept50;
CREATE VIEW dept50 AS
SELECT employee_id empno, last_name employee, department_id deptno
WHERE department_id = 50
WITH CHECK OPTION;
Какое имя будет. БУДЕТ ИМЯ ТАКОЕ: SYS_C00162842
view DEPT50 created.
5.
Выведите содержимое представления DEPT50.
EMPNO EMPLOYEE DEPTNO
198 OConnell 50
44 rows selected
6. Попробуйте сменить номер отдела служащего по фамилии Matos на 80.
WHERE employee = ‘Matos’;
QL Error: ORA-01402: представление WITH CHECK OPTION не соответствует фразе WHERE
01402. 00000 — «view WITH CHECK OPTION where-clause violation»
7. Создайте представление SALARY_VU, включающее фамилию служащего, название отдела, оклад и категорию оклада для всех служащих. Используйте таблицы EMPLOYEES, DEPARTMENTS и JOB_GRADES. Соответственно назовите столбцы Employee, Department, Salary и Grade.
CREATE VIEW salary_vu AS
SELECT d. department_name, e. salary, j. grade_level
FROM employees e
JOIN departments d
ON e. department_id = d. department_id
JOIN job_grades j
ON e. salary BETWEEN j. lowest_sal AND j. highest_sal;
DROP VIEW salary_vu;
CREATE VIEW salary_vu AS
SELECT d. department_name, e. salary, j. grade_level
FROM employees e
LEFT OUTER JOIN departments d
ON e. department_id = d. department_id
JOIN job_grades j
ON e. salary BETWEEN j. lowest_sal AND j. highest_sal;
DEPARTMENT_NAME SALARY GRADE_LEVEL
Executive 24000 E
Executive 17000 E
107 rows selected
Практическое занятие 10, Часть 2
· Создание неуникальных индексов
1. Создайте последовательность для столбца главного ключа таблицы DEPT. Последовательность должна начинаться с 200 и иметь максимальное значение 1000. шаг приращения значений – 10. Назовите последовательность DEPT_ID_SEQ.
CREATE SEQUENCE dept_id_seq
INCREMENT BY 10;
sequence DEPT_ID_SEQ_1 created.
2. Создайте скрипт lab12_3.sql для вставки строки в таблицу DEPT. Обязательно используйте последовательность, созданную Вами для столбца ID. Добавьте в таблицу два отдела: Education и Administration. Выполните файл, проверьте успешное выполнение вставки.
INSERT INTO dept
VALUES (dept_id_seq. nextval, ‘Education’);
INSERT INTO dept
VALUES (dept_id_seq. nextval, ‘Administration’);
1 rows inserted.
1 rows inserted.
40 Human Resources
240 Government Sales
250 Retail Sales
29 rows selected
3. Создайте в таблице EMP неуникальный индекс для столбца таблицы DEPT_ID, имеющего ограничение FOREIGN KEY.
УДАЛИЛИ Ж ТАБЛИЦУ!
CREATE TABLE emp
CONSTRAINT emp_dept_id_fk REFERENCES departments (department_id));
CREATE INDEX dept_name_index ON emp (dept_id);
index DEPT_NAME_INDEX created.
4. Создайте синоним для таблицы EMPLOYEES. Назовите его EMP.
CREATE SYNONYM emp FOR employees;
Практическое занятие 11
· Создайте скрипт, который позволит получать информацию об именах колонок, типах данных, допустимых объемах ячеек, а также о допустимости пустых ячеек. Пользователь должен иметь возможность вводить имя таблицы. Задайте псевдонимы для столбцов DATA_PECISION и DATA_SCALE. Сохраните скрипт в файле.
SELECT column_name, data_type, data_length, data_precision «PRECISION», data_scale «SCALE», nullable
WHERE table_name = UPPER (‘&table_name’);
COLUMN_NAME DATA_TYPE DATA_LENGTH PRECISION SCALE NULLABLE
DEPARTMENT_ID NUMBER 22 4 0 N
DEPARTMENT_NAME VARCHAR2 30 N
MANAGER_ID NUMBER 22 6 0 Y
LOCATION_ID NUMBER 22 4 0 Y
Например, если пользователь ввел DEPARTMENTS, он должен получить следующий результат:
· Создайте скрипт для получения информации об именах колонок, именах ограничений, условиях поиска и статусе таблицы. Для получения необходимой информации Вы должны соединить таблицы USER_CONSTRAINTS и USER_CONS_COLUMNS. Пользователь должен иметь возможность вводить имя таблицы. Сохраните скрипт в файле.
SELECT ucol. column_name, ucol. constraint_name,
uconstr. constraint_type «C», uconstr. search_condition, uconstr. status
FROM user_cons_columns ucol
JOIN user_constraints uconstr
ON ucol. constraint_name = uconstr. constraint_name
COLUMN_NAME CONSTRAINT_NAME C SEARCH_CONDITION STATUS
DEPARTMENT_NAME SYS_C00140066 C «DEPARTMENT_NAME» IS NOT NULL ENABLED
DEPARTMENT_ID DEPT_ID_PK P ENABLED
MANAGER_ID DEPT_MGR_FK R ENABLED
LOCATION_ID DEPT_LOC_FK R ENABLED
Например, если пользователь ввел DEPARTMENTS, он должен получить следующий результат:
«DEPARTMENT_NAME» IS NOT NULL
· Добавьте комментарий к таблице DEPARTMENTS. Затем обратитесь с запросом к представлению USER_TAB_COMMENTS, для проверки факта создания комментария.
COMMENT ON TABLE departments IS ‘Bla-bla-bla’;
WHERE table_name = ‘DEPARTMENTS’;
Company department information including name, code and location
· Найдите имена всех синонимов в вашей схеме
SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
EMP ANNLUS EMPLOYEES
· Из представления словаря данных USER_VIEWS выберите столбцы VIEW_NAME и TEXT.
Примечание: для просмотра содержимого столбца типа LONG выполните команду SET LONG n, где n – число выводимых запросом символов из столбца типа LONG.
SELECT view_name, text
СПЕЦ SELECT Врач. ФИО_Врача, Список_спец. Специальность,
ПРЕДСТАВЛЕНИЕ SELECT Автор. ФИО, Книга. Назв_е, Изд_во. Назв_изд
БОЛЬН_УЧАСТК SELECT Пациент. ФИО, Врач. ФИО_Врача, Расписание_на_
SALARY_VU SELECT e. last_name, d. department_name, e. salary, j
EMPLOYEES_VU SELECT employee_id, last_name employee, department
DEPT50 SELECT employee_id empno, last_name employee, depa
6 rows selected
5. Найдите имена всех ваших последовательностей. Напишите запрос для получения следующей информации о ваших последовательностях: имя последовательности, максимальное значение, величина приращения, последнее значение. Сохраните скрипт в файле. Выполните скрипт.
SELECT sequence_name, max_value, increment_by, last_number
SEQUENCE_NAME MAX_VALUE INCREMENT_BY LAST_NUMBER
Источник