close

Вход

Забыли?

вход по аккаунту

?

evseevleonovaschetkina2

код для вставкиСкачать
Федеральное агенТство по образованию
Государственное образовательное учреждение
высшего профессионального образования
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
Г. С. Евсеев, Е. Ю. Леонова, Ю. В. Щеткина
Работа с базами данных
в СУБД MySQL
Учебное пособие
Санкт-Петербург
2010
УДК 004.65
ББК 32.973.26
Е25
Рецензенты:
доцент кафедры № 51 Г. В. Преснякова;
доцент кафедры № 52 А.А. Овчинников
Утверждено
редакционно-издательским советом университета
в качестве учебного пособия
Евсеев, Г. С.
Е25 Работа с базами данных в СУБД MySQL: учеб. пособие /
Г. С. Евсеев, Е. Ю. Леонова, Ю. В. Щеткина. – СПб.: ГУАП,
2010. – 36 с.
В учебном пособии описаны возможности баз данных в среде
MySQL. Рассматриваются вопросы создания указанных баз данных,
редактирования и извлечения данных из таблиц. Кратко освещены
также вопросы администрирования баз данных в СУБД MySQL.
Пособие предназначено для студентов, обучающихся по направлению 080800 «Прикладная информатика». Оно может быть использовано при выполнении дипломных работ, а также для самостоятельной работы студентов.
УДК 004.65
ББК 32.973.26
Учебное издание
Евсеев Григорий Сергеевич
Леонова Екатерина Юрьевна
Щеткина Юнна Викторовна
Работа с базами данных в СУБД MySQL
Учебное пособие
Редактор А. Г. Гранаткина
Верстальщик А. Н. Колешко
Сдано в набор 22.12.10. Подписано к печати 14.05.10. Формат 60×84 1/16.
Бумага офсетная. Усл.-печ. л. 2,1. Уч.-изд. л. 1,9.
Тираж 30 экз. Заказ № 213.
Редакционно-издательский центр ГУАП
190000, Санкт-Петербург, Б. Морская ул., 67
© Санкт-Петербургский государственный
университет аэрокосмического
приборостроения (ГУАП), 2010
© Г. С. Евсеев, Е. Ю. Леонова,
Ю. В. Щеткина, 2010
Введение
В настоящее время база данных является частью практически любой информационной системы, в которой основную работу по обработке и хранению информации выполняют компьютеры. Для создания и
сопровождения баз данных используются сложные программные комплексы, называемые СУБД ( система управления базами данных).
Особенности каждой СУБД определяются ее разработчиком с учетом интересов потенциальных пользователей. Наиболее широко в современных информационных системах используются реляционные базы данных, которые позволяют хранить информацию в табличном, т. е.
структурированном, виде.
Такое представление данных имеет множество преимуществ:
– для разработки базы данных можно использовать хорошо разработанные математические методы;
– для выбора информации из базы можно применять известные эффективные методы сортировки и поиска;
– язык, на котором формулируются запросы к базе данных, легко
формализуется, что позволяет унифицировать пользовательские интерфейсы к базам данных.
Для реляционных баз данных создан единый язык, на котором формулируются запросы. Этот язык называется SQL, а целый ряд СУБД,
для которых он является входным, называется SQL-серверами.
К настоящему времени разработан стандарт языка ������������������
SQL���������������
, и все разработчики SQL-серверов обязаны учитывать требования этого стандарта.
В противном случае их продукция может оказаться неконкурентоспособной.
В данном пособии описаны методы выполнения основных действий
с базами данных в среде MySQL. Рассмотрен синтаксис основных SQLинструкций для создания и сопровождения реляционной базы данных.
Приведены примеры управления привилегиями пользователей по работе с табличными данными. Для отладки и демонстрации примеров
был использован сервер MySQL версии 5.0.1.
В Приложении приведен список ключевых слов и выражений для
сервера MySQL, что может быть использовано в качестве справочного
пособия.
При написании учебного пособия в качестве базового источника сведений была выбрана книга [ 1 ], поскольку в ней, по мнению авторов,
необходимый для изучения материал представлен, во-первых, достаточно полно и, во-вторых, без излишнего нагромождения несущественных для первого ознакомления деталей.
3
1. Типы данных MySQL
Перед созданием базы данных необходимо точно определить, какие типы данных будут использованы.
Все типы данных, с которыми работает MySQL, можно разбить
на три группы: числовые, текстовые и даты-времени. Рассмотрим
их в указанном порядке.
1.1. Числовые типы данных
Числовые типы столбцов используются для хранения чисел. Все
числовые типы можно разбить на два подтипа: для хранения точных чисел и чисел с плавающей точкой. Числовые типы характеризуются длиной хранимых чисел, а типы с плавающей точкой – еще
и числом десятичных разрядов. Эти значения указывают после объявления типа столбца, например, FLOAT(10, 2). Такая запись числа
содержит 10 символов и два знака после десятичного разделителя.
Объявление числовых типов можно заканчивать ключевыми
словами ZEROFILL и(или) UNSIGNED. Первое означает, что число
будет отображено с ведущими нулями, второе – что столбец содержит только положительные числа или нули.
Типы данных NUMERIC и DECIMAL (DEC) идентичны. Они используются для хранения чисел с плавающей точкой, обычно для
хранения денежных значений.
Тип данных INTEGER можно сократить до INT. Это означает целое число в заданном диапазоне. Для хранения этого типа данных
отводится 4 байта, что соответствует числам от –2 147 483 648 до
2 147 483 647. Существует несколько вариантов типа INTEGER.
Тип данных TINYINT используется для представления однобайтных чисел от –128 до 127. Для хранения двухбайтных чисел (от
–32 768 до 32 767) выбирается тип данных SMALLINT, а для хранения самых больших целых чисел (от –263 до 263–1) – тип BIGINT .
Числа с плавающей точкой принадлежат либо к типу FLOAT (четырехбайтные числа в диапазоне от –3,4 · 10 38 до 3,4 · 1038), либо, к типу DOUBLE (восьмибайтные числа в диапазоне от –10–308 до 10308).
1.2. Текстовые типы данных
Типы данных char и varchar содержат данные, состоящие из следующих компонентов:
– знаков в верхнем и нижнем регистрах (например, a, b и C);
– цифр (например, 1, 2 и 3);
– специальных знаков (например, символы @, & !).
4
Тип данных CHAR используется для хранения строк фиксированной длины. После этого ключевого слова обычно указывается
длина строки, например, CHAR(50). Если длина строки не указана, то считается, что она состоит из одного символа. Максимальная
длина поля данного типа равняется 255 символам. Если число переданных в строку символов меньше указанной длины, то такая строка дополняется пробелами, если больше, то обрезается. При возврате значения пробелы будут удалены из строки.
Тип данных VARCHAR предназначен для хранения строк переменной длины. Как и в предыдущем типе данных, задается максимальная длина строки, например, VARCHAR(30). При этом более
длинные строки, переданные в этот столбец, будут обрезаны.
Разница между этими типами данных заключается в том, что по
строкам с фиксированной длиной выборка происходит намного быстрее. И если важна скорость работы с базой данных, то предпочтительнее выбирать тип данных CHAR.
Тип полей TEXT используется для хранения более длинных фрагментов текста, чем допускается предыдущими типами. Тип данных
BLOB означает большой двоичный объект. Эти два типа в целом
одинаковы с той лишь разницей, что в типе данных BLOB сравнение
строк происходит с учетом регистра символов, а в TEXT – без учета
регистра. Оба типа данных имеют переменную длину и характеризуются некоторыми вариациями:
– TINYTEXT и TINYBLOB могут хранить до 255 символов;
– TEXT и BLOB могут хранить до 64 кбайт информации;
– MEDIUMTEXT и MEDIUMBLOB могут хранить до 16 Мбайт
данных;
– LONGTEXT и LONGBLOB могут хранить до 4 Гбайт данных.
Тип данных ENUM позволяет перечислить набор возможных
значений для ввода в поле и хранит только одно значение из представленного списка. Например, ENUM(`m`, `a`, `z`) . Если не указать,
какое значение используется в поле по умолчанию, то будет использовано первое значение списка.
Тип данных SET аналогичен типу ENUM, но позволяет хранить
несколько значений из списка значений в поле.
1.3. Типы даты и времени
Тип данных DATE применяется для хранения дат в формате
(гггг-мм-дд), а тип TIME применяется для хранения времени в формате (чч:мм:сс).
5
Тип данных DATETIME объединяет два предыдущих типа и имеет формат (гггг-мм-дд чч:мм:сс) .
Поле типа TIMESTAMP обычно используется для хранения даты и времени, когда была создана или изменена соответствующая
строка.
Поле типа YEAR содержит значение года. Возможны две длины:
YEAR(2) и YEAR(4) – для двух и четырех цифр года соответственно. При использовании YEAR(2) диапазон дат принимается с 1970
по 2069 гг.
2. Создание базы данных taxi
Создадим базу данных для фирмы, предлагающей услуги такси.
В фирме на нескольких автомобилях работает посменно несколько
водителей. В базе данных будут храниться сведения о водителях,
расписание их работы с указанием фамилий и данные об автомобилях.
База данных taxi создается командой CREATE DATABASE:
При правильном вводе сервер выдает сообщение «Query OK,
1 row affected».
Затем необходимо сообщить серверу о том, что вы собираетесь работать с базой данных taxi. Это делается командой
mysql>USE taxi;
которую требуется подавать каждый раз перед обращением к указанной базе данных.
Таблицы создаются командой CREATE TABLE. При этом следует указать не только имя таблицы, но и ее полное определение, состоящее из определений отдельных полей (столбцов таблицы).
Создадим таблицу cars, которая будет содержать следующие поля:
model – название модели автомобиля;
madein – год выпуска автомобиля;
reg _number – государственный регистрационный номер;
color – цвет автомобиля.
Необходимо помнить, что названия баз данных, таблиц и полей
должны задаваться одним словом (без использования символовразделителей).
6
Кроме того, нам понадобится столбец id, однозначно идентифицирующий запись об автомобиле – первичный ключ. Значения этого поля не должны повторяться и не могут быть пустыми, желательно, чтобы эти значения были целыми числами, увеличивающимися
на единицу в каждой новой записи.
mysql>CREATE TABLE cars (
model CHAR(50) NON NULL,
madein YEAR(4) NOT NULL,
reg_number CHAR(12) NOT NULL,
color CHAR(15) NOT NULL,
id SMALLINT AUTO_INCREMENT,
PRIMARY KEY(id)
);
Атрибут NOT NULL означает, что все строки таблицы должны иметь значение в этом столбце. Если NOT NULL не указан, поле в отдельных записях может не заполняться (т. е. иметь значение
NULL).
Ключевое выражение PRIMARY KEY после имени столбца означает, что этот столбец является первичным ключом для таблицы.
Данные в этом столбце должны быть уникальными.
AUTO_INCREMENT – атрибут, используемый для создания
столбца с уникальными значениями. Если при вставке строк оставлять такое поле пустым, MySQL автоматически генерирует уникальное значение идентификатора. Это значение будет на единицу
больше максимального значения, уже существующего в столбце.
Каждая таблица может содержать не больше одного такого поля.
MySQL использует следующий алгоритм инициализации счетчика в столбце id, имеющем атрибут AUTO_INCREMENT: после запуска сервера MySQL при первом запросе добавить данные в таблицу cars сервер высчисляет максимальное значение в столбце id. По7
лученное значение увеличивается на единицу, заносится в новую
запись и в счетчик. Если таблица была пуста, то счетчик устанавливается в единичное положение.
Таблица drivers содержит столбцы для хранения имени (name),
отчества (second_name), фамилии (family_name) водителя, даты его
рождения (birth), домашнего адреса (address) и даты поступления
на работу (startdate).
mysql>CREATE TABLE drivers (
name CHAR(30) NOT NULL,
second_name CHAR(30),
family_name CHAR(30) NOT NULL,
birth DATE NOT NULL,
address CHAR(150) NOT NULL DEFAULT ‘unknown’,
startdate DATE NOT NULL DEFAULT ‘2002-01-01’,
id SMALLINT AUTO_INCREMENT,
PRIMARY KEY (id)
);
Кроме того, при создании таблицы для некоторых полей могут
использоваться дополнительные ключевые слова, уточняющие диапазон возможных значений.
Ключевое слово UNSIGNED может применяться после указания
целочисленного типа и означает, что значение в поле может быть либо положительным, либо нулевым.
После ключевого слова DEFAULT по умолчанию указывается значение для данного столбца. Например, DEFAULT ‘no description’.
Таблица timetable содержит следующие поля: дата поездки (use_
on), номер машины (car_number) и идентификатор водителя (driver_
number).
mysql>CREATE TABLE timetable (
use_on DATE DEFAULT NULL,
car_number SMALLINT,
driver_number SMALLINT,
8
id SMALLINT AUTO_INCREMENT,
PRIMARY KEY(id),
INDEX (car_number),
INDEX (driver_number),
FOREIGN KEY (car_number) REFERENCES cars (id),
FOREIGN KEY (driver_number) REFERENCES drivers (id)
);
MySQL поддерживает ссылочную целостность базы путем ограничения внешнего ключа FOREIGN KEY. Назначение данного ключа –
проверять соответствие значений в столбцах родительского и внешнего ключей. Эти столбцы должны иметь одинаковый тип данных и
только те значения, которые встречаются в родительском ключе, могут использоваться во внешнем ключе. Родительский ключ не должен содержать повторяющихся значений и значений NULL.
Последние два столбца таблицы timetable являются внешними
ключами, и MySQL 5 требует, чтобы перед созданием внешних ключей для этих столбцов были созданы индексы.
Индекс формируется из значений одного или нескольких столбцов таблицы и позволяет ускорить поиск нужных строк по заданным значениям в поле. Для ускорения выполнения запросов индексы обычно создаются для тех столбцов таблицы, которые часто используются в запросах.
После создания таблиц можно просмотреть их список и структуру командой
mysql>SHOW TABLES;
9
Структуру таблицы можно просмотреть командой
mysql>DESCRIBE table_name;
Здесь table_name – имя таблицы. Эта команда позволит просмотреть типы данных столбцов и дополнительные атрибуты, указанные при создании таблицы.
Например, структура таблицы cars выглядит так:
2.1. Запись данных в таблицы
Для внесения данных в базу данных используется оператор
insert. Самый простой вариант этой процедуры – внесение данных во все поля таблицы:
mysql>INSERT INTO cars VALUES
(‘Volga’, ‘2003’, ‘A786YC78’, ‘white’, ‘1’);
mysql>INSERT INTO cars VALUES
–>(‘Volga’, ‘2002 ‘ , ‘A788YC78’, ‘yellow’, ‘2’);
mysql>INSERT INTO cars VALUES
–>(‘Volkswagen’, ‘2003’, ‘A789YC78’, ‘red’, ’3’);
Аналогично можно добавлять данные только в избранные поля,
при этом следует указывать имена полей явно:
mysql>INSERT INTO cars (model, madein, reg_number, color)
VALUES
–>(‘Renault’, ‘2005’ , ‘A790YC78’, ‘white’);
Добавим еще несколько записей в таблицы:
mysql>INSERT INTO drivers VALUES (
–>’Stanislav’, ‘Petrovitch’, ‘Nikolaev’,
10
–>’1970-01-22’, ‘Nevsky prospect 11, flat 54’, ‘2004-02-25’, 1);
mysql>INSERT INTO drivers (name, second_name, family_name, birth,
–>address, startdate)
–>VALUES (‘Fedor’, ‘Sergeevitch’, ‘Sentsov’,
–>’1960-11-02’, ‘Moskovsky prospect 92, flat 112’, ‘2003-12-30’);
mysql>INSERT INTO timetable VALUES (‘2008-11-25’, 3,1,1),
–>(‘2008-11-30’, 2,2,2), (‘2008-12-01’, 2,2,3);
Последняя запись делается обычно диспетчером автопарка каждый день утром. Для того чтобы упростить его работу, можно использовать встроенную в MySQL функцию curdate(), которая возвращает текущую дату в требуемом формате:
mysql> INSERT INTO timetable VALUES (curdate(), 2,2,4);
Если вы попытаетесь оставить пустыми поля, отмеченные not
null и не имеющие значения по умолчанию, то сервер MySQL выдаст сообщение об ошибке и не выполнит команду.
Кроме того, сервер MySQL 5 проверяет связи между таблицами
при вводе записей, т. е. в поле, являющееся внешним ключом, нельзя ввести значение, отсутствующее в связанной таблице.
3. Запросы к базе данных
На языке баз данных команды, адресованные базе, называются инструкциями либо запросами. Результаты выполнения запроса
обычно выводятся на экран.
В запросах часто используется команда select, которая позволяет извлечь нужную информацию из одной или нескольких таблиц.
Для диалога с сервером баз данных запустим клиентскую программу MySQL Command Line Client, а затем подадим команду выбора базы данных:
mysql>USE taxi
Далее запросим данные о модели и цвете автомобилей автопарка:
mysql>SELECT model, color FROM cars;
Результат запроса представлен далее:
11
SELECT – ключевое слово, которое сообщает серверу баз данных
о запросе, на извлечение сведений;
model, color – список столбцов, которые выбирают из таблицы и
помещают в результирующую выборку в памяти;
FROM – ключевое слово, за которым следует список таблиц, в которых содержится извлекаемая информация.
Если данных в таблице немного, то можно запросить их все:
mysql>SELECT * FROM table_name;
Здесь символ «звездочка» означает, что значения следует выбрать из всех столбцов. Однако чаще запрашивают значения отдельных полей, поскольку обработка такого запроса требует меньших
ресурсов.
Например, запросим все данные из таблицы cars:
Выясним, какие водители работали в период, когда велся учет с
помощью базы. Нам требуется только список водителей из таблицы
timetable без повторов.
distinct – параметр в запросе select, дающий возможность
исключить повторяющиеся данные из результатов запроса:
mysql>SELECT DISTINCT driver_number FROM timetable;
Результат запроса будет таким:
12
Он действительно не содержит повторений, но не нагляден – указаны номера, но отсутствуют фамилии водителей. Фамилии находятся в другой таблице. Как выбрать данные из двух и более таблиц,
узнаем, рассмотрев способы их объединения.
4. Утилиты MySQL
Интерфейс MySQL Command line client, с которым мы работали в
предыдущем разделе, удобен, но не позволяет использовать функциональность утилиты mysql полностью. Кроме того, в состав MySQL
входит еще ряд полезных утилит, с одной из которых (mysqldump)
необходимо познакомиться даже начинающим.
4.1. Утилита командной строки mysql
Утилита mysql может работать в двух режимах: интерактивном
и пакетном. Клиентская утилита mysql запускается в интерактивном режиме в DOS-окне, когда в меню выбирается пункт Command
Line Client. До MySQL 5 в комплекте поставки сервера не было такой возможности запуска mysql, и приходилось заходить следующим способом: щелкаем по кнопке Пуск, выбираем пункт меню Выполнить и в появившемся окне Запуск программы набираем cmd.
Появляется DOS-окно со строкой, содержащей имя текущего каталога, – это приглашение ввести команду.
Утилиты предназначены для работы с сервером и при запуске
потребуют указать имя пользователя, под которым мы хотим подключиться к серверу, и пароль. При конфигурировании сервера
MySQL мы указали пароль для суперпользователя root, теперь пора
воспользоваться им снова. Обычно для получения доступа к серверу MySQL необходимо сообщить клиентской программе имя хоста,
с которым вы хотите соединиться. Например, утилиту mysql можно
запустить следующим образом:
> mysql –h host_name –u user_name –pyour_pas
13
Здесь ключ –h указывает на то, что дальше последует имя хоста,
к которому мы хотим подключиться. По умолчанию осуществляется подключение к серверу localhost. Ключ –u означает, что за ним
следует имя пользователя, осуществляющего соединение, а после
ключа –p указывается пароль. Обратите внимание на то, что пробела перед паролем нет.
Формат вызова утилиты mysql в нашем случае будет таким:
> mysql –u root -p
После ключа –p не указан пароль. Мы знаем, что он нужен, но не
хотим вводить его сразу, а дождемся приглашения (нажмем Enter) и
введем его так, чтобы информация осталась конфиденциальной (набираемый пароль отображается на экране звездочками). После ввода пароля мы должны увидеть приветствие и приглашение командной строки уже самой утилиты mysql:
Завершение сеанса работы происходит по команде mysql>quit.
Существует возможность повтора ранее поданных команд: щелчками по кнопкам со стрелками вверх и вниз.
Для работы с утилитой в пакетном режиме следует написать
сценарий, состоящий из последовательности команд SQL, которые
предстоит исполнить для создания базы и таблиц, входящих в базу. Сценарии принято хранить в файлах с расширением sql. При исправлении ошибок в сценарии вы запускаете его несколько раз, но
уже при повторном запуске получаете сообщение о том, что нельзя
создать уже существующую таблицу. Значит, следует предварять
создание таблицы командой:
mysql> DROP TABLE IF EXISTS table_name;
Тогда сценарий создания и заполнения таблицы cars будет выглядеть так:
use taxi;
DROP TABLE IF EXISTS cars;
CREATE TABLE cars (
14
model CHAR(50) NON NULL,
madein YEAR(4) NOT NULL,
reg_number CHAR(12) NOT NULL,
color CHAR(15) NOT NULL,
id SMALLINT AUTO_INCREMENT,
PRIMARY KEY(id)
);
INSERT INTO cars VALUES
(‘Volga’, ‘2003’, ‘A786YC78’, ‘white’, ‘1’) ,
(‘Volga’, ‘2002‘, ‘A788YC78’, ‘yellow’, ‘2’) ,
(Volkswagen’, ‘2003’, ‘A789YC78’, ‘red’, ’3’);
Скрипт создается в любом текстовом редакторе. После завершения написания скрипта его можно воспроизвести в сервере MySQL
следующим образом:
>mysql –u root –p < c:\temp\taxi.sql
Не забудьте указать путь к вашему скрипт-файлу, как показано
в примере.
Здесь taxi.sql – созданный скрипт-файл.
4.2. Утилита mysqldump
Утилита mysqldump позволяет получить дамп (моментальный
снимок) содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL-сервер
баз данных. Дамп будет содержать набор команд SQL для создания
и заполнения таблиц. Для создания дампа подается команда
mysqldump –u root –p taxi > c:\temp\script.sql
Здесь script.sql – название файла, в котором содержатся все SQLинструкции созданной базы данных. В данном примере файл сохранен в папке temp на диске C.
Дамп базы данных taxi:
15
16
5. Запросы с указанием критерия отбора данных
Таблицы могут оказаться очень большими, нас же могут интересовать только определенные строки, SQL, в свою очередь, дает возможность устанавливать критерии для отбора нужных строк. Предложение where позволяет определить критерий отбора строк. Операции, используемые в предложении where, приводятся ниже:
Оператор
=
>
Название
оператора
Описание оператора
Равно
Больше
Проверяется равенство двух значений
Проверяется, что левое значение больше правого
<
Меньше
Проверяется, что левое значение меньше правого
>=
Больше или
Проверяется, что левое значение не
равно
меньше правого
<=
Меньше или
Проверяется, что левое значение не
равно
больше правого
! = или <> Не равно
Проверяется, что два значения не
равны
IS NOT NULL
Проверяется, что в поле записано значение
IS NULL
Проверяется, что в поле отсутствует
значение
BETWEEN Величина между Проверяется, что значение принадлежит указанному диапазону
IN
Значение
Проверяется, что значение содержится
содержится
в указанном множестве
NOT IN
Значение
Проверяется, что значение не содерне содержится
жится в указанном множестве
LIKE
Соответствие
Проверяется соответствие значения
образцу
NOT LIKE Несоответствие Проверяется несоответствие значения
образцу
Далее рассмотрено несколько примеров использования предложения WHERE .
Узнаем, какого цвета имеются автомобили «Волга»:
SELECT color FROM cars WHERE model = ‘ Volga’;
17
Узнаем, какого числа выходил на работу водитель с учетным
номером 1:
mysql>SELECT use_on FROM timetable WHERE driver_number = 1;
Определим номера всех автомобилей «Волга» желтого цвета:
mysql> SELECT reg_number FROM cars
–> WHERE model = ‘Volga’ AND color = ‘yellow’;
Оператор in определяет принадлежность значения поля заданному множеству значений. Например, чтобы определить номерные
знаки автомобилей «Волга» и «Volkswagen», подайте команду
mysql> SELECT reg__number FROM cars WHERE model
IN (‘Volga’, ‘Volkswagen’);
Оператор between задает границы, в которые должно попасть
значение, чтобы условие запроса выполнялось. За словом BETWEEN
пишутся начальное значение, затем ключевое слово and и конечное значение. Например, выясним, кто из водителей устроился на
работу с 1 января 2001 г. по 1 января 2004 г.:
mysql> SELECT family_name FROM drivers
-> WHERE startdate BETWEEN ‘2001-01-01’ AND ‘2004-01-01’;
18
Оператор LIKE использует простой механизм соответствия . Образец может состоять из обычного текста и знака процента (%) для указания совпадения с произвольной текстовой строкой. В MySQL соответствия не чувствительны к регистру. Например, шаблон ‘ Fed%’ соответствует любой строке, которая начинается с ‘ Fed’ или ‘fed’:
mysql>SELECT * FROM drivers WHERE name LIKE ‘Fed%;
6. Группировка данных и агрегатные функции
Группировка и агрегирование данных выполняются с помощью
функций, определенных в MySQL. Опишем некоторые из них:
AVG (столбец) – среднее значение в указанном столбце;
COUNT (столбец) – число ненулевых значений в указанном
столбце. Если перед именем столбца указать DISTINCT , то выдается только число неодинаковых значений;
MIN (столбец) – минимальное значение в столбце;
MAX (столбец) – максимальное значение в столбце;
SUM (столбец) – сумма значений в столбце.
Агрегатные функции можно использовать в запросе SELECT
в качестве информации для вывода. Например, чтобы определить
число водителей в автопарке, можно подать запрос
mysql>SELECT COUNT (id) FROM drivers;
19
Для того чтобы узнать, сколько водителей работало в отчетный
период, следует подать команду
mysql>SELECT COUNT (DISTINCT driver_number) FROM timetable;
Функция COUNT(*) определит число строк в таблице. Однако если указать COUNT(field) – установить число значений в поле field, –
то значения NULL в этом поле учтены не будут.
Предложение GROUP BY позволяет группировать записи, вошедшие в результаты запроса. Это дает возможность объединять поля и
агрегатные функции в одном предложении SELECT.
Определим, сколько автомобилей имеется в таксопарке, сгруппировав данные по моделям:
mysql>SELECT model, COUNT(model) FROM cars GROUP by model;
Каждая группа состоит из строк с одинаковым значением поля
model. Результат этого запроса представлен ниже:
Таблицы – это неупорядоченные наборы данных, и выборку из
них можно получить не обязательно в какой-то определенной последовательности. Для изменения порядка вывода результирующих
данных используется конструкция ORDER BY.
Упорядочим сведения о водителях по дате рождения:
mysql>SELECT * FROM drivers ORDER BY birth;
20
В полученной выборке список откроют старшие водители. Если
требуется упорядочить данные по убыванию, следует использовать
ключевое слово DESC (от англ. descending – по убыванию):
mysql>SELECT * FROM drivers ORDER BY birth DESC;
Конструкция LIMIT служит для указания, сколько строк результата следует отображать. Если требуется найти двух самых пожилых водителей, то можно применить команду
mysql>SELECT * FROM drivers ORDER BY birth LIMIT 2;
Можно также использовать два параметра: номер строки, с которой следует начать, и число строк.
mysql>SELECT family_name From drivers LIMIT 2, 3;
Последний запрос можно интерпретировать так: «Выбрать фамилии водителей и отобразить три строки, начиная со строки 2».
Нумерация строк начинается с нуля.
7. Запросы к двум и более таблицам
Рассмотрим запрос, при котором необходимо выбрать данные из
нескольких таблиц. Например, требуется узнать фамилию водителя, который позавчера водил синюю машину. Для получения ответа необходимо извлечь сведения из трех таблиц. Поэтому придется
оперировать именами столбцов из разных таблиц. Следует учесть,
что полное имя столбца состоит из имени базы данных, имени таблицы и собственно имени столбца, например, taxi. cars. color.
Часто имена таблиц заменяют короткими псевдонимами (alias),
указывая их в запросе после ключевого слова from. Псевдонимы
для таблиц являются стандартной частью языка SQL и обычно состоят из одной буквы. Задать псевдоним можно с помощью ключевого слова as:
mysql> SELECT color FROM cars AS c;
Псевдонимы удобно использовать в случае, когда имя результирующего столбца слишком длинное или выводятся данные из двух
таблиц, в которых имеются одноименные столбцы.
Между таблицами существуют связи по определенным столбцам. Столбец cars.id связывает таблицу cars с таблицей timetable через столбец timetable.car_number. Аналогично строится связь между таблицами drivers и timetable.
21
Объединение осуществляется по столбцам, образующим связь.
При этом выбираются одинаковые значения полей, по которым реализуется связь между таблицами:
timetable. car_number=cars. id
и
timetable. driver_number=drivers. id
Установим дату (данные из столбца timetable.use_on) и фамилию
водителя (drivers.famiiy_name), который работал на машине определенного цвета (cars .color):
mysql> SELECT t.use_on, d.family_name, c.color
-> FROM timetable AS t, cars AS c, drivers AS d
-> WHERE t.car_number=c.id AND t.driver_number=d.id;
Выборка данных составлена по данным таблиц timetable, cars
и drivers, для которых определены псевдонимы, сокращающие запись запроса и облегчающие его редактирование. Выбираются только те строки из таблиц timetable и cars, в которых указан одинаковый учетный номер автомобиля. А из таблиц timetable и drivers – те
строки, в которых значения учетного номера водителя одинаковы.
8. Команды обновления и удаления
данных в таблицах
Если необходимо изменить значение поля, то используется команда update. В команде следует указать имя таблицы и использовать предложение set, определяющее требуемое изменение. Например, исправим дату выпуска автомобиля»“Renault»:
mysql>UPDATE cars SET madein=’2004’ WHERE model=’Renault’;
22
Можно изменить значения поля во всем столбце, например, при
переоценке товаров. Увеличим цены на все товары на 10 % с учетом
инфляции:
mysql>UPDATE goods SET price = price * 1.1;
Удалить целые строки из таблицы можно с помощью команды
delete. Удалим некоторые строки из таблицы cars в связи с продажей старых машин, изготовленных до 2006 г.:
mysql>DELETE FROM cars where madein<=2005;
Из нее можно удалить все записи командой
mysql>DELETE FROM cars;
При этом счетчик автомобилей в столбце id не сбрасывается, и
при вставке новых данных MySQL автоматически присваивает новой записи следующий номер.
Для того чтобы очистить таблицу и одновременно сбросить счетчик, необходимо воспользоваться командой
mysql>TRUNCATE cars;
Удалить таблицу можно командой drop table:
mysql>DROP TABLE timetable;
При этом необходимо иметь право на удаление, а также учитывать, что удалить таблицу, имеющую первичный ключ, по которому
осуществляется связь с другой таблицей, MySQL не позволит, пока
не удалена таблица с соответствующим внешним ключом. Удалить
можно и всю базу целиком командой
mysql>DROP DATABASE taxi;
9. Изменение структуры таблицы
Оператор alter table используется для изменения структуры
таблицы. Преобразования, осуществляемые с помощью этого оператора, приводятся ниже:
Синтаксис
Описание
ADD [COLUMN] column_
Добавить новый столбец в указанdescription [FIRST | AFTER column] ное место
ADD INDEX [index] (column, . . .)
Добавить индекс в указанный столбец (столбцы) таблицы
ADD PRIMARY KEY (column, . . .) Сделать указанный столбец (столбцы) первичным ключом таблицы
23
Окончание
Синтаксис
Описание
ALTER [COLUMN] column {SET
Добавить или удалить значение
DEFAULT value | DROP DEFAULT} по умолчанию для определенного
столбца
CHANGE [COLUMN] column new_ Изменить столбец с именем column
column_description
так, чтобы он получил указанное
описание. (Это можно использовать
для изменения имени столбца, поскольку column_description включает в себя имя.)
MODIFY [COLUMN] column_
Аналогично CHANGE. Используетdescription
ся для изменения типов столбцов,
но не имен
DROP [COLUMN] column
Удалить указанный столбец
DROP PRIMARY KEY
Удалить первичный индекс (не
столбец)
DROP INDEX index
Удалить указанный индекс
RENAME table tbl to new_tbl
Переименовать таблицу
Допустим, что вы решили внести в базу номер телефона водителей, чтобы легче было связаться с ними. Добавим новый столбец в
таблицу командой alter table:
mysql> ALTER TABLE drivers ADD COLUMN phone_number BIGINT;
В данном примере столбец добавляется в конец таблицы, но
вместо этого достаточно было бы воспользоваться ключевым словом first, тогда столбец стал бы первым, а можно указать after
birth, поместив его тем самым после столбца birth.
Допустим, вы обнаружили, что в поле для указания адреса вводимые данные не помещаются, так как адрес длиннее 150 выделенных
для него символов. В этом случае изменяем определение столбца:
mysql> ALTER TABLE drivers MODIFY address char(200);
10. Создание индексов
Таблицы в базе данных могут иметь большое число строк, которые хранятся в произвольном порядке, и их поиск по заданному зна24
чению путем последовательного просмотра строка за строкой может
занимать много времени. Индекс формируется из значений одного
или нескольких столбцов таблицы и указателей соответствующих
ее строк, что позволяет находить нужную строку по заданному значению в соответствующем столбце (столбцах).
Для ускорения выполнения запросов индексы обычно создаются
в тех столбцах таблицы, которые часто используются в запросах.
Для одной таблицы может быть создано несколько индексов.
Когда столбец помечается как ключ, создается индекс. Индекс
хранит список значений ключа и указатели на записи, содержащие
эти значения. При создании индекса таблица уже должна содержать столбцы, по которым создается индекс.
В базе таксопарка в таблице cars первичным ключом является
учетный номер машины. Запросы же к базе могут быть основаны
на поиске по государственному регистрационному номеру. Для того
чтобы повысить скорость выполнения таких запросов, следует создать индекс по столбцу reg_number, в котором записан регистрационный номер автомобиля:
mysql>CREATE INDEX nomer ON cars(reg_number);
При создании индекса на сервере формируется упорядоченный
список значений этого поля, который MySQL использует при выполнении запросов. Если для создания индекса используется несколько полей, то значения второго поля упорядочиваются внутри одинаковых значений первого, третьего – внутри одинаковых значений
второго и т. д.
Имя индекса в базе данных должно быть уникальным. После
создания индекса MySQL использует его для поиска данных автоматически, т. е. в запросах не требуется указывать этот индекс какимлибо образом.
11. Вложенные запросы
Вложенный запрос создает результирующую таблицу, данные
которой используются внешним запросом. Вложенный запрос помещается в скобках после выражения WHERE.
25
Создадим вложенный запрос, чтобы выяснить, на каком автомобиле работал определенный водитель 25 ноября 2008 г.:
mysql> SELECT model, reg_number FROM cars
–> WHERE id = ( SELECT car_number
–>FROM timetable
–>WHERE date = ‘2008-11-25’ AND driver_number=1);
Сначала выполняется команда SELECT внутри скобок. MyQSL
получает результат вложенного запроса и использует его в выражении WHERE во внешнем запросе SELECT. При этом результаты внутреннего запроса не отображаются. Конструкция запроса
в приведенном примере подразумевает, что результат внутреннего
запроса должен представлять собой единственное значение. В противном случае в результате выполнения этого запроса появится сообщение об ошибке: «Error 1241: Subquery returns more than 1 row».
Вложенные запросы могут содержать команды SELECT, INSERT и
UPDATE, а также SET.
11.1. Табличные вложенные запросы
В случае, когда результатом вложенного запроса является не одно значение, а таблица, синтаксис запроса изменяется.
Например, определим, на каких автомобилях работали водители 25 и 30 ноября 2008 г.:
SELECT model, reg_number
FROM cars
WHERE id IN
(
(SELECT car_number FROM timetable
WHERE use_on = ‘2008-11-25’),
(SELECT car_number FROM timetable
WHERE use_on = ‘2008-11-30’)
);
26
Внешний запрос выбирает модель и регистрационный номер
тех автомобилей, учетные номера которых содержатся в таблице
timetable в записях, относящихся к указанным датам. Перечень
условий для выражения IN пишется через запятую и помещается
во внешние скобки. Сначала выполняются вложенные запросы, результаты которых формируют набор значений для выражения IN.
12. Привилегии в MySQL
При подключении к серверу MySQL пользователь указывает имя
и пароль, а сервер проверяет, имеет ли клиент право получить доступ к нему, и в случае подтверждения наделяет пользователя соответствующими привилегиями. Данные о привилегиях пользователей хранятся в системной базе mysql.
Проверка пользователя осуществляется по трем полям таблицы
user (host, user и password) базы mysql. Сервер устанавливает соединение только в том случае, если находит в таблице user запись, в которой
имя пользователя и пароль совпадают с введенными значениями.
Посмотреть, в каком виде хранятся пароли в таблице user, можно с помощью следующих команд:
mysql>USE mysql
mysql>SELECT password FROM user;
27
Ознакомиться со всеми таблицами базы mysql можно, подав команду
mysql>show tables;
После установления соединения сервер начинает сеанс работы
с пользователем. По каждому поступающему запросу сервер проверяет, имеется ли у пользователя достаточно привилегий для выполнения запроса. Информация о привилегиях находится в таблицах user, db, host, tables_priv или columns_priv. Список привилегий
представлен ниже:
Привилегия
К чему применяется
ALTER
DELETE
INDEX
INSERT
SELECT
UPDATE
CREATE
DROP
GRANT
SHOW DATABASES
SHUTDOWN
Таблицы
Таблицы
Таблицы
Таблицы
Таблицы
Таблицы
Базы данных, таблицы или индексы
Базы данных или таблицы
Базы данных или таблицы
Администрирование сервера
Администрирование сервера
Сервер MySQL считывает содержимое этих таблиц во время запуска и в случаях, когда изменения в привилегиях вступают в силу.
Привилегии SELECT, INSERT, UPDATE И DELETE позволяют
выполнять операции над строками таблиц баз данных. Привилегия
28
index обеспечивает создание или уничтожение индексов. Привилегия alter позволяет использовать команду alter table. Привилегии create и drop позволяют создавать новые или уничтожать существующие базы данных и таблицы. Привилегия GRANT
gram позволяет предоставлять другим пользователям привилегии, которыми обладаете вы сами.
Остальные привилегии используются для администрирования
SQL-сервера. Команда shutdown завершает работу сервера.
При запуске сервера MySQL все сведения о привилегиях пользователей загружаются в память, и с этого момента они вступают в силу.
Команды grant и revoke позволяют системным администраторам создавать пользователей MySQL, а также предоставлять права пользователям или лишать их прав на четырех уровнях:
• глобальный уровень. Глобальные привилегии применяются ко
всем базам данных на указанном сервере. Эти привилегии хранятся
в таблице mysql.user;
• уровень базы данных. Привилегии базы данных применяются
ко всем таблицам указанной базы данных. Эти привилегии хранятся в таблицах mysql .db и mysql .host;
• уровень таблицы. Привилегии таблицы применяются ко всем
ее столбцам. Они хранятся в таблице mysql. tables_priv;
• уровень столбца. Привилегии столбца применяются к отдельным столбцам указанной таблицы. Эти привилегии хранятся в таблице mysql .columns_priv.
Команда grant позволяет добавлять новых пользователей сервера:
mysql> GRANT SELECT, INSERT ON taxi.* TO Mike@localhost
IDENTIFIED BY ‘secret’;
Эта команда дает права insert и select на базу taxi (на все
таблицы, что задается символом «звездочка») пользователю Mike,
который подключается локально (localhost), причем при подключении к серверу пользователь должен указать пароль ‘secret’. Пароль
хранится на сервере в зашифрованном виде:
mysql> GRANT ALL PRIVILEGES ON *.* TO Ann@”%”
–>IDENTIFIED BY ‘some_pass’ WITH GRANT OPTION;
29
Здесь Anna получает все права (all privileges) на все таблицы всех баз сервера (* . *), причем подключаться она может как локально, так и удаленно через сеть (это указано символом % после
Anna@). Вдобавок Anna может передавать свои права другим пользователям (with grant option), т. е. сама может подавать команду grant и создавать новых пользователей системы.
mysql> GRANT USAGE ON *.* TO dummy@localhost
IDENTIFIED BY ‘password’;
Пользователь dummy, созданный в этом примере, может подсоединяться к серверу, но только с локального компьютера. Привилегия USAGE означает, что у пользователя отсутствуют все другие
привилегии. Такое может потребоваться, когда человек принят на
работу, но обязанности его еще не определены. Предполагается, что
относящиеся к базам данных привилегии будут назначены позже.
Не удастся, однако, создать пользователя с пустым паролем – система не позволяет этого из соображений безопасности.
Команда REVOKE позволяет администратору лишать пользователей прав:
REVOKE SELECT (use_on) ON taxi.timetable FROM Ann@ localhost;
Пользователь Annа не может просматривать значения поля use_
on в таблице timetable.
Команда set может устанавливать различные опции, влияющие на работу сервера или клиента. Пароль для пользователя root
также можно задать с помощью этой команды:
mysql> SET PASSWORD FOR root@localhost=PASSWORD(‘new_password’);
Пользователи могут работать и непосредственно с таблицами назначения привилегий:
mysql> USE mysql;
Mysql> UPDATE user SET Password=PASSWORD(‘new_password’)
-> WHERE user=’root’;
После этого следует подать команду, заставляющую сервер перечитать таблицы привилегий, и тогда они вступят в силу:
mysql> FLUSH PRIVILEGES;
Если пароль задается с помощью оператора grant...identified
by, нет необходимости использовать функцию password (). Эта
30
команда самостоятельно производит шифрацию пароля, поэтому пароль следует указывать в простом текстовом виде, например,
так:
mysql> GRANT USAGE ON *.* TO jeffrey@”%” IDENTIFIED BY ‘biscuit’;
Изменения, которые вносятся в таблицы назначения привилегий
с помощью команд grant, revoke или set password, учитываются сервером сразу после выполнения этих инструкций.
13. Транзакции
В реляционных базах данных защита их целостности реализована через механизмы транзакций и блокировки таблиц.
Транзакция – группа операций, которая может быть выполнена
либо полностью успешно, с обеспечением целостности данных и независимо от параллельно выполняющихся других транзакций, либо не выполнена вообще, и тогда она не должна произвести вообще
никакого эффекта. Транзакция похожа на беспосадочный перелет
через океан, поскольку не может быть выполнена наполовину. Если
ситуация такова, что до конечного пункта не долететь, то поворачивают назад. Сервер изолирует одновременные потоки друг от друга,
ограничивая их доступ к модифицируемым данным. Сервер пытается выполнять транзакции так, будто они происходят последовательно, а не параллельно.
В конце транзакции происходит либо ее отмена, либо подтверждение. Отмена транзакции называется откатом (rollback). Подтверждение транзакции называется фиксацией (commit). Фиксация
транзакции регистрируется в специальных журнальных файлах,
информация из которых считывается при сбоях в работе компьютера и используется для восстановления состояния базы данных до
них.
В MySQL можно создавать базы данных на основе таблиц нескольких типов. Транзакции применимы лишь к некоторым типам
таблиц.
В MySQL 3 по умолчанию создаются таблицы типа MYISAM, в
которых обеспечение целостности данных при одновременных запросах в случае необходимости происходит вследствие блокировки
таблиц целиком.
В MySQL 5 по умолчанию создаются таблицы типа InnoDB (при
работе в Windows), в которых реализован механизм транзакций.
31
Для того чтобы создать таблицу типа InnoDB, можно указать
ENGINE = InnoDB или TYPE = InnoDB в SQL-запросе на создание
таблицы:
mysql>CREATE TABLE customers (a INT, b CHAR (20), INDEX (a))
->ENGINE=InnoDB;
mysql>CREATE TABLE customers (a INT, b CHAR (20), INDEX (a))
->TYPE=InnoDB;
По умолчанию каждый клиент соединяется с сервером MySQL
в режиме autocommit, в котором автоматически фиксируется каждый одиночный SQL-запрос клиента. Для использования транзакций, состоящих из нескольких запросов, требуется подать команду
mysql>SET AUTOCOMMIT = 0;
а затем использовать команды COMMIT или ROLLBACK для фиксации или отмены транзакции. Два следующих примера демонстрируют фиксацию и отмену транзакций:
Вставка данных о Париже прошла успешно, в этом можно убедиться, запросив выборку из таблицы до отката. Однако в результате отката эти данные не были зафиксированы в базе и сохранены,
что и подтверждает последняя выборка, т. е. мы можем посмотреть,
какой эффект произведет то или иное действие, а потом отменить
его – произвести откат.
32
Приложение
Краткие справочные сведения по MySQL
AUTO_INCREMENT – атрибут, используемый для создания поля с уникальными значениями. В каждой таблице может быть не
больше одного такого поля.
CREATE DATABASE name (name – имя создаваемой базы) – создание базы данных.
CREATE TABLE name – команда для создания таблиц. Указывается не только название создаваемой таблицы, но и приводится
ее полное определение, состоящее из определений отдельных полей
(name – имя создаваемой таблицы).
DEFAULT – после этого ключевого слова указывается значение
по умолчанию для данного поля.
DELETE – команда удаления записей из таблицы. DELETE
FROM table_name; (table_name – имя таблицы).
DESCRIBE table_name – команда просмотра структуры таблицы
(table_name – имя таблицы).
DISTINCT – параметр в запросе SELECT, дающий возможность
исключить повторяющиеся данные из результатов запроса.
FOREIGN KEY – внешний ключ. Назначение этого ключа – проверять соответствие значений в столбцах родительского и внешнего ключей. Необходимо, чтобы перед созданием внешних ключей на
этих столбцах были созданы индексы. Индекс (INDEX) формируется из значений одного или нескольких столбцов таблицы и позволяет ускорить поиск нужной строки по заданному значению. Для
ускорения запросов индексы обычно создаются в тех столбцах таблицы, которые часто используются в запросах.
FROM – ключевое слово, которое должно присутствовать в каждом запросе – выборка. За ним следуют имена таблиц, используемых в качестве источника информации.
GRANT – команда, позволяющая создавать пользователей сервера, а также предоставлять права пользователям.
INSERT – оператор, предназначенный для внесения данных в таблицы.
Два способа ввода данных:
1) внесение данных во все поля таблицы.
INSERT INTO table_name VALUES (‘’, ‘’, ‘’…)
Каждое значение стоит в кавычках (‘’);
33
2) добавление данных только в избранные поля, при этом необходимо указать имена полей в явном виде.
INSERT INTO table_name (имя поля 1,…,…)VALUES (‘’, ‘’, ‘’…)
NOT NULL – атрибут, означающий, что все строки таблицы
должны иметь значение в этом столбце. Если этот атрибут не указан, то поле может содержать пустое значение (NULL).
ORDER BY – конструкция, используемая для сортировки полей
результата. ORDER BY name_pole DESC – сортировка по убыванию
значений в указанном поле. LIMIT – служит для указания, сколько
строк результата следует отображать.
REVOKE – команда, позволяющая лишать пользователя привилегий.
SELECT – ключевое слово в запросе на извлечение данных.
SHOW TABLES – команда просмотра списка таблиц в базе.
UPDATE – команда изменения значений поля. UPDATE имя_таблицы SET имя_поля = ‘новое_значение’ WHERE имя_поля = ‘старое значение’.
USE database_name – команда, с помощью которой выполняется
выбор базы данных для выполнения дальнейших действий над ней
(database_name – имя базы данных).
WHERE – предложение, позволяющее задать критерий отбора
строк.
Знаки операций сравнения для конструкции WHERE:
Оператор
Название оператора
Описание оператора
Проверяется равенство двух значе=
Равно
ний
Проверяется, что левое значение
>
Больше
больше правого
Проверяется, что левое значение
<
Меньше
меньше правого
Проверяется, что левое значение
>=
Больше или равно
не меньше правого
Меньше или
Проверяется, что левое значение
<=
равно
не больше правого
Проверяется неравенство двух зна! = или <>
Не равно
чений
Проверяется наличие значения
IS NOT NULL
в поле
Проверяется отсутствие значения
IS NULL
в поле
34
Окончание
Оператор
BETWEEN
IN
NOT IN
Название оператора
Величина между
Значение содержится
Значение не содержится
LIKE
Соответствие
NOT LIKE
Несоответствие
REGEXP
Регулярное выражение
Описание оператора
Проверяется, попадание значения
в заданный диапазон
Проверяется попадание значения
в заданное множество
Проверяется отсутствие значения
в заданном множестве
Проверяется соответствие значения
образцу
Проверяется несоответствие значения образцу
Проверяется соответствие значения
регулярному выражению
Агрегатные функции
AVG (имя_поля) – выдает среднее значение в указанном столбце.
COUNT (имя_поля) – при указании столбца выдает число ненулевых значений в этом столбце. Если перед именем столбца указать
DISTINCT, то выдается только число различных значений.
COUNT(*) – выдает число строк в таблице, но если указать
COUNT(name_pole) – определить число значений в заданном поле, в
котором имеются значения NULL, – то пустые значения учтены не
будут (Name_pole – имя поля).
MAX (имя_поля) – максимальное значение в столбце.
MIN (имя_поля) – минимальное значение в столбце.
SUM (имя_поля) – сумма значений в столбце.
Список литературы
1. Бенкен, Е. С. PHP, MySQL, XML: программирование для Интернета. 2-е изд. перераб. и доп. СПб.: БВХ-Петербург, 2008. 352 с.:
ил. + CD-ROM/
2. Кузнецов, М. В. MySQL на примерах / М. В. Кузнецов, И. В. Симдянов. СПб.: БВХ-Петербург, 2007. 592 с.: ил. +CD-ROM.
3. Сайт www.mysql.ru.
35
Содержание
Введение..................................................................... 1. Типы данных MySQL................................................. 1.1. Числовые типы данных....................................... 1.2. Текстовые типы данных...................................... 1.3. Типы даты и времени.......................................... 2. Создание базы данных taxi......................................... 2.1. Запись данных в таблицы.................................... 3. Запросы к базе данных.............................................. 4. Утилиты MySQL....................................................... 4.1. Утилита командной строки mysql......................... 4.2. Утилита mysqldump............................................ 5. Запросы с указанием критерия отбора данных.............. 6. Группировка данных и агрегатные функции. ............... 7. Запросы к двум и более таблицам................................ 8. Команды обновления и удаления данных в таблицах..... 9. Изменение структуры таблицы................................... 10. Создание индексов.................................................. 11. Вложенные запросы................................................ 11.1. Табличные вложенные запросы.......................... 12. Привилегии в MySQL............................................... 13. Транзакции............................................................ Приложение. Краткие справочные сведения по MySQL..... Список литературы...................................................... 36
3
4
4
4
5
6
10
11
13
13
15
17
19
21
22
23
24
25
26
27
31
33
35
Документ
Категория
Без категории
Просмотров
0
Размер файла
3 134 Кб
Теги
evseevleonovaschetkina2
1/--страниц
Пожаловаться на содержимое документа