.RU

Часть 2. SQL- структуризованный язык запросов - Методические указания по курсам «Теория информационных систем» и«Базы...


^ Часть 2. SQL- структуризованный язык запросов
Все языки управления данными, созданные до появления реляционных баз данных и разработанные для многих систем управления базами данных персональных компьютеров, были ориентированы на операции с данными, представленными в виде логических записей файлов. Это требовало от пользователей детального знания организации хранения данных и достаточных усилий для указания не только того, какие данные нужны, но и того, где они размещены, и как шаг за шагом получить их.

Язык SQL (Structured Query Language - структуризованный язык запросов) ориентирован на операции с данными, представленными в виде логически взаимосвязанных совокупностей таблиц. Особенность предложений этого языка состоит в том, что они ориентированы в большей степени на конечный результат обработки данных, чем на процедуру этой обработки. SQL сам определяет, где находятся данные, какие индексы и даже наиболее эффективные последовательности операций следует использовать для их получения: не надо указывать эти детали в запросе к базе данных.

SQL был разработан начале 70-х годов прошлого века в отделениях фирмы IBM. И уже к 80-ым годам стал фактическим стандартом для профессиональных реляционных СУБД. К настоящему времени он используется в таких системах управления реляционными базами данных, как Oracle, INGRES, Informix, Sybase, SQLbase, Microsoft SQL Server, DB2 (СУБД самой IBM), SQL/DC, Paradox, Access, FoxPro, dBase, Approach, MySQL, PosgreSQL и многими другими. Уже более 140 продуктов имеют в своем составе SQL-интерфейс. Можно с уверенностью сказать, что если вы собираетесь в ближайшем будущем использовать реляционные базы данных, то вам придется работать с SQL.

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

◦ операторы определения данных (определение баз данных, а также определение и уничтожение таблиц и индексов);

◦ запросы на выбор данных;

◦ предложения модификации данных (добавление, удаление и изменение данных);

◦ арифметические вычисления (включая разнообразные функциональные преобразования), обработку текстовых строк и выполнение операций сравнения значений арифметических выражений и текстов;

◦ упорядочение строк и (или) столбцов при выводе содержимого;

◦ агрегатирование данных: группирование данных и применение к этим группам таких операций, как среднее, сумма, максимум, минимум, число элементов и т.п.

◦ и др.
^ Data Definition Language
Язык определения данных (Data Definition Language или DDL) включает в себя все операторы, используемые для определения объектов реляционной базы данных, прежде всего это операторы CREATE DATABASE, DROP DATABASE, CREATE TABLE, ALTER TABLE, DROP TABLE., CREATE INDEX и DROP INDEX.
^ CREATE DATABASE
CREATE DATABASE

имя базы данных

Оператор CREATE DATABASE создает новую базу данных с именем имя базы данных. Если база данных с таким именем уже существует, то выполнение этого оператора приводит к ошибке.
^ DROP DATABASE
DROP DATABASE

имя базы данных

Оператор DROP DATABASE удаляет базу данных с именем имя базы данных.
CREATE TABLE
CREATE [TEMPORARY] TABLE имя таблицы

(определение, . . .)

[предложение SELECT]


определение:

PRIMARY KEY (столбцы)



Оператор CREATE TABLE создает новую таблицу с именем имя таблицы. Если указывается ключевое слово TEMPORARY, таблица существует только до конца текущего сеанса соединения или запуска оператора DROP TABLE, после чего удаляется.

Попытка создать таблицу с уже используемым именем приводит к появлению ошибки.

В качестве определения может выступать описание столбца, определение ключа или предложение FOREIGN KEY для описания внешнего ключа.

Описание столбца начинается с имени столбца и его типа и может сопровождаться несколькими необязательными ключевыми словами.

В SQL используются следующие основные типы данных, форматы которых могут несколько различаться для разных СУБД:

INTEGER

- целое число (обычно до 10 значащих цифр и знак);

SMALLINT

- короткое целое (обычно до 5 значащих цифр и знак);

DECIMAL(p,q)

- десятичное число, имеющее p цифр (0 < p < 16) и знак; с помощью q задается число цифр справа от десятичной точки (q < p, если q = 0, оно может быть опущено);

FLOAT

- вещественное число с 15 значащими цифрами и целочисленным порядком, определяемым типом СУБД;

CHAR(n)

- символьная строка фиксированной длины из n символов (0 < n < 256);

VARCHAR(n)

- символьная строка переменной длины, не превышающей n символов (n > 0 и разное в разных СУБД, но не меньше 4096);

DATE

- дата в формате, определяемом специальной командой (по умолчанию mm/dd/yy); поля даты могут содержать только реальные даты, начинающиеся за несколько тысячелетий до н.э. и ограниченные пятым-десятым тысячелетием н.э.;

TIME

- время в формате, определяемом специальной командой, (по умолчанию hh.mm.ss);

DATETIME

- комбинация даты и времени;

MONEY

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

В некоторых СУБД еще существует тип данных LOGICAL, DOUBLE и ряд других.

При определении типа столбца можно определять NULL или NOT NULL, т.е. может или нет столбец содержать значения NULL. По умолчанию установлено значение NULL.

Значение по умолчанию DEFAULT должно быть константой, оно не может быть функцией или выражением. Если для данного столбца не задается никакой величины DEFAULT, то СУБД автоматически назначает ее. Если столбец может принимать NULL как допустимую величину, то по умолчанию присваивается значение NULL. Если столбец объявлен как NOT NULL, то значение по умолчанию зависит от типа столбца: для числовых типов значение по умолчанию равно 0; для типов даты и времени значение по умолчанию равно соответствующей нулевой величине для данного типа; для строковых типов значением по умолчанию является пустая строка.

PRIMARY KEY определяет столбец как первичный ключ.

UNIQUE определяет столбец как альтернативный ключ.

Предложения PRIMARY KEY и UNIQUE определяют так же и индексы, которые должны содержать уникальные значения.

Предложение INDEX дает возможность добавить индекс к создаваемой таблице.

С помощью выражения имя столбца (длина) можно указать индекс, для которого используется только часть столбца CHAR или VARCHAR. Это поможет сделать файл индексов намного меньше.

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

При добавлении предложения SELECT таблица создается с помощью результирующего набора, возвращаемого запросом.

В следующем примере показано создание таблицы Clients

CREATE TABLE Clients (

ID_NUM INTEGER NOT NULL PRIMARY KEY,

Name CHAR(64) NOT NULL,

City CHAR(32) NOT NULL,

AGE SMALLINT NOT NULL,

INDEX part_of_city (City(10))

)
^ ALTER TABLE
ALTER TABLE имя таблицы

операции

Оператор ALTER TABLE позволяет изменять структуру таблицы. Для его выполнения задайте имя таблицы и определите операции, которые необходимо выполнить над таблицей.

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

ADD COLUMN описание столбца

Добавляет столбец в таблицу. Описание имеет такой же формат, как и в операторе CREATE TABLE.

ALTER TABLE Clients ADD COLUMN Phone CHAR(16)

Этот пример добавляет в таблицу Clients новый столбец Phone.

ADD PRIMARY KEY (столбцы)

Добавляет первичный ключ с именем PRIMARY по определенным столбцам. Если первичный ключ уже существует, результатом выполнения этой операции будет ошибка.

ADD UNIQUE имя индекса (столбец[(длина)],...)

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

ADD INDEX имя индекса (столбец[(длина)],...)

Добавляет индекс таблице.

CHANGE COLUMN имя столбца описание столбца

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

DROP PRIMARY KEY

Удаляет первичный ключ из таблицы.

DROP INDEX имя индекса

Удаляет индекс из таблицы.
^ DROP TABLE
DROP TABLE имя таблицы [,имя таблицы]...

Удаляет указанную таблицу (или таблицы) из базы данных.
CREATE INDEX
CREATE [UNIQUE] INDEX имя индекса

ON имя таблицы (имя столбца[(длина)],...)

Оператор CREATE INDEX дает возможность добавить индексы к существующим таблицам.

Список столбцов в форме (имя столбца_1, имя столбца_2,...) создает индекс для нескольких столбцов. Величины индексов формируются путем конкатенации величин указанных столбцов.

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

Для столбцов типов CHAR и VARCHAR с помощью параметра имя столбца(длина) могут создаваться индексы, для которых используется только часть. Пример, приведенный ниже, создает индекс, используя первые 10 символов столбца Name:

CREATE INDEX part_of_name ON Clients (Name(10))

Поскольку большинство имен обычно имеют отличия друг от друга в первых 10 символах, данный индекс не должен быть намного медленнее, чем созданный из столбца Name целиком. Кроме того, используя неполные столбцы для индексов, можно сделать файл индексов намного меньше, а это позволяет сэкономить место на диске и к тому же повысить скорость операций INSERT.
^ DROP INDEX
DROP INDEX имя индекса ON имя таблицы

Оператор DROP INDEX удаляет индексы, указанные в имя индекса из таблицы имя таблицы. Пример:

DROP INDEX part_of_name ON Clients

devis-norman-istoriya-evropi-norman-devis-per-s-angl-t-b-menskoj-moskva-ast-2006-943-1-s-il.html
devochka-i-aprel-dejstvuyushie-lica.html
devochki-po-vizovu-test-na-grazhdanstvo-78-mifi-sovremennoj-germanii-81.html
devolyuciya-cheloveka-vedicheskaya-alternativa-teorii-darvina-stranica-16.html
devolyuciya-cheloveka-vedicheskaya-alternativa-teorii-darvina-stranica-40.html
devushka-i-medved-a-n-afanasev-narodnie-russkie-skazki.html
  • college.bystrickaya.ru/1-osnovi-organizacii-finansovogo-uchyota-15-tema-uchyot-osnovnih-sredstv-16.html
  • uchenik.bystrickaya.ru/a-a-batyaev-o-v-bobkova-n-v-vasilchikova-stranica-26.html
  • doklad.bystrickaya.ru/upravlenie-i-regulirovanie-v-sfere-truda-i-zanyatosti-naseleniya.html
  • uchit.bystrickaya.ru/sud-prinyal-reshenie-ne-predyavlyat-soldatu-pogranichniku-obvinenie-v-ubijstve-pai-060905.html
  • thesis.bystrickaya.ru/prikaz-mvd-rf-ot-29-iyunya-2005g-511-voprosi-organizacii-proizvodstva-sudebnih-ekspertiz-v-ekspertno-kriminalisticheskih-podrazdeleniyah-organov-vnutrennih-del-rossijskoj-federacii.html
  • control.bystrickaya.ru/chto-takoe-strahovanie-klassifikaciya-vidov-osnovnie-harakteristiki-vidov-strahovaniya.html
  • bukva.bystrickaya.ru/sudebnaya-ekspertiza-v-grazhdanskom-processe-2.html
  • kanikulyi.bystrickaya.ru/vvedenie-biblejskie-holmi.html
  • znanie.bystrickaya.ru/analiticheskaya-spravka-gou-sosh-1233-na-15-04-2011.html
  • bukva.bystrickaya.ru/sistemi-telekommunikacii-i-svyazi-chast-12.html
  • nauka.bystrickaya.ru/variant-10-uchebno-metodicheskij-kompleks-po-discipline-metodika-prepodavaniya-matematiki-specialnost-050708.html
  • doklad.bystrickaya.ru/v-g-korolenko-deti-podzemelya-k-paustovskij-kot-voryuga.html
  • vospitanie.bystrickaya.ru/zadaniya-dlya-studentov-1-kursa-obuchayushihsya-po-individualnomu-grafiku-pervij-semestr.html
  • doklad.bystrickaya.ru/uchebno-metodicheskij-kompleks-disciplini-kod-i-nazvanie-po-gos-vpo-specialnost.html
  • uchitel.bystrickaya.ru/protivopokazaniya-primeneniya-biorezonansnoj-terapii-metodicheskie-rekomendacii-dlya-medicinskogo-pribora-biorezonansnoj.html
  • write.bystrickaya.ru/glava-20-kniga-vtoraya-gnev-drakona.html
  • books.bystrickaya.ru/dlya-chego-kompyuteri-obedinyayut-v-seti-konspekt-lekcij-po-kursu-organizaciya-evm-i-sistem-dlya-studentov-specialnosti.html
  • tests.bystrickaya.ru/kratkaya-annotaciya.html
  • kanikulyi.bystrickaya.ru/zhizn-i-tvorchestvo-v-v-nabokova.html
  • gramota.bystrickaya.ru/vvodno-foneticheskij-kurs-nemeckogo-yazika-dlya-nachinayushih-i-studentov.html
  • thescience.bystrickaya.ru/instrukciya-po-ekspluatacii-dannogo-izdeliya-redaktorskoe-vstuplenie.html
  • lektsiya.bystrickaya.ru/programma-po-kursu-osnovi-nauchnoj-deyatelnosti.html
  • ucheba.bystrickaya.ru/pravovie-osnovi-zashiti-gosudarstvennoj-tajni-zakonodatelnie-i-normativno-pravovie-akti-v-oblasti-zashiti-informacii-i-gosudarstvennoj-tajni.html
  • thescience.bystrickaya.ru/ii-kinematicheskij-analiz-fazovih-perehodov-kinematika-fazovih-perehodovv-mehanike-sploshnih-sreda.html
  • write.bystrickaya.ru/glavam-mestnih-administracij-ekstrennie-rossijskie-smi-o-mchs-monitoring-za-29-sentyabrya-2009-g.html
  • writing.bystrickaya.ru/dlya-detej-besplatno-nedavno-v-bolshom-planetarii-moskvi-sostoyalas-blagotvoritelnaya-akciya-dlya-detej-stradayushih.html
  • prepodavatel.bystrickaya.ru/tema-uroka-osnovnie-ponyatiya-stranica-5.html
  • predmet.bystrickaya.ru/sankt-peterburgskij-gosudarstvennij-universitet-sobitiya.html
  • textbook.bystrickaya.ru/httpwww-phantastike-ru-stranica-12.html
  • desk.bystrickaya.ru/osobennosti-uchebnoj-deyatelnosti-detej-s-narusheniyami-rechi-metodicheskie-rekomendacii-dlya-pedagogov-specialistov.html
  • universitet.bystrickaya.ru/tablica-1-informacionnaya-tehnologiya-prognoza-farmakologicheskoj-aktivnosti-himicheskih-soedinenij-14-00-25-farmakologiya.html
  • reading.bystrickaya.ru/lekciya-7-vremena-razdeleniya-carstv-domashnee-zadanie-18-lekciya-1-19-kniga-bitie-19-vremena-patriarhov-dopotopnoe.html
  • klass.bystrickaya.ru/avtor-dokumenta-uchebnoe-posobie-sankt-peterburg-2004-udk-recenzent-docent-kafedri-ekonomiki-i-upravleniya-predpriyatij.html
  • vospitanie.bystrickaya.ru/vsevelikoe-vojsko-donskoe.html
  • assessments.bystrickaya.ru/chast-dlya-zapisi-podrobnoe-obsuzhdenie-pokazivaet-chto-oba-eti-usloviya-dva-filosofskih-vvedeniya-v-dvadcat-pervij-vek.html
  • © bystrickaya.ru
    Мобильный рефератник - для мобильных людей.