русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Структура мови SQL


Дата добавления: 2015-07-09; просмотров: 1255; Нарушение авторских прав


Рядки.Рядок є послідовністю символів, поміщених або в одинарні лапки (‘'’) - апострофи, або в подвійні лапки (‘"’). При використанні діалекту ANSI SQL допустимі тільки одинарні лапки. Наприклад:

'а string'

"another string"

Існує декілька способів включити лапки в рядок:

- Одиночна лапка (апостроф) ‘'’ усередині рядка, поміщеного в лапки ‘'’, може бути записана як ''''.

- Подвійна лапка ‘"’ усередині рядка, поміщеного в подвійні лапки ‘"’, може бути записана як '""'.

- Можна передувати символу лапки символом екранування (‘).

- Для символу ‘'’ усередині рядка, поміщеного в подвійні лапки, не вимагається спеціальної обробки; його також не потрібно дублювати або передувати зворотним слешем. Так само не вимагає спеціальної обробки подвійна лапка ‘"’ усередині рядка, поміщеного в одиночні лапки ‘'’.

Числа.Цілі числа представляються у вигляді послідовності цифр. Для чисел з плаваючою крапкою як роздільник десяткових знаків використовується символ ‘.’. Числа обох типів можуть передувати символом ‘-’, що позначає негативну величину.

Значення NULL.Значення NULL означає “відсутність даних”'. Вони є відмінним від значення 0 для числових типів даних або порожнього рядка для строкових типів

Імена баз даних, таблиць, стовпців.Для всіх імен баз даних, таблиць, стовпців, індексів і псевдонімів в MySQL прийняті одні і ті ж правила.

Ідентифікатор Максимальна довжина рядка Символи, що допускаються
База даних Будь-який символ, допустимий в імені каталога, за винятком ‘/’, ‘\’ або ‘.’
Таблиця Будь-який символ, допустимий в імені файлу, за винятком ‘/’ або ‘.’
Стовпець Всі символи

 

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



ZEROFILL в MySQL означає заливку нулями незначущих розрядів в числах.

Якщо вказаний атрибут UNSIGNED, негативні значення недопустимі.

У відсутність слова UNSIGNED звичайно приймається тип SIGNED.

  1. SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

Мале ціле число. Діапазон із знаком від -32768 до 32767. Діапазон без знаку від 0 до 65535.

  1. INT[(M)] [UNSIGNED] [ZEROFILL]

Ціле число нормального розміру. Діапазон із знаком від -2147483648 до 2147483647. Діапазон без знаку від 0 до 4294967295.

  1. INTEGER[(M)] [UNSIGNED] [ZEROFILL]

Синонім для INT.

  1. FLOAT(точність) [UNSIGNED] [ZEROFILL]

Число з плаваючою крапкою. Атрибут точності може мати значення <=24 для числа з плаваючою точкою звичайної (одинарної) точності і між 25 і 53 - для числа з плаваючою точкою подвоєної точності.

  1. DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

“Неупаковане”' число з плаваючою крапкою. Поводиться подібно до стовпця CHAR, що містить цифрове значення. Термін “неупаковане” означає, що число зберігається у вигляді рядка і тому для кожного десяткового знаку використовується один символ. Розділовий знак десяткових розрядів, а також знак ‘-’ для негативних чисел не враховуються в M (але місце для них зарезервоване). Якщо атрибут D рівний 0, величини будуть представлені без десяткового знаку, тобто без дробової частини. Якщо атрибут D не вказаний, його значення за умовчанням рівне 0. Якщо не вказаний M, його значення за умовчанням 10.

  1. DATE

Дата. Підтримується інтервал від '1000-01-01' до '9999-12-31'. MySQL виводить значення DATE у форматі 'YYYY-MM-DD', але можна встановити значення в стовпець DATE, використовуючи як рядки, так і числа.

  1. DATETIME

Комбінація дати і часу. Підтримується інтервал від '1000-01-01 00:00:00' до '9999-12-31 23:59:59'. MySQL виводить значення DATETIME у форматі 'YYYY-MM-DD HH:MM:SS', але можна встановлювати значення в стовпці DATETIME, використовуючи як рядки, так і числа.

  1. TIME

Час. Інтервал від '-838:59:59' до '838:59:59'. MySQL виводить значення TIME у форматі 'HH:MM:SS', але можна встановлювати значення в стовпці TIME, використовуючи як рядки, так і числа.

  1. YEAR[(2|4)]

Рік в двозначному або чотиризначному форматах (за умовчанням формат чотиризначний). Допустимі наступні значення: з 1901 по 2155, 0000 для чотиризначного формату року і 1970-2069 при використанні двозначного формату (70-69). MySQL виводить значення YEAR у форматі YYYY, але можна задавати значення в стовпці YEAR, використовуючи як рядки, так і числа (тип даних YEAR недоступний у версіях, передуючих MySQL 3.22).

  1. [NATIONAL] CHAR(M) [BINARY]

Рядок фіксованої довжини, при зберіганні завжди доповнюється пропусками в кінці рядка до заданого розміру. Діапазон аргументу Mскладає від 0до 255символів (від 1до 255у версіях, передуючих MySQL 3.23). Кінцеві пропуски віддаляються при виведенні значення.

  1. [NATIONAL] VARCHAR(M) [BINARY]

Рядок змінної довжини. Примітка: кінцеві прогалини віддаляються при збереженні значення (у цьому полягає відмінність від специфікації ANSI SQL). Діапазон аргументу M складає від 0 до 255 символів (від 1 до 255 у версіях, передуючих MySQL Version 4.0.2). Якщо не заданий атрибут чутливості до регістра BINARY, то величини VARCHAR сортуються і порівнюються як незалежні від регістра. Термін VARCHAR є скороченням від CHARACTER VARYING.

  1. BLOB, TEXT

Стовпець типу BLOBабо TEXTз максимальною довжиною 65535 (2^16 - 1) символів.

4. Домашнє завдання

1. Вивчити теоретичний матеріал за підручником [1], ст. 195 − 226.

2. Вивчити матеріал лекції.

 

5. Виконання роботи

Розглянемо приклад створення бази даних «Форум», яка має наступну структурну схему.

Для цього насамперед треба запустити сервер MySQL. Йдемо в системне меню Пуск - Програми - MySQL - MySQL Server 5.1 - MySQL Command Line Client. Відкриється вікно, що пропонує ввести пароль.

Натискаємо Enter на клавіатурі, якщо ви не вказували пароль при налаштуванні сервера або вказуємо пароль, якщо ви його задавали. Чекаємо запрошення MySQL>.

Нам треба створити базу даних, яку ми назвемо форум. Для цього в SQL існує оператор створити базу даних. Створення бази даних має наступний синтаксис: create database ім’я_бази_даних;

Максимальна довжина імені БД складає 64 знака і може включати букви, цифри, символ "_" і символ "$". Ім'я може починатися з цифри, але не повинно повністю складатися з цифр. Будь-який запит до БД закінчується крапкою з комою (цей символ називається роздільником - delimiter). Отримавши запит, сервер виконує його і в разі успіху видає повідомлення " Query OK..."

І так створюємо БД forum:

 

Натискаємо Enter і бачимо відповідь "Query OK ...", яка означає, що БД була створена:

 

Ось так все просто. Тепер у цій базі даних нам треба створити 3 таблиці: теми, користувачі і повідомлення. Але перед тим, як це робити, нам треба вказати серверу в яку саме БД ми створюємо таблиці, тобто треба вибрати БД для роботи. Для цього використовується оператор use. Синтаксис вибору БД для роботи наступний: use ім’я_бази_даних;

 

І так, вибираємо для роботи нашу БД forum:

 

Натискаємо Enter і бачимо відповідь "Database changed" - база даних вибрана.

Вибирати БД необхідно в кожному сеансі роботи з MySQL.

Для створення таблиць в SQL існує оператор create table. Створення бази даних має наступний синтаксис: create table ім’я_таблиці (ім’я_першого_стовпця тип, ім’я_другого_стовпця тип, ..., ім’я_останнього_стовпця тип );

 

Вимоги до імен таблиць і стовпців такі ж, як і для імен БД. До кожному колонку прив'язаний певний тип даних, який обмежує характер інформації, яку можна зберігати в стовпці (наприклад, запобігає введення літер в числове поле). MySQL підтримує кілька типів даних: числові, рядкові, календарні та спеціальний тип NULL, що позначає відсутність інформації. Детально про типи даних ми будемо говорити в наступному уроці, а поки повернемося до наших таблицями. У них у нас всього два типи даних - цілочисельні значення (int) і рядки (text). Отже, створимо першу таблицю - Теми:

 

Натискаємо Enter - таблиця створена:

 

І так, ми створили таблицю topics (теми) з трьома стовпцями:
id_topic int - id теми (цілочисельне значення),
topic_name text - ім’я теми (рядок),
id_author int - id автори (цілочисельне значення).

Аналогічним чином створимо дві інші таблиці - users (користувачі) і posts (повідомлення):

 

Отже, ми створили БД форум і в ній три таблиці. Зараз ми про це пам'ятаємо, але якщо наша БД буде дуже великою, то втримати в голові назви всіх таблиць і стовпців просто неможливо. Тому треба мати можливість подивитися, які БД у нас існують, які таблиці в них присутні, і які стовпці ці таблиці містять. Для цього в SQL існує кілька операторів:

show databases – показати всі наявні БД;

show tables - показати список таблиць поточної БД (попередньо її треба вибрати за допомогою оператора use);

describe ім’я_таблиці - показати опис стовпців зазначеної таблиці.

Давайте спробуємо. Дивимося всі наявні бази даних (у вас вона поки що одна - forum, у мене 30, і всі вони перераховані в стовпчик):

 

Тепер подивимося список таблиць БД forum (для цього її попередньо треба вибрати), не забуваємо після кожного запиту натискати Enter:

У відповіді бачимо назви наших трьох таблиць. Тепер подивимося опис стовпців, наприклад, таблиці topics:

 

Перші два стовпці нам знайомі - це ім'я і тип даних, значення інших нам ще належить дізнатися. Але колись ми таки дізнаємося які типи даних бувають, які і коли слід використовувати.

А зараз ми розглянемо останній оператор - drop, він дозволяє видаляти таблиці та БД. Наприклад, давайте видалимо таблицю topics. Так як ми два кроки назад вибирали БД forum для роботи, то зараз її вибирати не треба, можна просто написати: drop table ім’я_таблиці; і натиснути Enter.

 

Тепер знову подивимося список таблиць нашої БД:

 

Наша таблиця дійсно вилучена. Тепер давайте видалимо і саму БД forum (видаляйте, не шкодуйте, її все одно доведеться переробляти). Для цього напишемо: drop database ім’я_бази_даних; і натискаємо Enter.

 

І переконаєтеся в цьому, зробивши запит на всі наявні БД:

 


 

У вас, напевно, немає жодної БД, у мене їх стало 29 замість 30.

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

Тепер будемо вдосконалити таблиці для нашого форуму. Спочатку розберемо їх. І почнемо з таблиці users (користувачі). У ній у нас 4 стовпці:

id_user - цілочисельне значення, значить буде тип int, обмежимо його 10 символами - int (10).
name – рядкове значення varchar, обмежимо його 20 символами - varchar(20).
email - рядкове значення varchar, обмежимо його 50 символами - varchar(50).
password - рядкове значення varchar, обмежимо його 15 символами - varchar(15).

Всі значення полів обов'язкові для заповнення, значить треба додати тип NOT NULL.

id_user int (10) NOT NULL

name varchar(20) NOT NULL

email varchar(50) NOT NULL

password varchar(15) NOT NULL

Перший стовпець , як ви пам'ятаєте з концептуальної моделі нашої БД , є первинним ключем (тобто його значення унікальні, і вони однозначно ідентифікують запис). Стежити за унікальністю самостійно можна, але не раціонально. Для цього в SQL є спеціальний атрибут - AUTO_INCREMENT, який при зверненні до таблиці на додавання даних вираховує максимальне значення цього стовпця, отримане значення збільшує на 1 і заносить його в стовпець. Таким чином, в цьому стовпці автоматично генерується унікальний номер, а отже тип NOT NULL зайвий. Отже, присвоїмо атрибут стовпцю з первинним ключем:

id_user int (10) AUTO_INCREMENT

name varchar(20) NOT NULL

email varchar(50) NOT NULL

password varchar(15) NOT NULL

Тепер треба вказати, що поле id_user є первинним ключем. Для цього в SQL використовується ключове слово PRIMARY KEY (), в скобочках вказується ім'я ключового поля. Внесемо зміни:
id_user int (10) AUTO_INCREMENT
name varchar(20) NOT NULL
email varchar(50) NOT NULL
password varchar(15) NOT NULL
PRIMARY KEY (id_user)

 

Отже, таблиця готова, і її остаточний варіант виглядає так:
create table users (
id_user int (10) AUTO_INCREMENT,
name varchar(20) NOT NULL,
email varchar(50) NOT NULL,
password varchar(15) NOT NULL,
PRIMARY KEY (id_user)
);

 

Тепер розберемося з другої таблицею - topics (теми). Міркуючи аналогічно, маємо наступні поля:

id_topic int (10) AUTO_INCREMENT
topic_name varchar(100) NOT NULL
id_author int (10) NOT NULL
PRIMARY KEY (id_topic)

 

Але в моделі нашої БД поле id_author є зовнішнім ключем, тобто воно може мати тільки ті значення, які є в полі id_user таблиці users. Для того, щоб вказати це в SQL є ключове слово FOREIGN KEY (), яке має наступний синтаксис:

FOREIGN KEY (ім’я_стовпця_котре_являється_зовнішнім_ключем) REFERENCES ім’я_таблиці_батька (ім’я _стовпця_батька);

Вкажемо, що id_author - зовнішній ключ:

id_topic int (10) AUTO_INCREMENT
topic_name varchar(100) NOT NULL
id_author int (10) NOT NULL
PRIMARY KEY (id_topic)
FOREIGN KEY (id_author) REFERENCES users (id_user)

 

Таблиця готова, і її остаточний варіант виглядає так:
create table topics (
id_topic int (10) AUTO_INCREMENT,
topic_name varchar(100) NOT NULL,
id_author int (10) NOT NULL,
PRIMARY KEY (id_topic),
FOREIGN KEY (id_author) REFERENCES users (id_user)
);

 

Залишилася остання таблиця - posts (повідомлення). Тут все аналогічно, тільки два зовнішніх ключа:
create table posts (
id_post int (10) AUTO_INCREMENT,
message text NOT NULL,
id_author int (10) NOT NULL,
id_topic int (10) NOT NULL,
PRIMARY KEY (id_post),
FOREIGN KEY (id_author) REFERENCES users (id_user),
FOREIGN KEY (id_topic) REFERENCES topics (id_topic)
);

 

Зверніть увагу, зовнішніх ключів у таблиці може бути декілька, а первинний ключ в MySQL може бути тільки один. У попередньому прикладі ми видалили нашу БД forum, прийшов час створити її знову.

Запускаємо сервер MySQL (Пуск - Програми - MySQL - MySQL Server 5.1 - MySQL Command Line Client), вводимо пароль, створюємо БД forum (create database forum;), вибираємо її для використання (use forum;) і створюємо три наші таблиці:


 

Зверніть увагу, одну команду можна писати в кілька рядків, використовуючи клавішу Enter (MySQL автоматично підставляє символ нового рядка -> ), і тільки після роздільник (крапки з комою) натискання клавіші Enter приводить до виконання запиту.

Пам'ятайте, якщо ви зробили щось не так, завжди можна видалити таблицю або всю БД за допомогою оператора DROP. Виправляти щось у командному рядку вкрай незручно, тому іноді (особливо на початковому етапі) простіше писати запити в якому-небудь редакторові, наприклад в Блокноті, а потім копіювати і вставляти їх в чорне віконце.

Отже, таблиці створені, щоб переконатися в цьому згадаємо про команду show tables:

 

І, нарешті, подивимося структуру нашої останньої таблиці posts:


 

Тепер стають зрозумілі значення всіх полів структури, крім поля DEFAULT. Це поле значень за замовчуванням. Ми могли б для якого-небудь стовпця (або для всіх) вказати значення за замовчуванням. Наприклад, якби у нас було поле з назвою "Одружені\Заміжня" і типом ENUM ('так', 'ні'), то було б розумно зробити одне з значень значенням за замовчуванням. Синтаксис був би наступний:
married enum ('так', 'ні') NOT NULL default('так')

 

А тепер самостійно створіть БД із запропонованою структурою.



<== предыдущая лекция | следующая лекция ==>
СТВОРЕННЯ БАЗ ДАНИХ І ТАБЛИЦЬ ЗАСОБАМИ MySQL | База даних «Комп'ютерна фірма»


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.27 сек.