Upload
cs-center
View
226
Download
4
Embed Size (px)
Citation preview
Простейшие конструкции языка SQL
Дмитрий Барашев13 сентября 2016 г.
Computer Science Center
Этот материал распространяется под лицензией
Creative Commons”Attribution - Share Alike” 3.0
http://creativecommons.org/licenses/by-sa/3.0/us/deed.ru
сверстано в онлайн LATEX редакторе Папирия
P
a
peeriapapeeria.com
Реляционная СУБД
Язык SQL
Создание и удаление таблиц
3/25
• Каждому нетривиальному приложению нужногде-то хранить настройки и пользовательскиеданные
• Сложность системы хранения варьируется
4/25
• Простое приложение и мало данных:plaintext/json/XML/CSV файл, читается полностьюв память, целиком перезаписывается приобновлениях
• Два приложения, читающие данные одногоформата: библиотека для чтения/записи
• Рост количества данных и конкурентный доступ:дробление данных на файлы, какие-топримитивы синхронизации
• Конкурентный доступ с разных машин: созданиесервера, управляющего данными
• Сервер предоставляет пользователям модельданных и язык запросов 5/25
• Реляционная СУБД – система управления базамиданных, состоящих из таблиц
6/25
• Основной элемент – таблица• У таблицы есть схема: имя и набор столбцов• У столбца есть имя (уникальное в пределахтаблицы) и тип данных
• Когда вы создаёте таблицу, вы определяете еёсхему
• Данные хранятся в строках таблицы
7/25
• Схема таблицы – определение класса• Строка таблицы – объект, экземпляр класса
8/25
• Схема – пространство имён таблиц• База данных – совокупность таблиц и схем• Кластер или экземпляр – совокупность базданных под управлением одного сервера
9/25
• Пользователи определяются для всего сервера• Пользователь может иметь или не иметь права надоступ и модификацию каких-то объектов
• Суперпользователи могут управлять правамидругих пользователей
10/25
• Открытые: MySQL, PostgreSQL, SQLite• Коммерческие: Oracle, IBM DB2, Microsoft SQLServer
• Тыщи их¹• Мы используем PostgreSQL
¹https://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems
11/25
• sudo apt-get install postgresql
• Инсталлятор для Windows• Докеровский образ:https://hub.docker.com/_/postgres/
12/25
• Создание базы данных и пользователя вPostgreSQL
13/25
Реляционная СУБД
Язык SQL
Создание и удаление таблиц
14/25
• «Стандартизован» несколькими версиямистандартов, нумерованных годом (SQL-2011 самыйсвежий) и несколькими уровнями поддержки
• Реализации стандартов такие реализации• Диалекты SQL – сильно схожи, но у каждой естькакое-нибудь существенное отличие от других.Начиная с того, как реализован boolean
15/25
Реляционная СУБД
Язык SQL
Создание и удаление таблиц
16/25
• Целочисленные: INTEGER, BIGINT, SMALLINT
• Вещественные с фиксированной точкой:NUMERIC, DECIMAL
• Вещественные с плавающей точкой: FLOAT,REAL, DOUBLE PRECISION
• Строковые: CHARACTER, CHARACTER VARYING,CLOB
• Дата и время: DATE, TIME, TIMESTAMP
• Булевский: BOOLEAN
17/25
Простая версия. Полная версия в документацииПостгреса²
CREATE TABLE table_name (<column_list>);
column_list := <column_def>[, ...]
column_def :=column_name <data_type> [<column_constraint>]
data_type := INTEGER | BIGINT | FLOAT | ...
DROP TABLE table_name;
²https://www.postgresql.org/docs/current/static/sql-createtable.html 18/25
1 CREATE TABLE Foo();2 CREATE TABLE FooBar(INTEGER);3 CREATE TABLE Baz(id INTEGER, value FLOAT,);
19/25
• Создание таблицы• Повторное создание таблицы• Удаление таблицы• Изменение схемы методом «удали и создай»
20/25
1 INSERT INTO Foo(id, value) VALUES (1, 100);2 INSERT INTO Foo(value, id) VALUES (200, 2), (300, 3);
21/25
Основная конструкция в SQL-запросах:SELECT-FROM-WHERE
1 SELECT * FROM Foo WHERE id=1;2 SELECT id FROM Foo WHERE value<300;
Операторы сравнения: =, !=, <>, <, >, <=. >=
Логические операторы: AND, OR, NOT
22/25
Допустим, значения каких-то атрибутов намнеизвестны
1 CREATE TABLE Student(id INT, name TEXT, age INT);2 INSERT INTO Student(id, name, age)3 VALUES (1, ’Bob’, 21), (2, ’Alice’, NULL);4 SELECT * FROM Student WHERE age<>21;5
23/25
1 SELECT NULL=1;2 SELECT NULL!=1;3 SELECT NULL=NULL;4 SELECT NULL != NULL;
24/25
1 SELECT NULL IS NULL;
25/25