Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Підготовка до виконання роботи




1 Ознайомитись з інструкцією.

2 Опрацювати теоретичний матеріал.

3 Усно дати відповіді на контрольні запитання вхідного контролю.

4 Продумати методику виконання роботи.

Питання вхідного контролю

1 Що таке індекси і для чого вони використовуються в СУБД MySQL?

2 Які ви знаєте способи створення індексів в СУБД MySQL?

3 Які типи індексів дозволяє створювати СУБД MySQL?

4 Яка команда служить для створення індексів в СУБД MySQL?

5 Яка команда служить для знищення індексів в СУБД MySQL?

Порядок виконання роботи

1 Отримати допуск до виконання лабораторної роботи, давши відповіді на контрольні запитання вхідного контролю.

2 Увімкнути ПК, увійти в операційну систему під відповідним користувачем.

3 Розглянути теоретичні положення лабораторної роботи, а також методичні рекомендації.

4 Використовуючи теоретичні положення навчитися використовувати індекси для власної бази даних.

Питання вихідного контролю

1 Записати команду створення індексу в СУБД MySQL.

2 Навести приклад команди знищення індексу в СУБД MySQL.

3 Стовпці в індексах якого типу не можуть мати префіксів?



Лабораторна роботи № 7

 

Тема: Можливості оператора SELECT

Мета роботи: Вивчити синтаксис оператора SELECT. Навчитися використовувати основні функції цього оператора.

 

Теоретичні відомості

СИНТАКСИС оператора SELECT:

SELECT [STRAIGHT_JOIN] [DISTINCT | ALL] select_expression,...    [FROM tables... [WHERE where_definition] [GROUP BY column,...]    [ORDER BY column [ASC | DESC], ...] HAVING full_where_definition    [LIMIT [offset,] rows] [PROCEDURE procedure_name]]    [INTO OUTFILE 'file_name'... ]

Тут where_definition:

where_definition: where_expr or where_expr [AND | OR] where_expr

 

where_expr має формат:

where_expr: column_name [> | >= | = | <> | <= | <] column_name_or_constant or column_name LIKE column_name_or_constant or column_name IS NULL or column_name IS NOT NULL or (where_definition)

ОПИС:

Оператор SELECT є наріжним каменем усієї мови SQL. Він використовується, щоб виконати запити до бази даних. Це дійсно основа мови SQL. В MySQL версії менше 3.21.x речення WHERE дуже обмежене. HAVING буде працювати там, де речення WHERE нічого не робить. Деякі приклади, які не працюють у реченні WHERE - REGEXP і операторі !. В основному, Ви не можете використовувати функції з WHERE, але Ви можете використовувати функції з HAVING.

HAVING по суті, WHERE стосовно до результатів. Він використовується головним чином для вузької області даних, повернутих запитом. Ви повинні мати права select для використання SELECT.

 

Функції

 

select_expression може містити такі функції й оператори:

 

+ - * / Арифметичні дії.
% Залишок від ділення (як в мові C)
| & Бітові функції (використовується 48 біт).
- Зміна знака числа.
( ) Дужки.
BETWEEN(A,B,C) (A >= B) AND (A <= C).
BIT_COUNT() Кількість біт.
ELT(N,a,b,c,d) Повертає a, якщо N == 1, b, якщо N == 2 і т.д. a,b,c,d рядка. ПРИКЛАД: ELT(3,"First","Second","Third","Fourth")  поверне "Third".
FIELD(Z,a,b,c) Повертає a, якщо Z == a, b, якщо Z == b і т.д. a,b,c,d рядка. ПРИКЛАД: FIELD("Second","First","Second","Third","Fourth")  поверне "Second".
IF(A,B,C) Якщо A істина (!= 0 and != NULL), те поверне B, інакше поверне C.
IFNULL(A,B) Якщо A не null, поверне A, інакше поверне B.
ISNULL(A) Поверне 1, якщо A == NULL, інакше поверне 0. Еквівалент ('A == NULL').
NOT ! NOT, поверне TRUE (1) або FALSE (0).
OR, AND Поверне TRUE (1) або FALSE (0).
SIGN() Поверне -1, 0 або 1 (знак аргументу).
SUM() Сума стовпця.
= <> <= < >= > Поверне TRUE (1) або FALSE (0).
expr LIKE expr Поверне TRUE (1) або FALSE (0).
expr NOT LIKE expr Поверне TRUE (1) або FALSE (0).
expr REGEXP expr Перевіряє рядок на відповідність регулярному виразу expr.
expr NOT REGEXP expr Перевіряє рядок на відповідність регулярному виразу expr.

select_expression може також містити один або більшу кількість таких математичних функцій.

ABS() Абсолютне значення (модуль числа).
CEILING() ()
EXP() Експонента.
FORMAT(nr,NUM) Форматує число у формат '#,###,###.##' з NUM десяткових цифр.
LOG() Логарифм.
LOG10() Логарифм за основою 10.
MIN(),MAX() Мінімум або максимум відповідно. Повинна мати при виклику два або більше аргументи, інакше розглядається як групова функція.
MOD() Залишок від розподілу (аналог %).
POW() Ступінь.
ROUND() Округлення до найближчого цілого числа.
RAND([integer_expr]) Випадкове число типу float, 0 <= x <= 1.0, використовується integer_expr як значення для запуску генератора.
SQRT() Квадратний корінь.

select_expression може також містити одну або більше таких строкових функцій.

CONCAT() Об'єднання рядків.
INTERVAL(A,a,b,c,d) Повертає 1, якщо A == a, 2, якщо A == b... Якщо збігів ні, поверне 0. A,a,b,c,d... рядка.
INSERT(org,strt,len,new) Заміняє підстрічку org[strt...len(gth)] на new. Перша позиція рядка=1.
LCASE(A) Приводить A до нижнього регістра.
LEFT() Повертає рядок символів, відраховуючи ліворуч.
LENGTH() Довжина рядка.
LOCATE(A,B) Позиція підстрічки B у рядку A.
LOCATE(A,B,C) Позиція підстрічки B у рядку A, починаючи з позиції C.
LTRIM(str) Знищує всі початкові пробіли з рядка str.
REPLACE(A,B,C) Заміняє всі підстрічки B у рядку A на підстрічку C.
RIGHT() Get string counting from right.
RTRIM(str) Знищує хвостові пробіли з рядка str.
STRCMP() Повертає 0, якщо рядки однакові.
SUBSTRING(A,B,C) Повертає підстрічку з A, з позиції B до позиції C.
UCASE(A) Переводить A у верхній регістр.

І нарешті декілька просто корисних функцій, які теж можна застосувати в select_expression.

CURDATE() Поточна дата.
DATABASE() Ім'я поточної бази даних з якої виконується вибір.
FROM_DAYS() Змінює день на DATE.
NOW() Поточний час у форматах YYYYMMDDHHMMSS або " YYYY-MM-DD HH:MM:SS". Формат залежить від того в якому контексті використовується NOW(): числовому або стрічковому.
PASSWORD() Шифрує рядок.
PERIOD_ADD(P:N) Додати N місяців до періоду P (у форматі YYMM).
PERIOD_DIFF(A,B) Повертає місяці між A і B. Зверніть увагу, що PERIOD_DIFF працює тільки з датами у формі YYMM або YYYMM.
TO_DAYS() Змінює DATE (YYMMDD) на номер дня.
UNIX_TIMESTAMP([date]) Повертає мітку часу unix, якщо викликано без date (секунди, починаючи з GMT 1970.01.01 00:00:00). При виклику зі стовпцем TIMESTAMP поверне TIMESTAMP. date може бути також рядком DATE, DATETIME або числом у форматі YYMMDD (або YYYMMDD).
USER() Повертає логін поточного користувача.
WEEKDAY() Повертає день тижня (0 = понеділок, 1 = вівторок, ...).

Групові функції в операторі select:

Наступні функції можуть бути використані в реченні GROUP:

AVG() Середнє для групи GROUP.
SUM() Сума елементів GROUP.
COUNT() Число елементів в GROUP.
MIN() Мінімальний елемент в GROUP.
MAX() Максимальний елемент в GROUP.

Тут MIN() і MAX()можуть приймати рядок або число як аргумент. Ці функції не можуть використовуватися у виразі, хоча їхній параметр може бути виразом:

ПРИКЛАД: "SUM(value/10)" нормально, але от "SUM(value)/10" уже немає!

  • Рядки автоматично конвертуються в числа й навпаки в міру необхідності (прямо як в perl). При використанні операторів = <> <= >= < > як в інструкції WHERE, ліва сторона визначає, чи виконується тест із числами або з рядками. Всі порівняння рядків незалежні від регістра (ISO 8859-1).

ПРИКЛАД:

"a" < "b" ; Порівняння рядків "a" < 0 ; Порівняння рядків 0 < "a" ; Порівняння чисел a < 5  ; Якщо поле має тип CHAR, то                      порівнюються рядки,         ; інакше порівнюються числа.

Якщо треба враховувати регістр, використовуйте REGEXP в HAVING.

  • Ім'я стовпця не повинне мати префікса таблиці, якщо дане ім'я стовпця унікальне.
  • В LIKE вираз % і _ можуть випереджатися символом \ для одержання символьного виразу.
  • DATE є рядком з одним із синтаксисів:
    • YYMMDD (Рік вважається 2000, якщо YY < 70)
    • YYYYMMDD
    • YY.MM.DD Тут '.' може бути будь-яким нецифровим роздільником
    • YYYY.MM.DD Тут '.' може бути будь-яким нецифровим роздільником
  • IFNULL() і IF() повертає число або рядок залежно від ситуації, у якій використані.
  • Order і group стовпець може бути іменем стовпця, його псевдонімом або номером в операторі SELECT.
  • HAVING може приймати як аргумент будь-які поля або псевдоніми в select_expression. Він застосовується останнім перед передачею даних клієнтові без якої-небудь оптимізації. Не використовуйте його для елементів з речення WHERE.

Зауваження: Ви не можете написати:
 SELECT user,MAX(salary) FROM users GROUP BY users HAVING max(salary)>10
 Замість цього, використовуйте щось приблизно таке (це гарний приклад використання псевдонімів стовпців):
SELECT user,MAX(salary) AS sum FROM users GROUP BY users HAVING sum > 10

  • LIMIT псевдонімів один або два аргументи. Один аргумент задає максимальне число рядків у результаті. У випадку двох аргументів цей максимум задає другий аргумент, а перший вказує зсув першого рядка.
  • INTO OUTFILE 'filename' пише результати у файл. Файл не повинен існувати на момент виконання цієї команди. Для більше докладної інформації розглянути LOAD DATA INFILE. Це може бути досить небезпечною командою, якщо daemon запущений від імені root. Найкраще надати право доступу file тільки коли це абсолютно необхідно.
  • Ви можете використовувати числове значення в реченні ORDER BY для визначення стовпця, що Вас цікавить. Тобто, якщо Ви бажаєте провести сортування другого стовпця, певного у вашім запиті SELECT, варто написати "ORDER BY 2;". Це також корисно, коли Ви використовували функцію у вашім SELECT.

ПРИКЛАД:

SELECT Widget_Table.widget_id, Widget_Table.widget_name,    Purchase_Order_Item.widget_id, sum(Purchase_Order_Item.quantity)    FROM Widget_Table, Purchase_Order_Item    WHERE Widget_Table.widget_id = Purchase_Order_Item.widget_id

    GROUP BY Widget_Table.widge t_name ORDER BY 4;

 




Питання вхідного контролю

1 Яке основне призначення оператора SELECT?

2 Вкажіть мінімальний можливий запис оператора SELECT?

3 Яке призначення речення FROM в SELECT-запиті?

4 Яке призначення речення WHERE в SELECT-запиті?

5 Яке призначення речення ORDER BY в SELECT-запиті?

6 Яке призначення речення GROUP BY в SELECT-запиті?

 

Постановка завдання

Створити базу даних Успішність з чотирьох таблиць: Група, Студенти, Дисципліни, Оцінки

 

Створити таблицю Група з вказаними властивостями полів.

 

Кодгрупи НаваГрупи ЧислоСтудентів Куратор
Числовий Текстовий, 5 Числовий Текстовий, 30

 

Створити таблицю Студенти з вказаними властивостями полів.

 

КодСтудента Прізвище Імя ДатаНар
Числовий Текстовий, 15 Текстовий, 10 Дата/час

 

Створити таблицю Дисципліна з вказаними властивостями полів.

 

КодДисципліни НазваДисципліни ПрізВикладача ІмяПобатькові
Числовий Текстовий, 10 Текстовий, 15 Текстовий, 20

 

Створити таблицю Оцінка з вказаними властивостями полів.

 

ПорядНомер КодГрупи КодСтудента КодДисципліни Оцінка
Числовий Числовий Числовий Числовий Числовий

 










Последнее изменение этой страницы: 2018-05-29; просмотров: 187.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...