71752

Введение в БД MySQL. Типы данных

Лабораторная работа

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

Цель работы Ознакомление с базой данных MySQL: получение навыков запуска консоли для работы с MySQL корректного формирования и набора команд для работы с БД. Изучить имеющиеся типы данных для столбцов в базе данных MySQL освоить операции создания таблиц.

Русский

2014-11-11

85 KB

3 чел.

Лабораторная №1. Введение в БД MySQL. Типы данных.

Цель работы

Ознакомление с базой данных MySQL: получение навыков запуска консоли для работы с MySQL, корректного формирования и набора команд для работы с БД.

Изучить имеющиеся типы данных для столбцов в базе данных MySQL, освоить операции создания таблиц.

Краткие теоретические сведения о MySQL.  

Технология реляционных баз данных предполагает структурирование данных в таблицах, приведенных к нормальной форме. При этом связь между таблицами осуществляется с помощью ключевых полей. Структура таблиц с указанием типов данных в столбцах совместно со связями между таблицами образует структуру базы данных.

Для создания баз данных и таблиц в них, для настройки прав доступа к данным и манипулирования ими в СУБД MySQL применяется программа-монитор mysql. Запустив ее из командной строки, вы подключаетесь к СУБД с именем текущего пользователя операционной системы, если он имеет право на подключение. Для выбора базы данных применяется команда use dbname, где dbname - имя базы данных. Можно указать базу данных, имя пользователя и пароль при вызове монитора:

Mysql dbname -h hostname -u username -p password

Собственно пароль в командной строке лучше не вводить, а оставить ключ -p, тогда пароль будет запрошен дополнительно. Для выхода из монитора применяется команда exit или quit.

Типы таблиц в MySQL:

MyISAM

InnoDB

Нет транзакций

Есть транзакции

SQL запрос иногда не атомарен

SQL всегда атомарен

“STRICT” mode не работоспособен

“STRICT” mode работает плохо

Не crash safe

Crash safe

Дедлоки невозможны

Код приложения д.б. готов к дедлокам

Каждая табличка: 3 файла: .frm, .myd, .myi

A table is stored in a tablespace; 1 tablespace = many files; uncommitted transactions are stored in the log file; + .frm by MySQL

SELECT COUNT(*) is instant

SELECT COUNT(*) не быстр

Нет data cache. Только key cache

Page cache кэширует всё. Несколько key caches.

Данные хранятся в порядке вставки

В порядке первичного ключа

Основные типы данных:

TINYINT[(M)] [UNSIGNED] [ZEROFILL] 

Очень малое целое число. Диапазон со знаком от -128 до 127. Диапазон без знака от 0 до 255.

BIT 

BOOL 

Являются синонимами для TINYINT(1).

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

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

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] 

Целое число среднего размера. Диапазон со знаком от -8388608 до 8388607. Диапазон без знака от 0 до 16777215.

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

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

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

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

BIGINT[(M)] [UNSIGNED] [ZEROFILL] 

Большое целое число. Диапазон со знаком от -9223372036854775808 до 9223372036854775807. Диапазон без знака от 0 до 18446744073709551615. Особенности:

  •  Все арифметические операции выполняются с использованием значений BIGINT или DOUBLE со знаком, так что не следует использовать беззнаковые целые числа больше чем 9223372036854775807 (63 бита), кроме операций, выполняемых логическими функциями.
  •  Точное значение целого числа всегда можно хранить в столбце с типом BIGINT в виде строки. В этом случае MySQL выполнит преобразование строки в число без промежуточного преобразования.
  •  Если оба аргумента являются целочисленными величинами, то при выполнении над ними операций `-', `+', и `*' будут использоваться правила BIGINT-арифметики. Это означает, что при умножении двух больших целых чисел (или результатов вычислений функций, возвращающих целые числа) результат операции может оказаться непредсказуемым, если он превосходит значение 9223372036854775807.

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

Число с плавающей точкой. Атрибут точности может иметь значение <=24 для числа с плавающей точкой обычной (одинарной) точности и между 25 и 53 - для числа с плавающей точкой удвоенной точности. Эти типы данных сходны с типами FLOAT и DOUBLE, описанными ниже. FLOAT(X) относится к тому же интервалу, что и соответствующие типы FLOAT и DOUBLE, но диапазон значений и количество десятичных знаков не определены.

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] 

Малое число с плавающей точкой обычной точности. Допустимые значения: от -3,402823466E+38 до -1,175494351E-38, 0, и от 1,175494351E-38 до 3,402823466E+38. Если указан атрибут UNSIGNED, отрицательные значения недопустимы.

DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] 

Число с плавающей точкой удвоенной точности нормального размера. Допустимые значения: от -1,7976931348623157E+308 до -2,2250738585072014E-308, 0, и от 2,2250738585072014E-308 до 1,7976931348623157E+308. Если указан атрибут UNSIGNED, отрицательные значения недопустимы. Атрибут M указывает количество выводимых пользователю знаков, а атрибут D - количество разрядов, следующих за десятичной точкой. Обозначение DOUBLE без указания аргументов или запись вида FLOAT(X), где 25 <= X <= 53 справедливы для числа с плавающей точкой двойной точности.

DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL] 

REAL[(M,D)] [UNSIGNED] [ZEROFILL] 

Данные обозначения являются синонимами для DOUBLE.

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

``Неупакованное'' число с плавающей точкой. Ведет себя подобно столбцу CHAR, содержащему цифровое значение. Термин ``неупакованное'' означает, что число хранится в виде строки и при этом для каждого десятичного знака используется один символ. Разделительный знак десятичных разрядов, а также знак `-' для отрицательных чисел не учитываются в M (но место для них зарезервировано). Если атрибут D равен 0, величины будут представлены без десятичного знака, т.е. без дробной части. Максимальный интервал значений типа DECIMAL тот же, что и для типа DOUBLE, но действительный интервал для конкретного столбца DECIMAL может быть ограничен выбором значений атрибутов M и D. Если указан атрибут UNSIGNED, отрицательные значения недопустимы. Если атрибут D не указан, его значение по умолчанию равно 0. Если не указан M, его значение по умолчанию равно 10.

DEC[(M[,D])] [UNSIGNED] [ZEROFILL] 

NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL] 

Данные обозначения являются синонимами для DECIMAL.

DATE 

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

DATETIME 

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

TIMESTAMP[(M)] 

Временная метка. Интервал от '1970-01-01 00:00:00' до некоторого значения времени в 2037 году. MySQL выводит значения TIMESTAMP в форматах YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD или YYMMDD в зависимости от значений M: 14 (или отсутствующее), 12, 8, или 6; но можно также устанавливать значения в столбце TIMESTAMP, используя как строки, так и числа. Столбец TIMESTAMP полезен для записи даты и времени при выполнении операций INSERT или UPDATE, так как при этом автоматически вносятся значения даты и времени самой последней операции, если эти величины не введены программой. Можно также устанавливать текущее значение даты и времени, задавая значение NULL.

TIME 

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

YEAR[(2|4)] 

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

[NATIONAL] CHAR(M) [BINARY] 

Строка фиксированной длины, при хранении всегда дополняется пробелами в конце строки до заданного размера. Диапазон аргумента M составляет от 0 до 255 символов. Концевые пробелы удаляются при выводе значения. Если не задан атрибут чувствительности к регистру BINARY, то величины CHAR сортируются и сравниваются как независимые от регистра в соответствии с установленным по умолчанию алфавитом.

CHAR 

Это синоним для CHAR(1).

[NATIONAL] VARCHAR(M) [BINARY] 

Строка переменной длины. Примечание: концевые пробелы удаляются при сохранении значения (в этом заключается отличие от спецификации ANSI SQL). Диапазон аргумента M составляет от 0 до 255. Если не задан атрибут чувствительности к регистру BINARY, то величины VARCHAR сортируются и сравниваются как независимые от регистраТермин VARCHAR является сокращением от CHARACTER VARYING.

TINYBLOB 

TINYTEXT 

Столбец типа BLOB или TEXT с максимальной длиной 255 (2^8 - 1) символов.

BLOB 

TEXT 

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

MEDIUMBLOB 

MEDIUMTEXT 

Столбец типа BLOB или TEXT с максимальной длиной 16777215 (2^24 - 1) символов.

LONGBLOB 

LONGTEXT 

Столбец типа BLOB или TEXT с максимальной длиной 4294967295 (2^32 - 1) символов. Следует учитывать, что в настоящее время протокол передачи данных сервер/клиент и таблицы MyISAM имеют ограничение 16 Мб на передаваемый пакет/строку таблицы, поэтому пока нельзя использовать этот тип данных в его полном диапазоне.

ENUM('значение1','значение2',...) 

Перечисление. Перечисляемый тип данных. Объект строки может иметь только одно значение, выбранное из заданного списка величин 'значение1', 'значение2', ..., NULL или специальная величина ошибки "". Список ENUM может содержать максимум 65535 различных величин

SET('значение1','значение2',...) 

Набор. Объект строки может иметь ноль или более значений, каждое из которых должно быть выбрано из заданного списка величин 'значение1', 'значение2', ... Список SET может содержать максимум 64 элемента.

Рассмотрим пример:

Предположим, нам нужно хранить информацию о студентах групп. Для этих целей необходима база данных, в которой все данные будут структурированы, и мы сможем извлекать различную информацию через запросы .

Конечно, можно всю информацию записать в текстовый файл, но можем ли мы в текстовом файле получить «одним щелчком» выборку всех студентов, родившихся в январе?

Все данные в базе данных сохраняются в связанных таблицах. Каждая таблица содержит набор полей, каждое может сохранять информацию одного типа. Для решения рассматриваемой задачи, например, можно создать базу данных из одной таблицы. Таблица должна иметь следующие поля:

 

название

тип поля

1. 

идентификатор

счетчик

2. 

фамилия имя

текстовое

3. 

е-mail

текстовое

4. 

дата рождения

дата/время

5. 

информация о студенте

поле text

6. 

год поступления в университет

числовой

  •  в таблице обязательно должно быть поле, значение которого уникально для каждой записи. Самый простой способ создания такого поля - это доверить эту работу самой базе данных, поле типа «счетчик» будет формироваться автоматически и будет принимать значения 1, 2, 3 и т.д.
  •  поле text  содержит текстовую информацию большого объема в отличие от просто «текстового» поля, размер которого ограничен 255 символами.
  •  поле «год поступления в школу» сделать типом дата/время не удобно, так как нам придется заполнять не только год, но и месяц, и день поступления.

Практическая работа.

Для запуска консоли работы с MySQL необходимо в командной строке Windows (кнопка Пуск – Выполнить cmd) набрать команду для запуска базы данных.

C:\...\bin>mysql -u root -p     
Enter password:          
Welcome to the MySQL monitor.  Commands end with ; or \g.     
Your MySQL connection id is 1     
Server version: 5.0.45-community-nt MySQL Community Edition (GPL)
Type 'help;' or '\h' for help.
Type '\c' to clear the buffer.     
mysql>

Параметры -u root -p, сообщают, что запуск происходит от имени суперпользователя root с пустым паролем.

Все дело в том, что изначально базы данных MySQL были прописаны на компьютерах под управлением операционной системы Unix/Linux, а для них такой интерфейс привычен. Работа в таком режиме позволит изучить универсальный язык обращения к любой базе данных (язык SQL-запросов) и позволит использовать этот язык в программах.

Команды MySQL

Итак, все команды необходимо набирать в консоли. Важные ньюансы:

  •  Строка в консоли должна начинаться с символов mysql>.
  •  Команды могут быть достаточно длинными, поэтому можно нажимать на клавишу Enter, перенося команду на следующую строку. Для завершения и выполнения команды необходимо поставить символ «;»(точка с запятой).
  •  В случае, если команда неправильно введена, на экране появится сообщение об ошибке с комментарием MySQL.
  •  Для того, чтобы не набирать всю команду заново, можно нажать на клавиатуре кнопку со стрелкой вверх, вызвать предыдущую команду, а после внести в нее правку.
  •  Ответ консоли «Query OK (0.03 sec)» сообщает, что команда успешно выполнена.

Рассмотрим самые часто используемые команды:

show databases; (команда, показывающая уже существующие базы данных).

use name; (перейти к базе данных «name») Ту же самую команду можно записать короче: \u name

После того, как таблица создана, ее структуру можно посмотреть с помощью команды describe tablename

Практические задания для защиты проектов:

Создать базу данных, и таблицы к ней, в соответствии с вашим проектом. Заполнить не менее чем 5 записями.  Команду для заполнения сохранить также в текстовом формате. (fillDB1.txt). Вывести на экран записи, у которых одно из спроектированных полей уовлетворяет опредеелнному условию (на Ваше усмотрение).

  1.  Спроектировать структуру базы данных о студентах, для их распределения по местам практики: фамилия, год рождения, пол, группа, факультет, средний балл, место работы, город.
  2.  Спроектировать структуру базы данных об автомобилях: номер, год выпуска, марка, цвет, состояние, фамилия владельца, адрес.
  3.  Спроектировать структуру базы данных о квартирах, предназначенных для продажи: район, этаж, площадь, количество комнат, сведения о владельце, цена.
  4.  Спроектировать структуру базы данных о книгах, купленных библиотекой: название, автор, год издания, адрес автора, адрес издательства, цена, книготорговая фирма.
  5.  Спроектировать структуру базы данных о сотрудниках, имеющих компьютер: фамилия, номер комнаты, название отдела, данные о компьютерах.
  6.   Спроектировать структуру базы данных о заказах, полученных сотрудниками фирмы: фамилия, сумма заказа, наименование товара, название фирмы - клиента, фамилия заказчика.
  7.  Спроектировать структуру базы данных об оценках, полученных студентами на экзаменах: фамилия, группа, предмет, номер билета, оценка, преподаватель.
  8.  Спроектировать структуру базы данных о преподавателях кафедры: фамилия, должность, степень, номер комнаты, читаемые курсы.
  9.  Спроектировать структуру базы данных об авторах web-сайта и их статьях: имя, адрес, учетная запись, пароль, тема, заголовок, текст статьи, иллюстрации.
  10.  Спроектировать структуру базы данных о списке рассылки и подписчиках: тема и содержание письма, дата отправки, имена и адреса подписчиков, их учетные записи и пароли.

Вопросы для самоконтроля

  1.  Как запустить консоль MySQL?
  2.  Как узнать, какие базы данных доступны вам на вашем компьютере?
  3.  Что означает символ звездочки в запросе на выборку данных?
  4.  Как с помощью одного запроса удалить все данные из таблицы?
  5.  Какие SQL-запросы вы узнали на этом занятии?
  6.  Что происходит на жестком диске компьютера при создании новой базы данных? Новой таблицы?


Типы данных

исловые

Дата и время

символьные (строковые)


 

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

81990. Бринить струною гілочка весни. (Весна у природі) 61.5 KB
  Закріплення елементарних уявлень про найхарактерніші ознаки весни в живій і неживій природі, які можна виявити в процесі спостережень, а саме: з пробудженням рослин, з поведінкою перелітних птахів; показати, як зміни в неживій природі впливають на живу природу; поповнювати знання учнів...
81991. Зігріємо землю своєю любов’ю, для наших нащадків її збережемо 231 KB
  Мета. Поглиблювати знання учнів про природу, її красу та багатства, сприяти розумінню необхідності захищати і берегти навколишнє середовище, виховувати любов і повагу до рідної землі, трепетне ставлення до всього живого на ній.
81992. РАЗРАБОТКА СИСТЕМЫ БЮДЖЕТИРОВАНИЯ НА БАЗЕ 1С:ПРЕДПРИЯТИЕ 8.0: ОБМЕН ИНФОРМАЦИЕЙ С БУХГАЛТЕРСКОЙ КОНФИГУРАЦИЕЙ, РАЗРАБОТКА БИЗНЕС-ПРОЦЕССОВ 888 KB
  Созданы обработки для обмена данными между разрабатываемой конфигураций и стандартной конфигурацией 1С:Бухгалтерия, разработаны бизнес-процессы, необходимые для формирования бюджета.
81993. Стежинами рідного міста 155 KB
  Познайомити учнів з головними історичними подіями в процесі розвитку рідного міста. Розвивати зв’язне мовлення, пізнавальний інтерес, уміння робити висновки. Виховувати патріотичні почуття, бажання набувати нові знання.
81994. Дзеркало людської душі 46.51 KB
  На початку виховної години для розвитку креативного мислення проводиться мозковий штурм Вихователь пропонує дітям відгадати що в неї в подарунковому пакеті пропонуючи підказки з історії виникнення дзеркала його форми і де воно зустрічається в літературі.
81995. ЛЮБОВ – ЦЕ ДАР. І БОГ САМ ВИБИРА, ХТО ЗАСЛУЖИВ ОЦЕ ПІЗНАТИ ДИВО 42.5 KB
  Мета: поспілкуватися з учнями про кохання, про те, що вважається природним і що є небажаним у взаєминах молоді; зорієнтувати учнів на толерантне ставлення до вираження почуттів протилежними статями; допомогти учням розібратися у собі, підготувати до майбутнього сімейного життя.
81996. Виховна година «Злочин і покарання» 35.5 KB
  Мета: запобігати шкідливим звичкам, які негативно впливають на здоров’я підлітків; формувати вміння і навички учнів щодо власної безпеки, розуміння відповідальності за власні вчинки та їх наслідки; виховувати в учнів бажання зберегти власне здоров’я.
81997. Прийди до серця, Україно, благослови добром мене… 45.5 KB
  Мета: виховувати почуття патріотизму, національної гордості, любові до рідного краю, розуміння своєї причетності до всіх подій, які відбувалися в Україні; формувати переконаність у нетлінності духовних скарбів народу.
81998. Пронеси добро і милосердя через усе своє життя 32.5 KB
  Пронеси добро і милосердя через усе своє життя Що таке добро милосердя Як ви думаєте діти Відповіді дітей. Я б хотіла діти щоб ви усвідомлювали свої вчинки несли за них відповідальність бо без відповідальності за них не буде добра і милосердя. Діти Що є головним для кожного з вас що є найважливіше для вас...