SQLсервер в Linux -самостоятельное освоение пакета

       

SQLсервер в Linux -самостоятельное освоение пакета

Краткий курс SQL
Краткий курс SQL В этой главе описывается история SQL и основные концепции языка. На базе материала строится следующая глава, посвященная использованию SQL в Post-greSQL. В частности, в
Символьные типы
Символьные типы Символьные типы используются в любых операциях с символьными данными (например, с фрагментами текста в кодировке ASCII). Обычно они применяются для хранения имен, адресо
Таблица 3 12 Символьные типы
Таблица 3.12. Символьные типы Тип Размер Описание character(rt), chart/7) (4+ л) байт Символьная строка фиксированной длины, допо

Числовые типы
Числовые типы Числовые типы PostgreSQL используются для представления целых и вещественных значений. С общей точки зрения к числовым типам PostgreSQL относятся следующие типы: 2-
Таблица 3 13 Числовые типы PostgreSQL
Таблица 3.13. Числовые типы PostgreSQL Тип Размер Допустимые значения bigint, int8 8 байт Целые числа в интервале от -9 223 372 036 854 775 807 до 9


Тип money
Тип money Тип money предназначен для хранения денежных величин и обычных чисел. На момент написания книги тип money считается устаревшим и использовать его не рекомендуется. В книге он
Листинг 3 23 Использование типа numeric вместо money
Листинг 3.23. Использование типа numeric вместо money booktown=# CREATE TABLE money_example (money_cash money. booktown(# numeric_cash numeric(10,2)): CREATE booktown=# INSERT
Тип serial
Тип serial Хотя тип serial не относится к числу стандартных типов, он часто используется при создании в таблице полей-идентификаторов, содержащих уникальное значение для каждой записи.

Листинг 3 24 Использование типа serial
Листинг 3.24. Использование типа serial booktown=# CREATE TABLE autojdentified (id_serial); NOTICE: CREATE TABLE will create implicit sequence ' auto Jdentif led Jd_seq' for SERIAL
Листинг 3 25 Решение задачи вручную
Листинг 3.25. Решение задачи вручную booktown=# CREATE SEQUENCE autojdentified id_seq; CREATE booktown=# CREATE TABLE autojdentified booktown-# (id integer UNIQUE DEFAULT
Дата и время
Дата и время Следующая категория типов является удобным средством для хранения даты и времени в универсальной структуре SQL. При этом программист избавляется от хлопот, связанных с фор
Таблица 3 14 Типы даты и времени
Таблица 3.14. Типы даты и времени Тип данных Размер Описание Интервал date 4 байта Календарная дата (год, месяц и день) От 4713 г. до
Совместимость
Совместимость Для сохранения совместимости с предыдущими версиями PostgreSQL разработчики продолжают поддерживать типы данных datetime и timespan. Тип datetime эквивалентен timestamp,

Формат представления даты
Формат представления даты В PostgreSQL предусмотрено несколько стандартных форматов даты, в том числе формат ISO-8601, традиционный формат SQL, исходный формат PostgreSQL и многие друг
Таблица 3 15 Форматы представления даты
Таблица 3.15. Форматы представления даты Пример Описание July 1. 2001 Название месяца, день и год Sunday July 1. 2001 Название дня недели,
Таблица 3 16 Сокращенные обозначения месяцев
Таблица 3.16. Сокращенные обозначения месяцев Месяц Сокращение Январь Jan Февраль Feb Март Mar Апрель
Таблица 3 17 Сокращенные обозначения дней недели
Таблица 3.17. Сокращенные обозначения дней недели День Сокращение Воскресенье Sun Понедельник Моп Вторник Tue, Tues
Таблица 3 18 Константы форматов даты
Таблица 3.18. Константы форматов даты Общий формат Описание Пример ISO Стандарт ISO-8601 2001-06-25 12:24:00-07 SQL Традиционный

Таблица 3 19 Дополнительные форматы вывода даты
Таблица 3.19. Дополнительные форматы вывода даты Формат Описание Пример European День/месяц/год 12/07/2001 17:34:50.00 МЕТ US. NonEuro
Листинг 3 26 Выбор формата даты
Листинг 3.26. Выбор формата даты booktown=# SET DATESTYLE TO ISO,US; SET VARIABLE booktown=# SHOW DATESTYLE; NOTICE: DateStyle is ISO with US (NonEuropean) conventions SHOW VARIA
Форматы представления времени
Форматы представления времени Время, как и дата, может задаваться разными способами. В табл. 3.20 перечислены самые распространенные форматы значений типов time и time with time zone.
Taблица 3 20 Форматы представления времени
Taблица 3.20. Форматы представления времени Пример Описание 01:24 ISO-8601 с точностью до минут 01:24 AM Эквивалент 01:24 (суффикс AM испол
Таблица 3 21 Допустимые форматы часового пояса
Таблица 3.21. Допустимые форматы часового пояса Пример Описание 01:24:11-7 ISO-8601, GMT + 7 часов 01:24:11-07:00 ISO-8601, GMT + 7 часов 0

Тип timestamp
Тип timestamp Тип timestamp PostgreSQL сочетает функциональные возможности типов date и time. Формат timestamp состоит из даты, за которой следует минимум один пробел, после чего идет
Таблица 3 22 Примеры данных типа timestamp
Таблица 3.22. Примеры данных типа timestamp Пример Описание 1980-06-25 11:11-7 Формат даты ISO-8601 с точностью до минут, часовой пояс PST 25/06
Интервальный тип
Интервальный тип В стандарте SQL92 определен тип данных interval, представляющий фиксированный промежуток времени. Сам по себе тип interval представляет лишь количественную величину, н
Листинг 3 27 Операции с интервалами
Листинг 3.27. Операции с интервалами booktown=# SELECT date('1980-06-25'); date 1980-06-25 (1 row) booktown=# SELECT interval С 21 years 8 days'); interval 21 years 8 days (1
Встроенные константы даты и времени
Встроенные константы даты и времени В PostgreSQL предусмотрено несколько специальных констант, представляющих стандартные значения даты и времени. Эти константы перечислены в табл. 3.2

Таблица 3 23 Константы даты и времени
Таблица 3.23. Константы даты и времени Константа Описание current Текущее (отложенное) время обработки транзакции. В отличие от now не при
Листинг 3 28 Использование констант current и now
Листинг 3.28. Использование констант current и now booktown=# CREATE TABLE tasklog booktown=# (taskname char(15), booktown=# timebegun timestamp, booktown=# timeflnished timestamp)
Листинг 3 29 Сравнение констант now и current
Листинг 3.29. Сравнение констант now и current booktown=# INSERT INTO shipments (customer_id. isbn, ship_date) Ccustomer_id, isbn, ship_date) booktown-# VALUES (1. '039480001X', 'cu
Геометрические типы
Геометрические типы Геометрические типы PostgreSQL предназначены для представления объектов на плоскости. Они не относятся к стандартным типам данных SQL и потому в книге подробно не ра
Таблица 3 24 Геометрические типы
Таблица 3.24. Геометрические типы Тип Размер Описание Синтаксис point 16 байт Точечный объект, характеризуемый только

Массивы
Массивы В исходном варианте реляционной модели значения полей таблиц должны представлять собой атомарные объекты данных. В объектно-реляционных базах данных, к которым относится Postgre
Массивы в таблицах
Массивы в таблицах В PostgreSQL предусмотрен синтаксис для определения массивов как фиксированного, так и переменного размера; тем не менее в PostgreSQL 7.1.2 ограничение размера не со
Массивы константы
Массивы - константы При вставке в поле таблицы нового значения, которое представляет собой массив, в команде SQL необходимо перечислить входящие в него элементы. В соответствии с синта
Преобразование типов
Преобразование типов В PostgreSQL поддерживаются три отдельных варианта синтаксиса преобразования (приведения) типов, то есть механизма приведения данных от одного типа к другому. В ком
Листинг 3 30 Использование функции преобразования типа
Листинг 3.30. Использование функции преобразования типа booktown=# SELECT text(1000) booktown-# AS explicitjtext; explicit_text

Таблицы в PostgreSQL
Таблицы в PostgreSQL Многие программисты (особенно обладающие опытом работы с другими реляционными СУБД на базе SQL) хорошо знакомы с общими концепциями реляционных баз данных, рассмотр
Системные поля
Системные поля В PostgreSQL все таблицы содержат системные поля, которые остаются невидимыми для пользователя и не выводятся при выборке (если служебная информация не запрашивается спе
Таблица 3 25 Системные поля
Таблица 3.25. Системные поля Поле Описание old 4-байтовый уникальный идентификатор объекта записи. В пределах одной таблицы значе
Идентификаторы объектов
Идентификаторы объектов Как было сказано в подразделе Таблицы раздела Знакомство с реляционными базами данных, база данных содержит таблицы, а каждая таблиц
Листинг 3 31 Идентификация записей по OID
Листинг 3.31. Идентификация записей по OID 3Stdb=# SELECT * FROM my_list; todos ---------------------------------- Correct redundancies In my_list. Correct redundancies in my_li

Предварительное планирование
Предварительное планирование Прежде чем переходить к непосредственному созданию таблиц, желательно выде-ить немного времени на предварительное планирование объектов базы данных, также
Таблица 3 26 Таблица authors
Таблица 3.26. Таблица authors id last_name first_name 1809 Geisel Theodor Seuss illl Denham Ariel
Таблица 3 27 Таблица subjects
Таблица 3.27. Таблица subjects id subject location 1809 Arts Creativity St 1111 Children's Books Kids Ct
Знакомство с SQL
Знакомство с SQL SQL (Structured Query Language) — мощный, универсальный и проверенный временем язык запросов к реляционным базам данных. История SQL восходит к научным разработкам комп
Краткая история SQL
Краткая история SQL В 1970 году доктор Э. Ф. Кодд (Е. F. Codd) из компании IBM в статье A Relational Model of Data for Large Shared Data Banks дал формальное определение

Язык SQL и его предшественники
Язык SQL и его предшественники Язык SQL в значительной степени основан на реляционной алгебре и кортежно-реляционной модели. Реляционная алгебра, представленная Э. Ф. Коддомв 1972 году, оп
Стандарты SQL
Стандарты SQL В 1986 году язык SQL был стандартизирован Американским национальным институтом стандартов (ANSI), а в 1987 году появился стандарт Международной организации по стандартам
Знакомство с реляционными базами данных
Знакомство с реляционными базами данных PostgreSQL относится к категории объектно-реляционных систем управления базами данных (ОРСУБД). Модель ОРСУБД представляет собой усовершенствование
Базы данных
Базы данных Хотя РСУБД PostgreSQL часто называют просто базой данных, этот термин часто приводит к недоразумениям. База данных PostgreSQL представляет собой объектно-реля
Таблицы
Таблицы Данный раздел посвящен таблицам — одному из важнейших элементов SQL. Таблицы необходимо знать во всех подробностях, поскольку именно в таблицах хранятся все данные. Хорошее зна

Таблица 3 1 Пример таблицы SQL
Таблица 3.1. Пример таблицы SQL id title authorjd subjected 7808 The Shining 4156 9 156 The Te
Команды SQL
Команды SQL Любая концептуальная информация о реляционных базах данных и таблицах приносит пользу лишь в том случае, если вы знаете, как организовать взаимодействие с данными. Язык SQL
Анатомия команд SQL
Анатомия команд SQL Команды SQL всегда начинаются с действия (verb) — слова или группы слов, описывающих выполняемую операцию. Кроме того, команда SQL обычно содержит одну или нескольк
Таблица 3 2 Основные действия PostgreSQL
Таблица 3.2. Основные действия PostgreSQL Действие Описание CREATE DATABASE Создание новой базы данных CREATE INDEX Создание н
Форматирование команд SQL
Форматирование команд SQL Как упоминалось в предыдущем подразделе, команды SQL состоят из последовательности элементов — лексем. Менее очевиден тот факт, что лексемы могут находиться в

Листинг 3 1 Пробелы и переводы строк
Листинг 3.1. Пробелы и переводы строк testdb-* SELECT * FROM mylist; todos --------------------------------------- Pick up laundry. Send out bills. Wrap up Grand Unifying Theory fo
Ключевые слова и идентификаторы
Ключевые слова и идентификаторы Ключевыми словами называются зарезервированные термины SQL, имеющие особый синтаксический смысл для сервера (INSERT, UPDATE, SELECT, DELETE и т. д.).
Листинг 3 2 Ключевые слова и команды
Листинг 3.2. Ключевые слова и команды booktown=# INSERT INTO states VALUES (33, 'Oregon', 'OR'); INSERT 3389701 1 В листинге 3.2 команда SQL INSERT INTO содержит ключевые слова SQL IN
Защищенные идентификаторы
Защищенные идентификаторы Хотя обычно это и не требуется, идентификаторы могут заключаться в кавычки, указывающие на их буквальную интерпретацию. Например, просмотр всех полей таблицы
Обязательная защита идентификаторов
Обязательная защита идентификаторов Идентификаторы обязательно должны заключаться в кавычки только в двух случаях: если идентификатор объекта базы данных совпадает с ключевым словом ил

Структура имен идентификаторов
Структура имен идентификаторов Максимальная длина ключевых слов и идентификаторов PostgreSQL равна 31 симюлу. В процессе лексического разбора все ключевые слова и идентификаторы больше
Листинг 3 3 Преодоление ограничений
Листинг 3.3. Преодоление ограничений booktown=# CREATE TABLE lst_bent_rule (rule_name text); ERROR: parser: parse error at or near "1" booktown=# CREATE TABLE "lst_bent
Константы
Константы При работе с базами данных многие объекты хранятся на диске, а для обращения к ним используются идентификаторы (имена таблиц, полей и функций). Однако неизбежно настанет момен
Строковые константы
Строковые константы Строковая константа представляет собой произвольную последовательность символов, заключенную в апострофы. Строковые константы часто используются при вставке новых д
Листинг 3 4 Использование строковых констант
Листинг 3.4. Использование строковых констант booktown=# UPDATE authors booktown-# SET firstjiame = 'Louisa May' booktown-l WHERE firstjiame = 'Luoisa May' UPDATE 1 booktown-# SE

Таблица 3 3 Служебные последовательности
Таблица 3.3. Служебные последовательности PostareSQL в стиле С Последовательность Описание \\ Обратная косая черта (литерал) V
Листинг 3 5 Разбиение строковых констант
Листинг 3.5. Разбиение строковых констант booktown=# SELECT 'book' booktown-# booktown-# 'end' AS example; example bookend (1 row) booktown=# SELECT 'bookend' AS example; e
Битовые последовательности
Битовые последовательности Битовые последовательности предназначены для представления двоичных величин в виде произвольной последовательности нулей и единиц. Как и строковые константы,
Листинг 3 6 Использование битовых последовательностей
Листинг 3.6. Использование битовых последовательностей testdiH* INSERT INTO my_bytes VALUES (B'OOOOOOOO'): testdb=# SELECT my_byte FROM my_bytes: my_byte 10000000 10000001 1
Целочисленные константы
Целочисленные константы Целочисленные константы используются гораздо чаще, чем битовые последовательности. В PostgreSQL целочисленной константой считается любая лексема, состоящая из ц

Листинг 3 7 Использование целочисленных констант
Листинг 3.7. Использование целочисленных констант booktown=# SELECT * FROM authors WHERE id 100; id | lastjiame | firstjiame 16 | Alcott | Louisa May (1 row) booktown=# SEL
Вещественные константы
Вещественные константы Вещественные константы обладают определенным сходством с целочисленными константами, но используются для представления не только целых, но и дробных величин.
Таблица 3 4 Представление величин с плавающей точкой
Таблица 3.4. Представление величин с плавающей точкой Представление Пример ##.## 6.4 ##e[+-]## 8е-8 [##].##[e[+-]##] .04e8
Листинг 3 8 Допустимые вещественные значения
Листинг 3.8. Допустимые вещественные значения booktown=# SELECT .04 AS small_float. booktown-# -16.63 AS negative_float, booktown-# 4e3 AS exponent!al_float, booktown-# 6.1e2 AS neg
Логические константы
Логические константы Логические (булевы) константы гораздо проще всех остальных типов констант PostgreSQL, поскольку они принимают всего два допустимых значения: true и false. Встретив

Листинг 3 9 Различия между true и 'true'
Листинг 3.9. Различия между true и 'true' testdb=# SELECT true AS boolean_t. testdb-# 'true' AS string_t, testdb-# false AS boolean_f, testdb-# 'false' AS string_f; boo1_t | str
Специальные символы
Специальные символы Специальные символы имеют особое синтаксическое значение в PostgreSQL. По этой причине они обычно не могут использоваться в идентификаторах, хотя, как упоминалось вы
Синтаксические символы
Синтаксические символы Некоторые специальные символы выполняют в командах SQL примерно те же функции, что и знаки препинания в английском языке. В табл. 3.5 перечислены основные синтак
Таблица 3 5 Синтаксические символы
Таблица 3.5. Синтаксические символы Символ Определение * (звездочка) Выборка всех полей таблицы в команде SELECT, а также подсчет всех зап
Операторы
Операторы Другую категорию специальных символов составляют операторы, предназначенные для выполнения различных операций с идентификаторами или константами. Операторы могут использовать

Листинг 3 10 Операторы в командах SQL
Листинг 3.10. Операторы в командах SQL booktown=# SELECT * FROM books; id | title author_id | subject_id 7808 | The Shining |4156 | 9 156 | The Tell-Tale Heart| 15| 9 4513 | Dune |1
Таблица 3 6 Основные операторы PostgreSQL
Таблица 3.6. Основные операторы PostgreSQL Оператор Определение Математические операторы + Сложение двух чисел - Вычисление р
Комментарии
Комментарии Комментарием называется фрагмент обычного текста, оформленный специальным образом и внедренный в код SQL. Комментарии не влияют на выполнение программы, поскольку PostgreSQL
Листинг 3 11 Однострочные комментарии
Листинг 3.11. Однострочные комментарии testdb=# SELECT 'Test1 -- This can follow valid SQL tokens. testdb-# -- or be on a line of its own. testdb-# AS example; example Test (1 row)
Листинг 3 12 Многострочные комментарии

Листинг 3.12. Многострочные комментарии testdb=# SELECT 'Multi /* This comment extends across testdb-# * numerous lines, and can be testdb-# * /* nested safely */ */ testdb-# | '-te
Выводы
Выводы Итак, команда SQL состоит из отдельных лексем, каждая из которых может быть ключевым словом, идентификатором, защищенным идентификатором, константой или специальным символом. В
Таблица 3 7 Простой запрос SQL
Таблица 3.7. Простой запрос SQL SELECT id, name FROM states Тип лексемы Ключевое слово Идентификаторы К
Листинг 3 13 Пример запроса SQL
Листинг 3.13. Пример запроса SQL booktown=# SELECT Id, name FROM states; id | name 42 | Washington 51 I Oregon (2 rows) booktown=# В табл. 3.8 и 3.9 анализируется другая, более с
Таблица 3 8 Команда UPDATE с секцией SET
Таблица 3.8. Команда UPDATE с секцией SET UPDATE states SET id = 51 Ключевое слово Идентификатор
Таблица 3 9 Секция WHERE

Таблица 3.9. Секция WHERE WHERE name = 'Oregon' Ключевое слово Идентификатор Оператор Строковая константа
Листинг 3 14 Обновление таблицы командой UPDATE
Листинг 3.14. Обновление таблицы командой UPDATE booktown=# UPDATE states booktown-# SET id = 51 booktown-# WHERE name = 'Oregon'; UPDATE 1 booktown=# SELECT * FROM states
Типы данных
Типы данных SQL относится к категории языков с сильной типизацией. Это означает, что с любым объектом данных, представленным в PostgreSQL, связывается определенный тип, даже если на пер
Таблица 3 10 Типы данных PostgreSQL
Таблица 3.10. Типы данных PostgreSQL Тип данных Описание Стандарт Логические и двоичные типы данных boolean, bool Отдельная логическая вели
Псевдозначение NULL
Псевдозначение NULL Выше говорилось о том, что с каждым полем ассоциируется определенный тип данных и поле принимает значения только этого типа. Тем не менее существует значение, котор
Листинг 3 15 Пустые строки и NULL

Листинг 3.15. Пустые строки и NULL booktown=# SELECT id. title FROM books: id [ title 7808 | The Shining 156 | The Tell-Tale Heart 4513 | Dune 100 | 101 | (5 rows) booktown=#
Листинг 3 16 Пример использования NULL
Листинг 3.16. Пример использования NULL booktown=# SELECT isbn, publication FROM editions: isbn | publication 039480001X | 1957-03-01 0394800753 | 1949-03-01 0385121679 | (3
Логические значения
Логические значения Логическим значением называется простая структура данных, представляющая одну из двух величин: true или f al se. В PostgreSQL поддерживается тип данных boo! ean, оп
Таблица 3 11 Логические константы
Таблица 3.11. Логические константы True False true false 't' Т 'true' 'false' 'У' 'n'
Листинг 3 17 Простая таблица с логическими значениями
Листинг 3.17. Простая таблица с логическими значениями booktown=# CREATE TABLE daily_inventory (isbn text. in_stock boolean); CREATE booktown=# INSERT INTO dailyjnventory VALUES
Листинг 3 18 Выборка данных по логическому признаку

Листинг 3.18. Выборка данных по логическому признаку booktown=# SELECT * FROM dailyjnventory WHERE in_stock='yes': isbn in_stock 0385121679 | t 039480001X | t 044100590X t
Листинг 3 19 Неявная выборка по логическому значению
Листинг 3.19. Неявная выборка по логическому значению true booktown=# SELECT * FROM dailyjnventory WHERE in_stock; isbn | in_stock 0385121679 | t 039480001X | t 044100590X |
Листинг 3 20 Выборка по логическому значению false
Листинг 3.20. Выборка по логическому значению false booktown=# SELECT * FROM dailyjnventory WHERE in_stock = 'no'; isbn | in_stock 0451198492 f 0394900014 f (2 rows) booktown=#
Листинг 3 21 Исправление случайных значений NULL
Листинг 3.21. Исправление случайных значений NULL booktown=# UPDATE dailyjnventory SET in_stock = Т WHERE in_stock IS NULL; UPDATE 1