Transcript
Page 1: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

Простейшие конструкции языка SQL

Дмитрий Барашев13 сентября 2016 г.

Computer Science Center

Page 2: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

Этот материал распространяется под лицензией

Creative Commons”Attribution - Share Alike” 3.0

http://creativecommons.org/licenses/by-sa/3.0/us/deed.ru

сверстано в онлайн LATEX редакторе Папирия

P

a

peeriapapeeria.com

Page 3: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

Реляционная СУБД

Язык SQL

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

3/25

Page 4: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

• Каждому нетривиальному приложению нужногде-то хранить настройки и пользовательскиеданные

• Сложность системы хранения варьируется

4/25

Page 5: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

• Простое приложение и мало данных:plaintext/json/XML/CSV файл, читается полностьюв память, целиком перезаписывается приобновлениях

• Два приложения, читающие данные одногоформата: библиотека для чтения/записи

• Рост количества данных и конкурентный доступ:дробление данных на файлы, какие-топримитивы синхронизации

• Конкурентный доступ с разных машин: созданиесервера, управляющего данными

• Сервер предоставляет пользователям модельданных и язык запросов 5/25

Page 6: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

• Реляционная СУБД – система управления базамиданных, состоящих из таблиц

6/25

Page 7: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

• Основной элемент – таблица• У таблицы есть схема: имя и набор столбцов• У столбца есть имя (уникальное в пределахтаблицы) и тип данных

• Когда вы создаёте таблицу, вы определяете еёсхему

• Данные хранятся в строках таблицы

7/25

Page 8: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

• Схема таблицы – определение класса• Строка таблицы – объект, экземпляр класса

8/25

Page 9: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

• Схема – пространство имён таблиц• База данных – совокупность таблиц и схем• Кластер или экземпляр – совокупность базданных под управлением одного сервера

9/25

Page 10: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

• Пользователи определяются для всего сервера• Пользователь может иметь или не иметь права надоступ и модификацию каких-то объектов

• Суперпользователи могут управлять правамидругих пользователей

10/25

Page 11: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

• Открытые: MySQL, PostgreSQL, SQLite• Коммерческие: Oracle, IBM DB2, Microsoft SQLServer

• Тыщи их¹• Мы используем PostgreSQL

¹https://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems

11/25

Page 12: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

• sudo apt-get install postgresql

• Инсталлятор для Windows• Докеровский образ:https://hub.docker.com/_/postgres/

12/25

Page 13: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

• Создание базы данных и пользователя вPostgreSQL

13/25

Page 14: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

Реляционная СУБД

Язык SQL

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

14/25

Page 15: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

• «Стандартизован» несколькими версиямистандартов, нумерованных годом (SQL-2011 самыйсвежий) и несколькими уровнями поддержки

• Реализации стандартов такие реализации• Диалекты SQL – сильно схожи, но у каждой естькакое-нибудь существенное отличие от других.Начиная с того, как реализован boolean

15/25

Page 16: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

Реляционная СУБД

Язык SQL

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

16/25

Page 17: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

• Целочисленные: INTEGER, BIGINT, SMALLINT

• Вещественные с фиксированной точкой:NUMERIC, DECIMAL

• Вещественные с плавающей точкой: FLOAT,REAL, DOUBLE PRECISION

• Строковые: CHARACTER, CHARACTER VARYING,CLOB

• Дата и время: DATE, TIME, TIMESTAMP

• Булевский: BOOLEAN

17/25

Page 18: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

Простая версия. Полная версия в документацииПостгреса²

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

Page 19: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

1 CREATE TABLE Foo();2 CREATE TABLE FooBar(INTEGER);3 CREATE TABLE Baz(id INTEGER, value FLOAT,);

19/25

Page 20: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

• Создание таблицы• Повторное создание таблицы• Удаление таблицы• Изменение схемы методом «удали и создай»

20/25

Page 21: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

1 INSERT INTO Foo(id, value) VALUES (1, 100);2 INSERT INTO Foo(value, id) VALUES (200, 2), (300, 3);

21/25

Page 22: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

Основная конструкция в SQL-запросах:SELECT-FROM-WHERE

1 SELECT * FROM Foo WHERE id=1;2 SELECT id FROM Foo WHERE value<300;

Операторы сравнения: =, !=, <>, <, >, <=. >=

Логические операторы: AND, OR, NOT

22/25

Page 23: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

Допустим, значения каких-то атрибутов намнеизвестны

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

Page 24: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

1 SELECT NULL=1;2 SELECT NULL!=1;3 SELECT NULL=NULL;4 SELECT NULL != NULL;

24/25

Page 25: Базы данных, осень 2016: Краткое введение в базы данных и SQL программирование

1 SELECT NULL IS NULL;

25/25