Описание таблицы в sql включает. Удаление базы данных. Как работать с базой

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

Основные понятия

Сущности - предметы или факты, информацию о которых необходимо хранить. Например, сотрудник фирмы или проекты, реализуемые предприятием. Атрибуты - составляющая, которая описывает или квалифицирует сущность. Например, атрибут сущности «работник» - заработная плата, а атрибут сущности «проект» - сметная стоимость. Связи - ассоциации между двумя элементами. Она может быть двунаправленная. Также существует рекурсивная связь, то есть связь сущности с самой собой.

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

Переход от ER-диаграммы к табличной модели

Правила перехода к табличной модели:

  1. Преобразовать все сущности в таблицы.
  2. Преобразовать все атрибуты в столбцы, то есть каждый атрибут сущности должен быть отображен в имени столбца таблицы.
  3. Уникальные идентификаторы преобразовать в первичные ключи.
  4. Все связи преобразовать во внешние ключи.
  5. Осуществить создание таблицы SQL.

Создание базы

Сначала неоходимо запустить сервер MySQL. Для его запуска следует зайти в меню "Пуск", затем в "Программы", далее в MySQL и MySQL Server, выбрать MySQL-Command-Line-Client.

Для создания базы данных применяется команда Create Database. Данная функция имеет следующий формат:

CREATE DATABASE название_базы_данных.

Ограничения на название базы следующие:

  • длина составляет до 64 знаков и может включать буквы, цифры, символы «» и "";
  • имя может начинаться с цифры, но в нем должны присутствовать буквы.

Нужно помнить и общее правило: любой запрос или команда заканчиваются разделителем (delimiter). В SQL принято в качестве разделителя использовать точку с запятой.

Серверу необходимо указать, с какой базой данных нужно будет работать. Для этого существует оператор USE. Этот оператор имеет простой синтаксис: USE название_базы_данных.

Создание таблицы SQL

Итак, модель спроектирована, база данных создана, и серверу указано, как именно с ней нужно работать. Теперь можно начинать создавать таблицы SQL. Существует язык определения данных (DDL). Он используется для создания таблицы MS SQL, а также для определения объектов и работы с их структурой. DDL включает в себя набор команд.

SQL Server создания таблицы

Используя всего лишь одну команду DDL, можно создавать различные объекты базы, варьируя ее параметры. Для применяется команда Create Table. Формат tt выглядит следующим образом:

CREATE TADLE название_таблицы, (название_столбца1 название _столбца2 тип данных [ограничение_столбца],[ограничения_таблицы]).

Следует подробнее описать синтаксис указанной команды:

  • Название таблицы должно иметь длину до 30 символов и начинаться с буквы. Допустимы только символы алфавита, буквы, а также символы «_», «$» и «#». Разрешено использование кириллицы. Важно отметить, что имена таблиц не должны совпадать с именами других объектов и с зарезервированными словами сервера базы данных, таких как Column, Table, Index и т. д.
  • Для каждого столбца следует обязательно указать тип данных. Существует стандартный набор, используемый большинством. Например, Char, Varchar, Number, Date, тип Null и т. д.

  • С помощью параметра Default можно задать значение по умолчанию. Это гарантирует, что в таблице не будет неопределенных значений. Как это понимать? Значением по умолчанию может быть символ, выражение, функция. Важно помнить, что тип этих данных, заданных по умолчанию, должен совпадать с типом вводимых данных столбца.
  • Ограничения на каждый столбец используют для реализации обеспечения условий целостности для данных на уровне таблицы. Есть и еще нюансы. Запрещено удалять таблицу, если есть зависимые от нее другие таблицы.

Как работать с базой

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

  • SHOW DATABASES - показывает на экране все созданные базы данных SQL;
  • SHOW TABLES - выводит список всех таблиц для текущей базы данных, которые выбираются командой USE;
  • DESCRIBE название_таблицы - показывает описание всех столбцов таблицы.
  • ALTER TABLE - позволяет изменять структуру таблицы.

Последняя команда позволяет:

  • добавить в таблицу столбец или ограничение;
  • изменить существующий столбец;
  • удалить столбец или столбцы;
  • удалить ограничения целостности.

Синтаксис этой команды выглядит так: ALTER TABLE название_таблицы { | | | | [{ENABLE | DISABLE} CONSTANT имя_ограничения ] | }.

Существуют и другие команды:

  • RENAME - переименование таблицы.
  • TRUNCATE TABLE -удаляет все строки из таблицы. Эта функция может быть нужна, когда необходимо заполнить таблицу заново, а хранить предыдущие данные нет необходимости.

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

Синтаксис команды довольно простой: DROP TABLE название _таблицы.

В SQL Access создание таблиц и их изменение осуществляется теми же командами, перечисленными выше.

С помощью CREATE TABLE можно создать пустую таблицу и в дальнейшем заполнить ее данными. Но это еще не все. Также можно сразу создавать таблицу из другой таблицы. Как это? То есть существует возможность определить таблицу и заполнить ее данными другой таблицы. Для этого существует специальное ключевое слово AS.

Синтаксис очень простой:

  • CREATE TABLE название _таблицы [(определение_столбцов )] AS подзапрос;
  • определение_столбцов - имена столбцов, правила целостности для столбцов вновь создаваемой таблицы и значения по умолчанию;
  • подзапрос - возвращает такие строки, которые нужно добавить в новую таблицу.

Таким образом, такая команда создает таблицу с определенными столбцами, вставляет в нее строки, которые возвращаются в запросе.

Временные таблицы

Временные таблицы - это таблицы, данные в которых стираются в конце каждого сеанса или раньше. Они используются для записи промежуточных значений или результатов. Их можно применять в качестве рабочих таблиц. Определять временные можно в любом сеансе, а пользоваться их данными можно только в текущем сеансе. Создание временных таблиц SQL происходит аналогично обычным, с использованием команды CREATE TABLE. Для того чтобы показать системе, что таблица временная, нужно использовать параметр GLOBAL TEMPORARY.

Предложение ON COMMIT устанавливает время жизни данных в такой таблице и может выполнять следующие действия:

  • DELETE ROWS -очистить временную таблицу (удалить все данные сеанса) после каждого завершения транзакции. Обычно это значение используется по умолчанию.
  • PRESERVE ROWS -оставить данные для использования их в следующей транзакции. Помимо этого, можно очистить таблицу только после завершения сеанса. Но есть особенности. Если произошел откат транзакции (ROLLBACK), таблица будет возвращена к состоянию на конец предыдущей транзакции.

Синтаксис создания временной таблицы может быть представлен таким образом: CREATE TABLE название _таблицы, (название _столбца1 тип данных [ограничение_столбца], название _столбца2 тип данных [ограничение_столбца], [ограничения_таблицы]).

Итак, мы познакомились с типами данных, теперь будем усовершенствовать таблицы для нашего форума. Сначала разберем их. И начнем с таблицы 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

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


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_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,

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("да")

Т.е. это ключевое слово пишется через пробел после указания типа данных, а в скобках указывается значение по умолчанию.

Но вернемся к нашим таблицам. Теперь нам необходимо внести данные в наши таблицы. На сайтах, вы обычно вводите информацию в какие-нибудь html-формы, затем сценарий на каком-либо языке (php, java...) извлекает эти данные из формы и заносит их в БД. Делает он это посредством SQL-запроса на внесение данных в базу. Писать сценарии на php мы пока не умеем, а вот отправлять SQL-запросы на внесение данных сейчас научимся.

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

INSERT INTO имя_таблицы VALUES ("значение_первого_столбца","значение_второго_столбца", ..., "значение_последнего_столбца");


Давайте попробуем внести в нашу таблицу users следующие значения:

INSERT INTO users VALUES ("1","sergey", "[email protected]", "1111");

Второй вариант используется для внесения данных в некоторые поля таблицы:

INSERT INTO имя_таблицы ("имя_столбца", "имя_столбца") VALUES ("значение_первого_столбца","значение_второго_столбца");


В нашей таблице users все поля обязательны для заполнения, но наше первое поле имеет ключевое слово - AUTO_INCREMENT (т.е. оно заполняется автоматически), поэтому мы можем пропустить этот столбец:

INSERT INTO users (name, email, password) VALUES ("valera", "[email protected]", "2222");

Если бы у нас были поля с типом NULL, т.е. необязательные для заполнения, мы бы тоже могли их проигнорировать. А вот если попытаться оставить пустым поле со значением NOT NULL, то сервер выдаст сообщение об ошибке и не выполнит запрос. Кроме того, при внесении данных сервер проверяет связи между таблицами. Поэтому вам не удастся внести в поле, являющееся внешним ключом, значение, отсутствующее в связанной таблице. В этом вы убедитесь, внося данные в оставшиеся две таблицы.

Но прежде внесем информацию еще о нескольких пользователях. Чтобы добавить сразу несколько строк, надо просто перечислять скобки со значениями через запятую:

Теперь внесем данные во вторую таблицу - topics (темы). Все тоже самое, но надо помнить, что значения в поле id_author должны присутствовать в таблице users (пользователи):

Теперь давайте попробуем внести еще одну тему, но с id_author, которого в таблице users нет (т.к. мы внесли в таблицу users только 5 пользователей, то id=6 не существует):

Сервер выдает ошибку и говорит, что не может внести такую строку, т.к. в поле, являющемся внешним ключом, стоит значение, отсутствующее в связанной таблице users.

Теперь внесем несколько строк в таблицу posts (сообщения), помня, что в ней у нас 2 внешних ключа, т.е. id_author и id_topic, которые мы будем вносить должны присутствовать в связанных с ними таблицах:

Итак, у нас есть 3 таблицы, в которых есть данные. Встает вопрос - как посмотреть, какие данные хранятся в таблицах. Этим мы и займемся на следующем уроке.

Вступление

Продолжим изучение SQL запросов к базе данных. Сегодня, один из простых SQL запросов, SQL запрос для создания таблицы базы данных. Работает запрос на основе оператора CREATE TABLE.

Создание таблицы базы данных

Есть оператор sql, который используется для создания таблиц баз данных. Оператор: CREATE TABLE.

Вспоминаем, что реляционная таблица базы данных должна иметь уникальные:

  • Уникальное имя;
  • Столбцы (атрибуты);
  • Первичный ключ.
  • Строки (записи);

Для начала, мы создаем, только таблицу и не заполняем её данными.

По-хорошему, общий вид таблицы с уникальными именами строк и столбцов задается при создании . Мы для примера создадим простенькую таблицу БД и обойдемся без концептуальной модели.

В этой статье создадим таблицу БД с покупателями. Покупатели взяты для примера.

Чем идентифицируется покупатель? Решаем, что каждый покупатель идентифицируется следующими данными:

  • Фамилия;
  • Логин;
  • Пароль;
  • Email;
  • телефон.

Помним, что в таблице обязательно нужно задать .

Чтобы создать таблицу базы данных, используем оператор sql CREATE TABLE.

Синтаксис оператора такой:

CREATE TABLE имя таблицы (столбец 1, тип столбца (пробел) параметр столбца (пробел), столбец 2, тип столбца (пробел) параметр столбца (пробел), столбец 3, тип столбца (пробел) параметр столбца (пробел), и т.д.)

В нашем варианте, имя таблицы: clients. Даем данным покупателей обозначения столбцов:

  • Имя: пусть будет client_customer;
  • Фамилия: client_subclient;
  • Логин: client_login;
  • Пароль: client_password;
  • eMail: client_mail;
  • Телефон: client_telefon.

Думаем, какой тип данных будет храниться в этих столбцах, и выбираем типы данных CHAR(длина поля постоянно) или VARCHAR(длинна поля переменное). В нашем случае подходит тип данных VARCHAR.

Особое внимание уделяем первичному ключу. Делаем первичным ключом id покупателя. В параметрах ключа задаем, что это первичный ключ, он не может быть нулём и что для следующей записи увеличивается на единицу. Последнее свойство называется автоинкремент. Смотрим подсказку в справочнике (ссылка выше) и получаем столбец с первичным ключом:

Client_id integer not null auto_increment primary key

Пишем SQL запрос для создания таблицы базы данных

Суммируем все исходные данные и получаем такой SQL запрос:

/*Таблица пользователей clients*/ create table clients (/*client_id будет первичный ключ (обязательно целое число) с автоинкрементом (+1), который никогда не будет равен нулю*/ client_id integer not null auto_increment primary key, client_customer varchar(13), /*имя */ client_surclient varchar(22), /*фамилия */ client_login varchar(21), /*логин*/ client_passwd varchar(7), /*пароль*/ client_email varchar(44) /*email*/ client_telefon varchar(26) /*телефон*/);

Примечание: SQL запрос для создания таблицы создаем в текстовом редакторе типа Notepad++. В скобках ограничиваем длину поля, может быть от 1 до 255.

Итоги статьи

  • В этой статье мы познакомились с первым оператором SQL языка CREATE TABLE
  • Создали SQL запрос для создания одной (первой) таблицы базы данных с первичным ключом.

Создание и удаление таблиц в ms sql server

Все данные в БД sql server хранятся в таблицах.
Таблицы состоят из колонок, объединяющих значения одного типа, и строк — записей в таблице. В одной БД может быть до 2 миллиардов таблиц, в таблице — 1024 колонки, в одной строке (записи) — 8060 байтов.

sql server поддерживает следующие типы данных:

Тип данных Обозначение Размер, байт
Бинарные данные binary
varbinary[(n)] 1-8000
Символы char[(n)]
varchar[(n)] 1-8000
(до 8000 символов)
Символы unicode nchar[(n)]
nvarchar[(n)] 1-8000
(до 4000 символов)
Дата и время datetime 8
smalldatetime 4
Точные числа decimal[(p[,s])]
numeric[(p[,s])] 5-17
Приблизительные числа float[(n)] real 4-8 4
Глобальный идентификатор uniqueidentifier 16
Целые числа int smallint, tinyint 4 2, 1
Денежки money, smallmoney 8, 4
Специальные bit, cursor,
sysname, timestamp 1, 0-8
Текст и изображение text, image 0-2 Гб
Текст unicode ntext 0-2 Гб

Таблицы можно создавать с помощью оператора create table языка transact-sql, а также с помощью enterprise manager. Рассмотрим сначала как это делается с помощью transact-sql.

Содание таблиц с помощью create table
Для создания таблиц применяется оператор create table.
Вот как выглядит упрощенный синтаксис этого оператора:

create table table_name
(column_name data_type
[,…n])
Например:

create table member (member_no int not null, lastname char(50) not null, firstname char(50) not null, photo image null)

Этим оператором создается таблица member, состоящая из четырех колонок:

member_no — имеет тип int, значения null не допускаются
lastname — имеет тип char(50) — 50 символов, значения null не допускаются
firstname — аналогично lastname
photo — имеет тип image (изображение), допускается значение null
Примечание
null — специальное обозначение того, что элемент данных не имеет значения. В описании типа колонки указывается, что элементы данных могут быть неинициализированы. При указании not null — "пустые" значения не допускаются. Если при вставке записи пропустить значение для такой колонки, вставка не произойдет, и sql server сгенерирует ошибку.

Попробуйте выполнить эту команду. Запустите query analyzer. Соединитесь с Вашим сервером. Из списка БД выберите sqlstep. Скопируйте в окно команд команду создания таблицы и выполните ее. (Если не забыли, надо нажать f5 или ctrl-e).

Чтобы точно удостовериться, в том, что таблица была создана, наберите команду:

sp_help member
Выделите ее (как в обычном редакторе) и снова нажмите f5. В окно результатов будет выведена информация о таблице member.

На заметку!

sp_help — системная процедура, которая возвращает информацию об объектах БД (таблицах, хранимых процедурах и пр.).
Формат вызова таков:

sp_help <имя таблицы>

Удалить таблицу проще простого. Там же, в запросчике (так у нас называют query analyzer), наберите:

drop table member

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

Как создать таблицу с помощью sql server enterprise manager
Раскройте последовательно: sql server group, <Ваш sql server>, databases. Выберите БД (sqlstepbystep, я думаю:), нажмите правую кнопку мыши и выберите в контекстном меню пункт "new", а затем пункт "table…". Первым делом Вас спросят имя таблицы. Введите его и нажмите enter. На экране появится окно, в котором можно вводить:
имена колонок, тип, длину, размерность, точность (эти три колонки блокируются в зависимости от типа), флаг разрешения null, значение по умолчанию. Последние три колонки, пока не представляют интереса.

Введите названия колонок, их тип и длину также как в примере выше. Нажмите на иконку с дискетой для сохранения таблицы и можете закрыть окно. Раскройте вашу БД, щелкните на категории "tables" и в списке таблиц увидите только что введенную таблицу. Для ее удаления выделите ее в списке, нажмите правую кнопку мыши и в контекстном меню выберите "delete". Таблица будет удалена.

Мы изучили как создаются и удалются таблицы. Следующий наш шаг — создание полноценной БД, на примере которой мы будем изучать:

что такое реляционная целостность БД и как она обеспечивается в sql server
как модифицировать данные в таблицах (операторы insert, update, delete, select)
как использовать хранимые процедуры и триггеры

Хорошо Плохо

Лекция

Создание БД с помощью SQL .

Манипулирование данными в SQL

В состав языка SQL входят язык описания данных, позволяющий управлять таблицами, и язык манипулирования данными, служащий для управления данными (слайд 2 ).

17.1. Построение баз данных с помощью SQL

17.1.1. Команда создания таблицы – CREATE TABLE

Создание таблицы выполняется при помощи команды CREATE TABLE. Обобщенный синтаксис команды следующий (слайд 3 ).

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

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

определение_столбца – задание имени, типа данных и параметров отдельного столбца таблицы. Названия столбцов должны соответствовать правилам для идентификаторов и быть уникальными в пределах таблицы.

определение_ограничения_таблицы – задание некоторого ограничения целостности на уровне таблицы.

Описание столбцов

Как видно из синтаксиса команды CREATE TABLE, для каждого столбца указывается предложение <определение_столбца>, с помощью которого и задаются свойства столбца. Предложение имеет следующий синтаксис ( слайд 3 ) :

Рассмотрим назначение и использование параметров.

Имя_столбца – идентификатор, задающий имя столбца таблицы.

тип_данных – задает тип данных столбца. Если при определении столбца явно не указано ограничение на хранения значений NULL, то будут использованы свойства типа данных, т.е. если выбранный тип данных позволяет хранить значения NULL, то и в столбце можно будет хранить значения NULL. Если же при определении столбца в команде CREATE ТАBLE явно будет разрешено или запрещено хранение значений NULL, то свойства типа данных будут перекрыты установленным на уровне столбца ограничением. Например, если тип данных позволяет хранить значения NULL, а на уровне столбца будет установлен запрет, то попытка вставки значения NULL в столбец закончится ошибкой.

ограничение_столбца – с помощью этого предложения указываются ограничения, которые будут определены для столбца. Синтаксис предложения следующий (слайд 4 ):

Рассмотрим назначение параметров.

CONSTRAINT – необязательное ключевое слово, после которого указывается название ограничения на значения столбца (имя_ограничения). Имена ограничений должны быть уникальны в пределах базы данных.

DEFAULT – задает значение по умолчанию для столбца. Это значение будет использовано при вставке строки, если для столбца явно не указано никакое значение.

NULL|NOT NULL – ключевые слова, разрешающие (NULL) или запрещающие (NOT NULL) хранение в столбце значений NULL. Если для столбца не задано значение по умолчанию, то при вставке строки с неизвестным значением для столбца будет предприниматься попытка вставки в столбец значения NULL. Если при этом для столбца указано ограничение NOT NULL, то попытка вставки строки будет отклонена, и пользователь получит соответствующее сообщение об ошибке.

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

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

FOREIGN KEY ... REFERENCES – указание на то, что столбец будет служить внешним ключом для таблицы, имя которой задается с помощью параметра <имя_главной_таблицы>.

(имя_столбца [,...,n]) – столбец или список перечисленных через запятую столбцов главной таблицы, входящих в ограничение FOREIGN KEY. При этом столбцы, входящие во внешний ключ, могут ссылаться только на столбцы первичного ключа или столбцы с ограничением UNIQUE таблицы.

ON DELETE {CASCADE | NO ACTION} – эти ключевые слова определяют действия, предпринимаемые при удалении строки из главной таблицы. Если указано ключевое слово CASCADE, то при удалении строки из главной (родительской) таблицы строка в зависимой таблице также будет удалена. При указании ключевого слова NO ACTION в подобном случае будет выдана ошибка. Значением по умолчанию является вариант NO ACTION.

ON UPDATE {CASCADE | NO ACTION} – эти ключевые слова определяют действия, предпринимаемые при модификации строки главной таблицы. Если указано ключевое слово CASCADE, то при модификации строки из главной (родительской) таблицы строка в зависимой таблице также будет модифицирована. При использовании ключевого слова NO ACTION в подобном случае будет выдана ошибка. Значением по умолчанию является вариант NO ACTION.

CHECK – ограничение целостности, инициирующее контроль вводимых в столбец (или столбцы) значений.

логическое_выражение – логическое выражение, используемое для ограничения CHECK.

Ограничения на уровне таблицы

Синтаксис команды CREATE TABLE предусматривает использование предложения <ограничение_таблицы>, с помощью которого определяются ограничения целостности на уровне таблицы. Синтаксис предложения следующий (слайд 5 ) .

Назначение параметров совпадает с назначением аналогичных параметров предложения <ограничение_столбца > . Тем не менее, в предложении <ограничение_таблицы> имеются некоторые новые параметры:

имя_колонки – столбец (или список столбцов), на которые необходимо наложить какие-либо ограничения целостности.

– метод упорядочивания данных в индексе. Индекс создается при указании ключевых слов PRIMARY KEY, UNIQUE. При указании значения ASC данные в индексе будут упорядочены по возрастанию, при указании значения DESC – по убыванию. По умолчанию используется значение ASC.

Примеры создания таблиц

В качестве примера рассмотрим инструкции создания таблиц базы данных «Сессия»:

Таблица «Студенты» состоит из следующих столбцов:

ID_Студент – тип данных INTEGER, уникальный ключ;

Номер_группы - тип данных CHAR, длина 6;

слайд 6 ).

Адрес и Телефон, наложены ограничения NOT NULL

Для создания таблицы «Дисциплины» была использована команда (слайд 7 ).

Таблица содержит 2 столбца (ID _Дисциплина , Наименование ).

На столбцы ID _Дисциплина , Наименование наложены ограничения NOT NULL , запрещающие ввод строки при неопределенном значении столбца.

Столбец ID _Дисциплина объявлен первичным ключом, а на значения, вводимые в столбец Наименование, наложено условие уникальности.

Таблица «Учебный_план» включает в себя следующие столбцы:

ID_Дисциплина – тип данных INTEGER;

Семестр - тип данных INTEGER;

Количество_часов - тип данных INTEGER;

Создание таблицы выполнялось с помощью следующей команды (слайд 8 ).

Для значений столбца Семестр сформулировано логическое выражение, разрешающее вводить только значения от 1 до 10.

Таблица «Сводная_ведомость» состоит из следующих столбцов:

ID_Студент – тип данных INTEGER, столбец уникального ключа;

ID_План – тип данных INTEGER, столбец уникального ключа;

Оценка - тип данных INTEGER;

Дата_сдачи - тип данных DATETIME;

ID_Преподаватель - тип данных INTEGER.

Создание таблицы выполнялось с помощью следующей команды (слайд 9 ).

На все столбцы таблицы наложены ограничения NOT NULL , запрещающие ввод строки при неопределенном значении столбца.

Для значений столбца Оценка сформулировано логическое выражение, разрешающее вводить только значения от 0 до 5: 0 – незачет, 1 – зачет, 2 – неудовлетворительно, 3 – удовлетворительно, 4 – хорошо, 5 – отлично.

И, наконец, перечислим столбцы «Кадровый_состав»:

ID_Преподаватель – тип данных INTEGER, уникальный ключ;

Фамилия – тип данных CHAR, длина 30;

Имя - тип данных CHAR, длина 15;

Отчество - тип данных CHAR, длина 20;

Должность - тип данных CHAR, длина 20;

Кафедра - тип данных CHAR, длина 3;

Адрес - тип данных CHAR, длина 30;

Телефон - тип данных CHAR, длина 8.

Создание таблицы выполнялось с помощью следующей команды (слайд 10 ).

На все столбцы таблицы, кроме столбцов Адрес и Телефон, наложены ограничения NOT NULL , запрещающие ввод строки при неопределенном значении столбца.

Для таблиц «Учебный_план» и «Сводная_ведомость» должны быть построены внешние ключи, связывающие таблицы базы данных «Сессия»:

FK_Дисциплина – внешний ключ, связывающий таблицы «Учебный_план» и «Дисциплины» по столбцу ID_Дисциплина;

FK_Кадровый_состав – внешний ключ, связывающий таблицы «Учебный_план» и «Кадровый_состав» по столбцу ID_Преподаватель;

FK_Студент – внешний ключ, связывающий таблицы «Сводная_ведомость» и «Студенты» по столбцу ID_Студент;

FK_План – внешний ключ, связывающий таблицы «Сводная_ведомость» и «Учебный_план» по столбцу ID _План.

Добавление внешних ключей в таблицы рассмотрим далее при обсуждении возможностей команды ALTER TABLE .

17.1.2. Изменение структуры таблицы – команда ALTER TABLE

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

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

Добавить в таблицу определение нового столбца;

Удалить столбец из таблицы;

Изменить значение по умолчанию для какого-либо столбца;

Добавить или удалить первичный ключ таблицы;

Добавить или удалить внешний ключ таблицы;

Добавить или удалить условие уникальности;

Добавить или удалить условие на значение.

Обобщенный синтаксис команды ALTER TABLE представлен на слайде (слайд 11 ).

Команда ALTER TABLE берет на себя все действия по копированию данных во временную таблицу, удалению старой таблицы, созданию вместо нее новой таблицы с нужной структурой и последующим переписыванием в нее данных.

Назначение многих параметров и ключевых слов команды ALTER TABLE аналогично назначению соответствующих параметров и ключевых слов команды CREATE TABLE (например, синтаксис конструкции <определение_столбца> совпадает с синтаксисом аналогичной конструкции команды CREATE TABLE ).

Основные режимы использования команды ALTER TABLE следующие:

Добавление столбца;

Удаление столбца;

Модификация столбца;

Изменение, добавление и удаление ограничений (первичных и внешних ключей, значений по умолчанию).

Добавление столбца

Для добавления нового столбца следует использовать ключевое слово ADD , после которого должно стоять определение столбца.

Добавим, например, в таблицу «Студенты» столбец «Год_поступления» (слайд 12 ). После выполнения этой команды в структуру таблицы «Студент» будет добавлен еще один столбец со значением по умолчанию, равным текущему году (значение по умолчанию вычисляется с помощью двух встроенных функций - YEAR () и GETDATE ()).

Модификация столбца

Для модификации существующего столбца таблицы служит ключевое слово ALTER COLUMN . Изменение свойств столбца невозможно, если:

столбец участвует в ограничениях PRIMARY KEY или FOREIGN KEY;

на столбец наложены ограничения целостности CHECK или UNIQUE (исключение составляют столбцы, имеющие тип данных переменной длины, т.е. типы данных, начинающиеся на var);

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

Определяя для столбца новый тип данных, следует помнить о том, что старый тип данных должен конвертироваться в новый.

Пример модификации столбца «Номер_группы» таблицы «Студенты» (тип данных INTEGER заменяется на CHAR ) (слайд 12 ).

Удаление столбца

Для удаления столбца из таблицы используется предложение DROP COLUMN <имя_столбца>. При удалении столбцов следует учитывать, что нельзя удалять столбцы сограничениями целостности CHECK , FOREIGN KEY , UNIQUE или PRIMARY KEY , а также столбцы, для которых определены значения по умолчанию (в виде ограничения целостности на уровне столбца или на уровне таблицы).

Рассмотрим, например, команду удаления из таблицы «Студент» столбца «Год_поступления» (слайд 12 ).

Эта команда выполнена не будет, т.т. при добавлении столбца было определено значение по умолчанию.

Добавление ограничений на уровне таблицы

Для добавления ограничений на уровне таблицы используется предложение ADD CONSTRAINT <имя_ограничения>.

В качестве примера рассмотрим команды добавления внешних ключей в таблицы базы данных «Сессия» (слайд 13 ):

· добавление внешних ключей в таблицу «Учебный_план» (создание связи с именем FK _Дисциплина и связи с именем FK _ Кадровый_состав);

· добавление внешних ключей в таблицу «Сводная_ведомость» (создание связи с именем FK _Студент и связи с именем FK _План).

С помощью конструкции ADD CONSTRAINT создается поименованное ограничение. Необходимо отметить, что удаление любого ограничения на уровне таблицы происходит только по его имени, поэтому ограничение должно быть поименовано (чтобы его можно было удалить).

Удаление ограничений

Для удаления из таблицы ограничения целостности используется предложение DROP CONSTRAINT <имя_ограничения>.

Удаление ограничения целостности возможно только в том случае, когда оно поименовано (т.е. предложение <определение_ограничения> содержит именование ограничения CONSTRAINT ).

Команда удаления построенного внешнего ключа FK _Дисциплина из таблицы «Учебный_план» выглядит следующим образом (слайд 14 ).

На слайде (слайд 14 ) показано удаление построенного ранее ограничения на значение по умолчанию DEF _Номер_группы.

17.1.3. Удаление таблиц – команда DROP TABLE

Удаление таблицы выполняется при помощи команды DROP TABLE (слайд 14 ).

Единственный аргумент команды задает имя таблицы, которую необходимо удалить.

Операция удаления таблицы в некоторых случаях требует определенного внимания. Невозможно удалить таблицу, если на нее с помощью ограничения целостности FOREIGN KEY ссылается другая таблица: попытка удаления таблицы «Дисциплины» вызовет сообщение об ошибке, т.к. на таблицу дисциплины ссылается таблица «Учебный_план».

17.2. Управление данными

Целью любой системы управления базами данных в конечном счете является ввод, изменение, удаление и выборка данных. Рассмотрим методы управления данными с помощью языка SQL.

17.2.1. Извлечение данных – команда SELECT

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

Чаще всего используется упрощенный вариант команды SELECT , имеющий следующий синтаксис (слайд 15 ).

Инструкция SELECT разбивается на отдельные разделы, каждый из которых имеет свое назначение. Из приведенного синтаксического описания видно, что обязательными являются только разделы SELECT и FROM , а остальные разделы могут быть опущены. Полный список разделов приведен на слайде (слайд 15 ).

Раздел SELECT

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

При необходимости пользователь может указать для столбца, возвращаемого после выполнения запроса, произвольное имя. Такое имя называется псевдонимом (alias ). В обычной ситуации назначение псевдонима не обязательно, но в некоторых случаях требуется явное его указание. Наиболее часто это требуется при работе с разделом INTO , в котором каждый из возвращаемых столбцов должен иметь имя, и это имя должно быть уникально.

Помимо сказанного, с помощью раздела SELECT можно ограничить количество строк, которое будет включено в результат выборки. Синтаксис раздела SELECT следующий (слайд 16 ).

Рассмотрим назначение параметров.

Ключевые слова ALL | DISTINCT . При указании ключевого слова ALL в результат запроса выводятся все строки, удовлетворяющие сформулированным условиям, тем самым разрешается включение в результатодинаковых строк (одинаковость строк определяется на уровне результата отбора, а не на уровне исходных данных). Параметр ALL используется по умолчанию.

Если в запросе SELECT указывается ключевое слово DISTINCT , то в результат выборки не будет включаться более одной повторяющейся строки. Таким образом, каждая возвращенная строка будет уникальной. Уникальность строки при этом определяется на уровне строк результата выборки, а не на уровне исходных данных. Если в результат выборки включаются два столбца, уникальность будет определяться по значениям обоих этих столбцов. В отдельности значения в первом и втором столбцах могут повторяться, но комбинация значений в обоих столбцах должна быть уникальна. Аналогичные правила действуют и в отношении большего количества столбцов.

Рассмотрим результат использования ключевых слов ALL и DISTINCT на примере выборки столбцов Семестр и Отчетность из таблицы «Учебный_план» базы данных «Сессия» (слайд 17 ). Сначала выполним запрос с указанием ключевого слова ALL . Фрагмент результата представлен на слайде. Теперь заменим ключевое слово ALL на DISTINCT . В этом случае результат запроса, представленный на слайде - это строки, содержащие одинаковые значения в столбцах, включенные только один раз. Этот результат должен свидетельствовать только о наличии различных форм отчетности в семестрах.

Ключевое слово TOP n . Использование ключевого слова ТОР n, где n – числовое значение, позволяет отобрать в результат не все строки, а только n первых. При этом выбираются первые строки результата выборки, а не исходных данных. Поэтому набор строк в результате выборки при указании ключевого слова ТОР может меняться в зависимости от порядка сортировки. Если в запросе используется раздел WHERE , то ключевое слово ТОР работает с набором строк, возвращенных после применения логического условия, определенного в разделе WHERE .

Продемонстрируем использование ключевого слова ТОР (слайд 18 )

В этом примере из таблицы Студенты базы данных «Сессия» было выбрано 5 первых строк.

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

Всего в таблице было 115 строк, следовательно, 10% будет составлять 11,5 строк. В результате будут выданы 12 строк.

Если указанное количество процентов строк представляет собой нецелое число, то сервер всегда выполняется округление в большую сторону.

Приведем также пример, демонстрирующий влияние порядка сортировки на возвращаемый набор строк (слайд 19 ).

При указании вместе с предложением ORDER BY ключевого слова WITH TIES в результат будут включены еще и строки, совпадающие по значению колонки сортировки с последними выведенными строками запроса SELECT TOP n [ PERCENT ].

Использование ключевого слова WITH TIES в предыдущем примере позволит обеспечить выдачу в ответ на запрос информации обо всех студентах первой по порядку группы (слайд 20 ).

Предложение <Список_выбора>. Синтаксис предложения <Список_выбора>следующий (слайд 21 ).

Символ «*» означает включение в результат всех столбцов, имеющихся в списке таблиц раздела FROM .

Если в результат не нужно включать все столбцы всех таблиц, то можно явно указать имя объекта, из которого необходимо выбрать все столбцы (<Имя_таблицы>.* или <Псевдоним_таблицы>.*).

Отдельный столбец таблицы в результат выборки включается явным указанием имени столбца (параметр <Имя_столбца>). Столбец должен принадлежать одной из таблиц, указанных в разделе FROM. Если столбец с указанным именем имеется более чем в одном источнике данных, перечисленных в разделе FROM, то необходимо явно указать имя источника данных, к которому принадлежит столбец в формате <Имя_таблицы>.<Имя_столбца>.В противном случае будет выдано сообщение об ошибке.

Например, попробуем выбрать данные из столбца ID_Дисциплина, который имеется в таблицах «Дисциплина» и «Учебный_план»:

В ответ будет выдано сообщение об ошибке, указывающее на некорректное использование имени‘ID_Дисциплина".

Т. е., в этом случае необходимо явно указать имя источника данных, которому принадлежит столбец, например:

Столбцам, возвращаемым как результат выполнения запроса, могут быть присвоены псевдонимы. Псевдонимы позволяют изменить имя исходного столбца или поименовать столбец, содержимое которого получено как результат вычисления выражения. Имя псевдонима указывается с помощью параметра <Псевдоним_столбца>. Ключевое слова AS необязательно при задании псевдонима. В общем случае сервер не требует уникальности имен столбцов результата выборки, поэтому разные столбцы могут иметь одинаковые имена или псевдонимы.

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

Другой способ формирования вычисляемого столбца состоит в использовании конструкции со знаком равенства: <Псевдоним_столбца> = <Выражение>. Единственным отличием этого способа от предыдущего является необходимость обязательного задания псевдонима. В простейшем случае выражение является именем столбца, константой, переменной или функцией. Если в качестве выражения выступает имя столбца, то получаем еще один способ задания псевдонима для столбца.

Рассмотрим следующий пример. Пусть для таблицы «Студенты» необходимо построить запрос, представляющий фамилию, имя и отчество в одной колонке. Используя операцию конкатенации (сложения) символьных строк и значение ФИО в качестве псевдонима столбца, построим запрос (слайд 22 ).

Раздел FROM

С помощью раздела FROM определяются источники данных, с которыми будет работать запрос.

Синтаксис раздела FROM следующий (слайд 23 )

На первый взгляд конструкция раздела выглядит простой. Однако при ближайшем рассмотрении он оказывается довольно сложным. В основном работа с разделом FROM это перечисление через запятую источников данных, с которыми должен работать запрос. Собственно источник данных указывается с помощью предложения <Источник_данных>, синтаксис которого представлен на слайде.

С помощью параметра <имя_таблицы> указывается имя обычной таблицы. Параметр <псевдоним_таблицы> используется для присвоения таблице псевдонима, под которым на нее нужно будет ссылаться в запросе. Часто псевдонимы таблиц применяют, чтобы ссылку на нужную таблицу сделать более удобной и короткой. Например, если в запросе часто упоминается имя таблицы «Учебный_план», то можно воспользоваться псевдонимом, например, tpl . Указание ключевого слова AS не является при этом обязательным.

Раздел WHERE

Раздел WHERE предназначен для наложения вертикальных фильтров на данные, обрабатываемые запросом. Другими словами, с помощью раздела WHERE можно сузить набор строк, включаемых в результат выборки. Для этого указывается логическое условие, от которого зависит, будет ли строка включена в выборку по запросу или нет. Строка включается в результат выборки, только если логическое выражение возвращает значение TRUE .

В общем случае логическое выражение содержит имена столбцов таблиц, с которыми работает запрос. Для каждой строки, возвращенной запросом, вычисляется логическое выражение путем подстановки вместо имен столбцов конкретных значений из соответствующей строки. Если при вычислении выражения возвращается значение TRUE , то есть выражение истинно, то строка будет включена в конечный результат. В противном случае строка в результат не включается. При необходимости можно указать более одного логического выражения, объединив их с помощью логических операторов OR и AND .

Рассмотрим синтаксис раздела WHERE (слайд 24 ).

В конструкции <условие_отбора> можно определить любое логическое условие, при выполнении которого строка будет включена в результат.

Приведенный на слайде пример демонстрирует логику работы раздела WHERE . В результате будет возвращен список всех студентов, поступивших на факультет ранее 2000 года.

Помимо операций сравнения (=, >, <, >=, <=) и логических операторов OR , AND , NOT при формировании условия отбора могут быть использованы дополнительные логические операторы, расширяющие возможности по управлению данными. Рассмотрим некоторые из этих операторов.

Оператор BETWEEN . С помощью этого оператора можно определить, лежит ли значение указанной величины в заданном диапазоне. Синтаксис использования оператора следующий (слайд 25 ).

<Выражение> задает проверяемую величину, а аргументы <начало_диапазона> и <конец_диапазона> определяют возможные границы ее изменения. Использование оператора NOT совместно с оператором BETWEEN позволяет задать диапазон, вне которого может изменяться проверяемая величина.

При выполнении оператор BETWEEN преобразуется в конструкцию из двух операций сравнения.

Рассмотрим пример использования оператора BETWEEN (слайд 25 ). В результате выполнения инструкции получим список дисциплин учебного плана с количеством часов от 50 до 100.

Оператор IN . Оператор позволяет задать в условии отбора множество возможных значений для проверяемой величины. Синтаксис использования оператора следующий (слайд 26 ).

<Выражение> указывает проверяемую величину, а аргументы <выражение1>,…, <выражение N > задают перечислением через запятую набор значений, которые может принимать проверяемая величина. Ключевое слово NOT выполняет логическое отрицание.

Рассмотрим пример применения оператора IN (слайд 26 ). В результате выполнения инструкции получим строки учебного плана для дисциплин «Английский язык» и «Физическая культура».

Оператор LIKE . С помощью оператора LIKE можно выполнять сравнение выражения символьного типа с заданным шаблоном. Синтаксис оператора следующий (слайд 27 ).

<Образец> задает символьный шаблон для сравнения и заключается в кавычки. Шаблон может содержать символы-разделители. Допускается использование следующих символов-разделителей (слайд 27 ):

% - может быть заменен в символьном выражении любым количеством произвольных символов;

_ - может быть заменен в символьном выражении любым, но только одним символом;

[ ABC 0-9] - может быть заменен в символьном выражении только одним символом из указанного в квадратных скобках набора (дефис используется для указания диапазона);

[^ ABC 0-9] - может быть заменен в символьном выражении только одним символом, кроме тех, что указаны в квадратных скобках (дефис используется для указания диапазона).

Рассмотрим пример использования оператора (слайд 27 ). Применение образца для значения столбца Должность в данном случае позволило отобрать строки со значениями «Ст.преп.» и «Проф»

Раздел ORDER BY

Раздел ORDER BY предназначен для упорядочения набора данных, возвращаемого после выполнения запроса. Полный синтаксис раздела ORDER BY следующий (слайд 28 ).

Параметр <условие_сортировки> требует задания выражения, в соответствии с которым будет осуществляться сортировка строк. В простейшем случае это выражение представляет собой имя столбца одного из источников данных запроса.

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

Раздел ORDER BY разрешает использование ключевых слов ASC и DESC, с помощью которых можно явно указать, каким образом следует упорядочить строки. При указании ключевого слова ASC данные будут отсортированы по возрастанию. Если необходимо отсортировать данные по убыванию, указывается ключевое слово DESC. По умолчанию используется сортировка по возрастанию.

Данные можно отсортировать по нескольким столбцам. Для этого необходимо ввести имена столбцов через запятую по порядку сортировки. Сначала данные сортируются по столбцу, имя которого было указано первым в разделе ORDER BY . Затем, если имеется множество строк с одинаковыми значениями в первом столбце, выполняется дополнительная сортировка этих строк по второму столбцу (внутри группы с одинаковым значением в первом столбце) и т.д.

Приведем пример сортировки по двум столбцам (слайд 28 ).

Раздел UNION

Раздел UNION служит для объединения результатов выборки, возвращаемых двумя и более запросами.

Рассмотрим синтаксис раздела UNION (слайд 29 ).

Чтобы к результатам запросов можно было применить операцию объединения, они должна соответствовать следующим требованиям:

запросы должны возвращать одинаковый набор столбцов (причем необходимо гарантировать одинаковый порядок следования столбцов в каждом из запросов);

типы данных соответствующих столбцов второго и последующих запросов должны поддерживать неявное преобразование или совпадать с типом данных столбцов первого запроса;

ни один из результатов не может быть отсортирован с помощью раздела ORDER BY (однако общий результат может быть отсортирован, как будет показано ниже)

Указание ключевого слова ALL предписывает включать в результат повторяющиеся строки. По умолчанию повторяющиеся строки в результат не включаются.

Продемонстрируем применение раздела UNION . Рассмотрим таблицы «Кадровый_Состав» и «Студенты» и попробуем построить, например, общий список и учащихся, и преподавателей, номер телефона которых начинается на 120. Упорядочим полученный список по алфавиту, добавив предложение ORDER BY (слайд 29 ).

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