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


Дисциплина: Информатика, Программирование, Базы данных
Тип работы:  Реферат
Бесплатно:  Антиплагиат
Объем: 27 страниц
В избранное:   

Турар Рысқулов атындағы Казак экономикалык университетi

Казахский экономический университет им Т. Рыскулова

ИНЖЕНЕРНО-ЭКОНОМИЧЕСКИЙ ФАКУЛЬТЕТ

НА ТЕМУ:

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

Подготовил:

Студент 3 курс

ВТиПО 305

Абдразаков Олжас

Проверил:

Ходжаев У. Р.

Алматы 2007

Содержание

  1. Оператор выбора SELECT
  2. Операции в SQLОперации „Меньше" и „больше"
  3. Примеры комбинирования операций сравнения
  4. Логические операцииIS И ANY
  5. Операции конъюнкции и дизъюнкцииANDOR
  6. Отрицание условий с помощью операции BETWEENNOT INNOT LIKEIS NOT NULLNOT EXISTSNOT UNIQUE
  7. Арифметические
  8. Комбинирование арифметических операций
  9. Список литературы

1. Оператор выбора SELECT

Язык запросов ( Data Query Language ) в SQL состоит из единственного оператора SELECT . Этот единственный оператор поиска реализует все операции реляци онной алгебры. Как просто, всего один оператор. Однако писать запросы на языке SQL (грамотные запросы) сначала совсем не просто. Надо учиться, так же как надо учиться решать математические задачки или составлять алгоритмы для решения непростых комбинаторных задач. Один и тот же запрос может быть реализован несколькими способами, и, будучи все правильными, они, тем не ме нее, могут существенно отличаться но времени исполнения, и это особенно важ но для больших баз данных.

Синтаксис оператора SELECT имеет следующий вид:

SELECT [ALL DISTINCT] < список полей >*)

FROM < Слисок таблиц >

[ WHERE < Предикат - условие выборки или соединения >]

[ GROUP BY < Список полей результата >]

[ HAVING < Предикат - условие для группы >]

[ ORDER BY < Список полей, по которым упорядочить вывод >]

Здесь ключевое слово ALL означает, что в результирующий набор строк включаются все строки, удовлетворяющие условиям запроса. Значит, в результирующий набор могут попасть одинаковые строки. И это нарушение принципов теории отношений (в отличие от реляционной алгебры, где по умолчанию предполагается отсутствие дубликатов в каждом результирующем отношении) . Ключевое слово DISTINCT означает, что в результирующий набор включаются только раз личные строки, то есть дубликаты строк результата не включаются в набор.

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

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

В разделе GROUP BY задается список полей группировки.

В разделе HAVING задаются предикаты-условия, накладываемые на каждую группу.

В части ORDER BY задается список полей упорядочения результата, то есть список полей, который определяет порядок сортировки в результирующем отношении. Например, если первым полем списка будет указана Фамилия, а вторым Номер группы, то в результирующем отношении сначала будут собраны в алфавтном порядке студенты, и если найдутся однофамильцы, то они будут расположены в порядке возрастания номеров групп.

В выражении условий раздела WHERE могут быть использованы следующие предикаты:

  • Предикаты сравнения {=, <>, >, <, >=, <= }, которые имеют традиционный смысл.
  • Предикат Between A and В - принимает значения между А и В. Предикат истинен, когда сравниваемое значение попадает в заданный диапазон, включая границы диапазона. Одновременно в стандарте задан и противополож ный предикат Not Between A and В, который истинен тогда, когда сравниваемое значение не попадает в заданный интервал, включая его границы.
  • Предикат вхождения в множество IN (множество) истинен тогда, когда сравниваемое значение входит в множество заданных значений. При этом мно жество значений может быть задано простым перечислением или встроен ным подзапросом. Одновременно существует противоположный предикат NOT IN (множество), который истинен тогда, когда сравниваемое значение не входит в заданное множество.
  • Предикаты сравнения с образцом LIKE и NOT LIKE . Предикат LIKE требует задания шаблона, с которым сравнивается заданное значение, предикат истинен, если сравниваемое значение соответствует шаблону, и ложен в противном случае. Предикат NOT LIKE имеет противоположный смысл.

По стандарту в шаблон могут быть включены специальные символы:

  • символ подчеркивания (_) - для обозначения любого одиночного символа;
  • символ процента (%) - для обозначения любой произвольной последова тельности символов;
  • остальные символы, заданные в шаблоне, обозначают самих себя.
  • Предикат сравнения с неопределенным значением IS NULL Понятие неопределенного значения было внесено в концепции баз данных позднее. Неопределенное значение интерпретируется в реляционной модели как значение, неизвестное на данный момент времени. Это значение при появлении дополнительной информации в любой момент времени может быть заменено на некоторое конкретное значение. При сравнении неопределенных значений не действуют стандартные правила сравнения: одно неопределенное значение никогда не считается равным другому неопределенному значению. Для вы явления равенства значения некоторого атрибута неопределенному применяют специальные стандартные предикаты:

< имя атрибута >IS NULL и < имя атрибута > IS NOT NULL.

Если в данном кортеже (в данной строке) указанный атрибут имеет неопределенное значение, то предикат IS NULL принимает значение «Истина» ( TRUE ), а предикат IS NOT NULL - «Ложь» ( FALSE ), в противном случае предикат IS NULL принимает значение «Ложь», а предикат IS NOT NULL принимает значение «Истина».

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

А: А
В: В
Not A: Not A
AAB: AAB
A V В: A V В
А: TRUE
В: TRUE
Not A: FALSE
AAB: TRUE
A V В: TRUE
А: TRUE
В: FALSE
Not A: FALSE
AAB: FALSE
A V В: TRUE
А: TRUE
В: Null
Not A: FALSE
AAB: Null
A V В: TRUE
А: FALSE
В: TRUE
Not A: TRUE
AAB: FALSE
A V В: TRUE
А: FALSE
В: FALSE
Not A: TRUE
AAB: FALSE
A V В: FALSE
А: FALSE
В: Null
Not A: TRUE
AAB: FALSE
A V В: Null
А: Null
В: TRUE
Not A: Null
AAB: Null
A V В: TRUE
А: Null
В: FALSE
Not A: Null
AAB: FALSE
A V В: Null
А: Null
В: Null
Not A: Null
AAB: Null
A V В: Null

Q Предикаты существования EXIST и несуществования NOT EXIST . Эти предикаты относятся к встроенным подзапросам, и подробнее мы рассмотрим их, когда коснемся вложенных подзапросов.

В условиях поиска могут быть использованы все рассмотренные ранее предикаты.

Отложив на время знакомство с группировкой, рассмотрим детально первые три строки оператора SELECT :

  • SELECT - ключевое слово, которое сообщает СУБД, что эта команда - запрос. Все запросы начинаются этим словом с доследующим пробелом, За ним может следовать способ выборки - с удалением дубликатов ( DISTINCT ) или без удаления ( ALL, подразумевается по умолчанию) . Затем следует список перечисленных через запятую столбцов, которые выбираются запросом из таблиц, или символ '*' (звездочка) для выбора всей строки. Любые столбцы, не перечисленные здесь, не будут включены в результирующее отношение, соответствующее выполнению команды. Это, конечно, не значит, что они будут удалены или их информация будет стерта из таблиц, потому что запрос не воздействует на информацию в, таблицах - он только показывает данные.
  • FROM - ключевое слово, подобно SELECT, которое должно быть представлено в каждом запросе. Оно сопровождается пробелом и затем именами таблиц, используемых в качестве источника информации. В случае если указано более одного имени таблицы, неявно подразумевается, что над перечисленными таблицами осуществляется операция декартова произведения. Таблицам можно присвоить имена-псевдонимы, что бывает полезно для осуществления операции соединения таблицы с самой собою или для доступа из вложенного подзапроса к текущей записи внешнего запроса (вложенные подзапросы здесь не рассматриваются) .

Все последующие разделы оператора SELECT являются необязательными.

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

SELECT * FROM Rl, . R 2

соответствует декартову произведению таблиц R 1 и R 2. Выражение

SELECT Rl. A. R2. B FROM Rl. R 2

соответствует проекции декартова произведения двух таблиц на два столбца А из таблицы R 1 и В из таблицы R 2, при этом дубликаты всех строк сохранены, в отличие от операции проектирования в реляционной алгебре, где при проектиро вании по умолчанию все дубликаты кортежей уничтожаются.

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

Рассмотрим базу данных, которая моделирует сдачу сессии в некотором учебном заведении. Пусть она состоит из трех отношений R 1, R 2, R3- Будем считать, что они представлены таблицами R1, R 2 и R 3 соответственно.

R1=- (ФИО, Дисциплина, Оценка) ; R 2 = (ФИО, Группа) ;

R3=(Группы, Дисциплина >

R1: R1
R1: ФИО
Дисциплина
Оценка
R1: Петров Ф. И.
Базы данных ;
5
R1: Сидоров К. А.
Базы данных
4
R1: Миронов А. В.
Базы данных
2
R1: Степанова К. Е.
Базы данных
2
R1: Крылова Т. С.
Базы данных
5
R1: Сидоров К. А.
Теория информации
4
R1: Степанова К. Е.
Теория информации
2
R1: Крылова Т. С.
Теория информации
5
R1: Миронов А. В.
Теория информации
Null
R1: Владимиров В. А.
Базы данных
5
R1: Трофимов П. А.
Сети и телекоммуникации
4
R1: Иванова Е. А.
Сети и телекоммуникации
5
R1: Уткина Н. В.
Сети и телекоммуникации
5
R1: Владимиров В. А.
Английский язык
4
R1: Трофимов П. А.
Английский язык
5
R1: Иванова Е. А.
Английский язык
3
R1: Петров Ф. И.
Английский язык
5
R2: R2
R2: ФИО
Группа
R2: Петров Ф. И.
4906
R2: Сидоров К. А.
4906
R2: Миронов А. В.
4906
R2: Крылова Т. С.
4906
R2: Владимиров В. А.
4906
R2: Трофимов П. А.
4807
R2: Иванова Е. А.
4807
R2: Уткина Н. В.
4807
R3: R3
R3: Группа
Дисциплина
R3: 4906
Базы данных
R3: 4906
Теория информации
R3: 4906
Английский язык
R3: 4807
Английский язык
R3: 4807
Сети и телекоммуникации

Приведем несколько примеров использования оператора SELECT .

  • Вывести список всех групп (без повторений), где должны пройти экзамены.

SELECT DISTINCT Группы FROM R3

Результат:

Группа: Группа
Группа: 4906
Группа: 4807
  • Вывести список студентов, которые сдали экзамен по дисциплине «Базы данных» на «отлично».

SELECT ФИО

FROM R 1

WHERE Дисциплина = " Базы данных " AND Оценка = 5

Результат:

ФИО: ФИО
ФИО: Петров Ф. И.
ФИО: Крылова Т. С.

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

SELECT ФИО, Дисциплина

FROM R2. R3

WHERE R2. Группа =R 2. Группа :

Здесь часть WHERE задает условия соединения отношений R 2 и R 3, при отсутствии условий соединения в части WHERE результат будет эквивалентен расширенному декартову произведению, и в этом случае каждому студенту были бы приписаны все дисциплины из отношения R 3, а не те, которые должна сдавать его группа.

Результат:

ФИО: ФИО
Дисциплина: Дисциплина
ФИО: Петров Ф. И.
Дисциплина: Базы данных
ФИО: Сидоров К. А.
Дисциплина: Базы данных
ФИО: Миронов А. В.
Дисциплина: Базы данных
ФИО: Степанова К. Е.
Дисциплина: Базы данных
ФИО: Крылова Т. С.
Дисциплина: Базы данных
ФИО: Владимиров В. А.
Дисциплина: Базы данных
ФИО: Петров Ф. И.
Дисциплина: Теория информации
ФИО: Сидоров К. А.
Дисциплина: Теория информации
ФИО: Миронов А. В.
Дисциплина: Теория информации
ФИО: Степанова К. Е.
Дисциплина: Теория информации
ФИО: Крылова Т. С.
Дисциплина: Теория информации
ФИО: Владимиров В. А.
Дисциплина: 'Теория информации
ФИО: Петров Ф. И.
Дисциплина: Английский язык
ФИО: Сидоров К. А.
Дисциплина: Английский язык
ФИО: Миронов А. В.
Дисциплина: Английский язык
ФИО: Степанова К. Е.
Дисциплина: Английский язык
ФИО: Крылова Т. С-
Дисциплина: Английский язык
ФИО: Владимиров В. А.
Дисциплина: Английский язык
ФИО: Трофимов П. А.
Дисциплина: Сети и телекоммуникации
ФИО: Иванова Е. А.
Дисциплина: Сети и телекоммуникации
ФИО: Уткина Н. В.
Дисциплина: Сети и телекоммуникации
ФИО: Трофимов П. А.
Дисциплина: Английский язык
ФИО: Иванова Е. А.
Дисциплина: Английский язык
ФИО: Уткина К. Е.
Дисциплина: Английский язык
  • Вывести список лентяев, имеющих несколько двоек.

SELECT DISTINCT R1. ФИО

FROM R1 a. R2 b :

WHERE a. ФИО =- Ь . ФИО AND

a. Дисциплина <> b. Дисциплина AND

а. Оценка <= 2 AND b. Оценка <- 2;

Здесь мы использовали псевдонимы для именования отношения R 1 а и Ь, так как для записи условий поиска нам необходимо работать сразу с двумя экземплярами данного отношения.

Результат:

ФИО: ФИО
ФИО: Степанова К. Е

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

Наличие неопределенных ( Null ) значений повышает гибкость обработки информации, хранящейся в БД. В наших примерах мы можем предположить ситуацию, когда студент пришел на экзамен, но не сдавал его по некоторой причине, в этом случае оценка по некоторой дисциплине для данного студента имеет неопределенное значение. В данной ситуации можно поставить вопрос: «Найти студентов, пришедших на экзамен, но не сдававших его с указанием названия дисциплины». Оператор SELECT будет выглядеть следующим образом:

SELECT ФИО . Дисциплина

FROM R 1

WHERE Оценка IS NULL

Результат :

ФИО: ФИО
Дисциплина: Дисциплина
ФИО: Миронов А. В.
Дисциплина: Теория информации

2. Операции в SQL.

Операции представляются зарезервированными словами или символами.

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

В ходе этого урока мы обсудим следующие типы операций.

• Операции сравнения
• Логические операции
• Операция отрицания
• Арифметические операции

2. 1. Операции сравнения

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

2. 2. Равенство

Операция проверки равенства в операторе SQL выясняет равенство одного значения другому. Для этого используется знак равенства (=) . При выяснении равенства сравниваемые значения должны совпадать в точности, иначе запрос к базе данных не вернет никаких данных. Если сравниваемые значения равны, соответствующее выражение получает значение TRUE (Истина), иначе - FALSE (Ложь) . Это логическое значение (TRUE/FALSE) используется системой для того, чтобы выяснить, должны ли соответствующие данные включаться в ответ запроса.

Операция = может использоваться отдельно или в комбинации с другими операциями. Вот пример, раскрывающий смысл операции проверки равенства.

Пример Значение

WHERE SALARY = '2' Зарплата равна 2

Следующий запрос возвращает все строки данных с PROD_ID равным 2345.

Ввод:

SELECT * FROM PRODUCTSJTBL WHERE PROD_ID = '2345';

Вывод:

PROD_ID PROD_DESC COST

2345 ПОЛОЧКА ИЗ ДУБА 59. 99

1 строка выбрана.

2. 3. Неравенство

В противоположность равенству существует неравенство. В SQL для представления проверки неравенства используется знак о (комбинация знаков "меньше" и "больше") . В этом случае условие возвращает TRUE, если обнаруживается неравенство значений, и FALSE - если равенство.

Во многих из основных реализаций SQL эквивалентом знака операции о является комбинация ' = Уточните в документации, является ли эта комбинация применимой в вашем конкретном случае.

Пример Значение

WHERE SALARY <> '2' Зарплата не равна 2

Ввод:

SELECT * FROM PRODUCTS_TBL WHERE PROD_ID <> '2345';

Вывод:

PROD_ID PROD_DESC COST

11235 КОСТЮМ ВЕДЬМЫ 29. 99

222 ПЛАСТИКОВЫЕ ТЫКВЫ 7. 75

13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1. 1

90 ФОНАРИ 14. 5

15 КОСТЮМЫ В АССОРТИМЕНТЕ 10

9 СЛАДКАЯ КУКУРУЗА 1. 35

6 ТЫКВЕННЫЕ КОНФЕТЫ 1. 45

87 ПЛАСТИКОВЫЕ ПАУКИ 1. 05

119 МАСКИ В АССОРТИМЕНТЕ 4. 95

1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5. 95

10 строк выбраны.

2. 4. „Меньше" и „больше"

Знаки < ("меньше") и > ("больше") можно использовать по отдельности, и в комбинации с другими операциями.

Пример Значение

WHERE SALARY < '2' Зарплата меньше 2

WHERE SALARY > '2' Зарплата больше 2

В первом случае любое значение, меньшее 2, вернет TRUE, а равное или большее 2 - FALSE. Операция "больше" является противоположной к операции "меньше".

Ввод:

SELECT * FROM PRODUCTS_TBL WHERE COST > 20;

Вывод:

PROD_ID PROD_DESC COST

11235 КОСТЮМ ВЕДЬМЫ 29. 99

2345 ПОЛОЧКА ИЗ ДУБА 59. 99

2 строки выбраны.

В следующем примере обратите внимание на то, что значение 24. 99 не включено в вывод результата запроса.

Ввод:

SELECT * FROM PRODUCTS_TBL WHERE COST < 24. 99;

Вывод:

PROD_ID PROD_DESC COST

222 ПЛАСТИКОВЫЕ ТЫКВЫ 7. 75

13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1. 1

90 ФОНАРИ 14. 5

15 КОСТЮМЫ В АССОРТИМЕНТЕ 10

9 СЛАДКАЯ КУКУРУЗА 1. 35

6 ТЫКВЕННЫЕ КОНФЕТЫ 1. 45

87 ПЛАСТИКОВЫЕ ПАУКИ 1. 05

119 МАСКИ В АССОРТИМЕНТЕ 4. 95

1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5. 95

9 строк выбраны.

3. Примеры комбинирования операций сравнения

Знак равенства можно комбинировать со знаками "меньше" и "больше", как в следующих примерах.

Пример Значение

WHERE SALARY <= '2' Зарплата меньше или равна 2

WHERE SALARY >= '2' Зарплата больше или равна 2

"Меньше или равно" включает значение 2 и все значения, меньшие 2. Любое такое значение вернет TRUE, а любое значение, большее 2, вернет FALSE. Подобным образом определяется "больше или равно". В данном случае, в отличие от строгих неравенств, значение 2 возвращает TRUE.

Ввод:

SELECT * FROM PRODUCTS_TBL WHERE COST <= 24. 99;

Вывод:

PROD__ID PROD_DESC COST

11235 КОСТЮМ ВЕДЬМЫ 9. 99

222 ПЛАСТИКОВЫЕ ТЫКВЫ 7. 75

13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1. 1

90 ФОНАРИ 14. 5

15 КОСТЮМЫ В АССОРТИМЕНТЕ 10

9 СЛАДКАЯ КУКУРУЗА 1. 35

б ТЫКВЕННЫЕ КОНФЕТЫ 1. 45

87 ПЛАСТИКОВЫЕ ПАУКИ 1. 05

119 МАСКИ В АССОРТИМЕНТЕ 4. 95

1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5. 95

... продолжение

Вы можете абсолютно на бесплатной основе полностью просмотреть эту работу через наше приложение.
Похожие работы
Управление транзакциями и обеспечечение целостности базы данных в СКБД
История развития компьютеров и языков программирования: от Минтегральных схем до языка C#
PHP и SQL: основы программирования для создания динамических веб-сайтов и управления базами данных
Операторы запросов в языке SQL: логика трехзначной логики, синтаксис операторов AND, OR, NOT, а также функции и формат операторов SELECT, INSERT, UPDATE, DELETE, HAVING, COMMIT и ROLLBACK
Моделирование банковских платежей с использованием UML: доступность и автоматизация для клиентов
Ограничения в таблицах: типы, определение и использование
Структура программы на языке C: модули, процедуры и функции
Создание таблицы Auto1.db и настройка доступа к базе данных в Delphi
Архитектура компьютера: функции, устройства и принципы работы современного автоматизированного рабочего места
Обеспечение целостности данных в реляционных базах данных: механизмы поддержки связанных таблиц
Дисциплины



Реферат Курсовая работа Дипломная работа Материал Диссертация Практика - - - 1‑10 стр. 11‑20 стр. 21‑30 стр. 31‑60 стр. 61+ стр. Основное Кол‑во стр. Доп. Поиск Ничего не найдено :( Недавно просмотренные работы Просмотренные работы не найдены Заказ Антиплагиат Просмотренные работы ru ru/