68923

Створення таблиць. Робота з таблицями

Лекция

Информатика, кибернетика и программирование

Примітка. Детально про ключі ми поговоримо пізніше, а поки використовуватимемо таблиці без ключів. Як модифікатори можна використовувати наступні значення: NOT NULL — поле не може містити невизначеного значення (NULL), тобто поле повинне явно ініціалізувати; PRIMARY KEY — поле буде первинним ключем...

Украинкский

2014-09-27

58.5 KB

0 чел.

Лекція № 16

Тема: Створення таблиць. Робота з таблицями.

План

  1.  Створення таблиць
  2.  Додавання записів
  3.  Оновлення записів
  4.  Видалення записів
  5.  Вибір записів
  6.  Додаткові функції
  7.  Групування та сортування записів
  8.  Видалення полів та таблиць

Створення таблиць

Створити таблицю дозволяє оператор CREATE. Ось його синтаксис:

CREATE TABLE Імя таблиці

(

Имя_поля1 Тип Модифікатор,

Имя_поля1 Тип Модифікатор,

[Первинний ключ]

[Зовнішній ключ]

);

 

До речі кажучи, за допомогою оператора CREATE можна створювати і інші об'єкти.

Примітка.

Детально про ключі ми поговоримо пізніше, а поки використовуватимемо таблиці без ключів.

Як модифікатори можна використовувати наступні значення:

♦ NOT NULL — поле не може містити невизначеного значення (NULL), тобто поле повинне явно ініціалізувати;

♦ PRIMARY KEY — поле буде первинним ключем — ідентифікатором запису, по якому можна однозначно ідентифікувати запис;

♦ AUTO_INCREMENT — при вставці нового запису значення цього поля буде автоматично збільшено на одиницю, тому в таблиці ніколи не буде двох записів з однаковим значенням цього поля;

♦ DEFAULT — задає значення, яке буде використано за умовчанням, якщо при вставки запису поле не ініціалізує явно.

Значення за умовчанням задається так:

Імя поля Тип DEFALUT Значення, наприклад

NO INT DEFAULT 0,

NAME INT DEFAULT 'Іванов'

Тепер створимо три таблиці — "Товар", "Клієнти" і "Замовлення".

CREATE TABLE CLIENTS

(

C_NO int NOT NULL,

FI0 char(40) NOT NULL,

ADDRESS char(30) NOT NULL,

CITY char(15) NOT NULL,

PHONE char(ll) NOT NULL

);

Таблиця CLIENTS містить поля C_NO (номер клієнта), FIO (Прізвище, Ім'я, По батькові), ADDRESS (Адреса), CITY (Місто) і PHONE (Телефон). Всі ці поля не можуть містити порожнього значення (NOT NULL).

CREATE TABLE TOVAR

(

T_NO int NOT NULL,

DSEC char(40) NOT NULL,

PRICE double(9,2) NOT NULL,

QTY double(9,2) NOT NULL

);

Ця таблиця міститиме дані про товари. Тип double(9,2) означає, що 9 знаків відносимо під цілу частина, і два — під дріб. QTY — це кількість товару на складі.

CREATE TABLE ORDERS

(

O_NO int NOT NULL,

DATE date NOT NULL,

C_NO int NOT NULL,

T_NO int NOT NULL,

QUANTITY double(9,2) NOT NULL,

AMOUNT double(9,2) NOT NULL

);

Дана таблиця містить відомості про замовлення — номер замовлення (O_No), дату замовлення (DATE), номер клієнта (C_NO), номер товару (T_NO), кількість (QUANTITY) і суму всього замовлення AMOUNT (тобто AMOUNT = T_NO * TOVAR.PRICE).

Додавання даних в таблицю

Для додавання записів використовується оператор INSERT:

INSERT INTO Имя_таблицы [(Список полий)] VALUES (Список констант);

Після виконання оператора INSERT буде створена новий запис, як значення полів будуть використані відповідні константи, вказані в списку VALUES.

Тепер додамо дані в наші таблиці. Додати дані можна за допомогою оператора INSERT. Розглянемо використання оператора INSERT:

INSERT INTO CLIENTS

VALUES (1,'Иванов И.П.1', 'Леніна 6', 'Кіровоград','80522111111');

Значення, що додаються, повинні відповідати тому порядку, в якому поля перераховані в операторові CREATE. Якщо ви хочете додавати інформацію в іншому порядку, то ви повинні вказати цей порядок в операторові INSERT:

INSERT. INTO CLIENTS (FIO,ADDRESS,C_NO,PHONE,CITY)

VALUES ('Петров', 'Пушкіна 9',2,'-','Кировоград');

За допомогою INSERT ми можемо додавати дані і в певні поля, наприклад, C_NO і FIO:

INSERT INTO CLIENTS (C_NO, FIO) VALUES (1, 'Петров' ) ;

Проте в нашому випадку сервер не виконає такий запит, оскільки решта всіх полів рівна NULL (порожнє значення), а наша таблиця не приймає порожні значення. Аналогічно можна додати дані в інші таблиці.

Додамо дані в таблицю TOVAR:

INSERT INTO TOVAR

VALUES (1,'Монитор LG',550.74);

Зверніть увагу, що ми поки що не вказали первинні ключі таблиці, тому нам ніхто не заважає додати в таблицю однакові записи. Додати дату в полі DATE можна за допомогою функції TO_DATE:

INSERT INTO ORDERS

VALUES (l,TO_DATE('01/01/02','DD/MM/YY'),1,1,1,550.74);

Даний запис означає, що першого січня 2002 року Иванов И.П. (C_NO=1) замовив один (QUANTITY=1) монітор LG (T_NO=1).

Оновлення записів

Синтаксис оператора UPDATE, який використовується для оновлення записів, виглядає так:

UPDATE Имя_таблиці

SET Поле1 = Значение1 ..., ПОЛЕ N = ЗНАЧЕННЯ N

[WHERE Умова];

Якщо не задана умова WHERE, буде модифікована вся таблиця, а це може спричинити за собою непередбачувані наслідки, оскільки для всіх записів будуть встановлені однакові значення полий, тому завжди указуйте умову WHERE.

Припустимо, що нам потрібно відновити запис, якщо, наприклад, клієнт Іванов переїхав в інше місто і нам потрібно відзначити цю подію в нашій базі даних. Це робиться так:

UPDATE CLIENTS SET CITY = 'Київ'  WHERE С_N0 = 1;

Даний запит потрібно розуміти так: знайти запис, поле C_NO якій = 1 (це код клієнта Іванова), і встановити значення CITY, рівним "Київ".

Видалення записів

Тепер видалимо всіх клієнтів, номери яких перевищують 10:

DELETE FROM CLIENTS WHERE C_NO > 10;

За допомогою команди DELETE можна видалити всі записи таблиці, вказавши умову, яка підійде для всіх записів, наприклад:

DELETE FROM CLIETNS;

Якщо друга частина оператора DELETE-WHERE не вказана, значить, дія оператора розповсюджується на всі записи відразу.

Вибір записів

Додавання, зміна і видалення записів — це, безумовно, дуже важливі команди, але найчастіше ви використовуватимете оператора SELECT, який вибирає дані з таблиці. Синтаксис цього оператора, напевно, найбільш складний:

SELECT [DISTINCT|ALL] {*| [поле1 AS псевдонім] [,..., полеN AS

псевдонім]}

FROM Имя_таблицы1 [,..., Имя_таблицьДО]

[WHERE умова]

[GROUP BY список полів] [HAVING умова]

[ORDER BY список полів]

Зараз ми не розглядатимемо оператора SELECT повністю: краще зробимо це на прикладі — так набагато наочніше.

Наприклад, для виведення всіх записів з таблиці CLIENS, введіть:

SELECT * FROM CLIENTS;

В результаті ви отримаєте таку відповідь від сервера:

C_NO FIO ADDRESS CITY PHONE

1 Іванов И.П. Леніна 6 Кіровоград 80522111111

1 Іванов И.П. Леніна 6 Кіровоград 80522111111

2 Петров B.K. П Пушкіна 9 Кіровоград 80522112111

Звернете увагу на перші два записи — вони однакові. Теоретично, додавання однакових записів можливе — адже ми не вказали первинний ключ таблиці. Якщо ви хочете виключити однакові записи з відповіді сервера (але не з таблиці!), введіть запит:

SELECT DISTINCT * FROM CLIENTS;

Припустимо, що ви хочете вивести тільки прізвище і номер телефону клієнта, тоді введіть такий запит:

SELECT DISTINCT FIO, PHONE FROM CLIENTS;

Тепер займемося ускладненням наших запитів. Виведемо всі товари, ціна яких перевищує 500 рублів.

SELECT * FROM TOVAR WHERE PRICE > 500;

Ви можете використовувати інші знаки відносин: <,>,=,<>,<=,>=.

Якщо ваша компанія обслуговує декілька однофамільців, і ви хочете вивести інформацію про всі Іванових, використовуйте шаблон LIKE:

SELECT * FROM CLIENTS WHERE FIO LIKE '%Иванов%';

Запит читається так: вивести всю інформацію про клієнтів, прізвище яких схоже на 'Іванов'. Якщо ви хочете вибрати дані з різних таблиць, перед ім'ям поля потрібно указувати ім'я таблиці. Наступний запит виведе імена всіх клієнтів, які хоч би раз купували у нас товар:

SELECT DISTINCT CLIENTS.FIO

FROM CLIENTS, ORDERS WHERE CLIENTS.C_NO = ODREDS.C_NO;

Оператор SELECT дозволяє використовувати вкладені запити. Проте MYSQL їх не підтримує. Я це говорю для того, щоб ви не намагалися їх використовувати, витрачаючи свій час даремно.

Додаткові функції

При роботі з оператором SELECT вам доступні декілька корисних функцій, що обчислюють кількість елементів (COUNT), суму елементів (SUM), максимальне і мінімальне значення (МАХ і MIN), а також середнє значення (AVG).

Наступні оператори виведуть, відповідно, кількість записів в таблиці CLIENTS, найдорожчий товар і суму всіх товарів на складі.

SELECT COUNT(*) FROM CLIENTS;

SELECT MAX(PRICE) FROM TOVAR;

SELECT SUM(PRICE) FROM TOVAR;

Групування та сортування  записів

Оператор SELECT дозволяє групувати повернені значення. Наприклад, клієнт Іванов (C_NO=l) кілька разів замовляв у нас якийсь товар. Означає його номер зустрічається в таблиці ORDERS кілька разів. Інший клієнт також міг зробити декілька замовлень. Ми можемо згрупувати всі записи по полю C_NO (номер клієнта), а потім вивести суму замовлення кожного клієнта.

SELECT CLIENTS.FIO, SUM(ORDERS.AMOUNT) AS TOTALSUM

FROM CLIENTS, ORDERS

WHERE CLIENTS.C_NO = ORDERS.C_NO

GROUP BY ORDERS.C_NO;

Угрупування виконує оператор GROUP BY, який являетсячастью оператора SELECT. Оператора GROUP BY можна обмежити за допомогою HAVING. Цей оператор використовується для відбору рядків, повертаних GROUP BY. HAVING можна вважати аналогом WHERE, але тільки для GROUP BY:

HAVING <умова>

Наприклад, нас цікавлять тільки клієнти, які замовили товарів на загальну суму, що перевищує 1000.

SELECT CLIENTS.FIO, SUM(ORDERS.AMOUNT) AS TOTALSUM ' FROM CLIENTS, ORDERS WHERE CLIENTS.C_NO = ORDERS.C_NO GROUP BY ORDERS.C_NO HAVING TOTALSUM > 1000;

У цьому запиті ми використовували псевдонім стовпця TOTALSUM. B деяких серверах SQL для визначення псевдоніма не потрібно писати службове слово AS, а деякі вимагають застосування знаку рівності:

SUM(ORDERS.AMOUNT) TOTALSUM або TOTALSUM = SUM(ORDERS.AMOUNT).

Поки ми не встановили первинний ключ, сортування нашої таблиці не виконується. Дані будуть відображені в порядку занесення їх в таблицю. Для сортування по полю C_NO результату виведення таблиці CLIENTS використовується наступний оператор (сама таблиця при цьому не сортується):

SELECT * FROM CLIENTS ORDER BY C_NO;

Видалення полів і таблиць

А як видалити поле? Стандартом SQL не передбачено видалення стовпців, але в MYSQL ми все ж таки можемо це зробити:

ALTER TABLE CLIENTS DROP ZIP;

Видалити таблицю ще простіше:

DROP ORDERS;


 

А также другие работы, которые могут Вас заинтересовать

36489. Співвідношення між ентропією та імовірністю, формула Больцмана 170.77 KB
  В теорії Дебая зміщення атомів представляється як система поздовжніх та поперечних хвиль суцільного однорідного твердого тіла. Система хвиль має широкий спектр частот. Всі хвилі з будьякими частотами малої швидкості відповідають поперечним і поздовжнім хвилям у твердому тілі тобто нехтуємо дисперсією хвиль. Система хвиль таким чином складається із поздовжніх та поперечних хвиль.
36490. Розподіли Гаусса і Пуассона як частинні випадки біноміального розподілу 210.63 KB
  Для кожного тіла можна записати термічне рівняння стану та його внутрішню енергію як функцію параметрів які визначають його стан наприклад . Як називається це рівняння Це калоричне рівняння. Обидва ці рівняння не можуть бути отримані методами формальної термодинаміки. Якщо відомо відоме термічне рівняння стану то теорема Карно дозволяє в загальному вигляді розв’язати питання залежності внутрішньої енергії від об’єму.
36491. Середня довжина вільного пробігу молекул, її залежність від тиску і температури 242.26 KB
  Середня довжина вільного пробігу молекул її залежність від тиску і температури. Розглянемо молекулу яка рухається із деякою середньою швидкістю і при зіткненнях не змінює швидкості. Будемо вважати що рухається тільки одна молекула за якою ми спостерігаємо а решта – нерухомі. Виберемо проміжок часу рівний одній секунді тобто будемо розглядати шлях молекули за одиницю часу.
36492. Розподіл середньої кінетичної енергії за ступенями вільності для обертального руху 189.71 KB
  Кількість молекул всі вони незалежні. Кожна молекула характеризується у просторі кругових частот величинами . Імовірність потрапити молекулам у елементарний об’єм має вигляд . Знайдемо середню кінетичну енергію обертального руху виділеної молекули що припадає на один ступінь вільності при обертанні навколо осі навіщо нам чіплятись до осі вісь нічим не гірша.
36493. Термічна ефузія 238 KB
  Кількість зіткнень з нею за одиницю часу становить за законом косинусу . Повна кількість молекул у такому об’ємі становить . Цей простір буде також необмежений тому ми можемо вважати кількість комірок у ньому нескінченною. Скористаємось формулою Больцмана де у нашому випадку у знаменнику немає обмеження оскільки кількість комірок є нескінченною .
36494. Основи вакуумної техніки 120.78 KB
  Мірою кількості газу що переміщується у системі є величина яка згідно із рівнянням стану ідеального газу може бути записана як . Вакуумники – люди консервативні тому міра газу визначається у несистемних одиницях : лмм рт. або лтор а всі розрахунки кількості газу ми будемо вести на одиницю часу. Швидкістю відкачки насосу будемо називати такий об’єм газу який входить за одиницю часу до насосу і виміряний при тискові який має місце біля його входу .
36495. Термічна дифузія 233.6 KB
  Перший доданок являє собою потік взаємної дифузії молекул 1 газу а другий – термодифузійний потік. На рисунку вихідні сталі відносні концентрації змінились і набули вигляду концентрація молекул першого газу біля першої пластини; концентрація молекул першого газу біля другої пластини; концентрація молекул другого газу біля першої пластини; концентрація молекул другого газу біля другої пластини. В результаті такої конвекції нагріта частина газу рухається відносно холодної створюючи провиток. Очевидно що температура газу поблизу проволоки...
36496. Взаємна дифузія 175.31 KB
  Згідно із основним рівнянням переносу можна записати ; . Згідно із рівнянням Фіка яке справедливо і для суміші газів коефіцієнт дифузії першого газу у суміші двох газів . Рівняння політропного процесу робота при цьому процесі Ізотермічний і адіабатний процеси – це процеси ідеалізовані. Запишемо для нього рівняння.
36497. Квантовий підхід Дебая-Борна 315.41 KB
  Хоча швидкості молекул змінюються у стані термодинамічної рівноваги властивості газу залишаються сталими. Насправді закон про статистичний закон розподілу молекул за швидкостями можна сформулювати так : скільки молекул газу або яка їх частка мають швидкості значення яких лежать у деякому інтервалі наближеному до заданої швидкості Зрідження газів і методи одержання низьких температур. Рівняння ВандерВаальса показує що будь який газ може бути переведеним в рідкий стан але необхідною умовою для цього є попереднє охолодження газу до...