sql.md

Личный сайт Go-разработчика из Казани

Язык структурированных запросов (SQL) — это стандартный язык ISO для создания и работы с базами данных, хранящимися в наборе таблиц. Реализации обычно добавляют свои собственные расширения к языку; Сравнение различных реализаций SQL — хороший справочник по различиям в продуктах.

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

Некоторые команды ниже предполагают использование демонстрационного образца базы данных сотрудников от MySQL, доступного на GitHub. Следовательно, для повторения команд в локальном окружении он должен быть загружен. Файлы на GitHub — это скрипты с командами, схожие с командами ниже, которые создают и манипулируют таблицами и данными о сотрудниках вымышленной компании. Синтаксис для запуска этих скриптов будет зависеть от используемой вами реализации SQL. Обычно используется утилита, запускаемая из командной строки в вашей операционной системе.

1-- Комментарии начинаются с двух дефисов. Завершайте каждую команду 2-- точкой с запятой. 3 4-- SQL не учитывает регистр букв для ключевых слов. Примеры команд здесь 5-- следуют соглашению о написании в верхнем регистре, потому что 6-- это позволяет легче отличить их от имён баз, таблиц и колонок. 7 8-- Создание и удаление базы данных. Имена базы и таблицы чувствительны 9-- к регистру букв. 10CREATE DATABASE someDatabase; 11DROP DATABASE someDatabase; 12 13-- Список доступных баз. 14SHOW DATABASES; 15 16-- Выбор базы для работы. 17USE employees; 18 19-- Выбрать все строки и колонки из таблицы «departments» (отделы) текущей базы. 20-- В интерактивном режиме обычно результат будет выведен на экран. 21SELECT * FROM departments; 22 23-- Тот же запрос, что и выше, но выбор только колонок «dept_no» и «dept_name». 24-- Разбиение команд на несколько строк допустимо. 25SELECT dept_no, 26 dept_name FROM departments; 27 28-- В данном случае будут выбраны все колонки, но только первые 5 строк. 29SELECT * FROM departments LIMIT 5; 30 31-- Выбор названий отделов, содержащих подстроку «en». 32SELECT dept_name FROM departments WHERE dept_name LIKE '%en%'; 33 34-- Выбор всех колонок, где названия отделов начинаются на «S», 35-- после которой идёт ровно четыре символа. 36SELECT * FROM departments WHERE dept_name LIKE 'S____'; 37 38-- Выбор всех должностей из таблицы «titles», но без повторений. 39SELECT DISTINCT title FROM titles; 40 41-- В дополнение к предыдущему запросу результат будет отсортирован 42-- в алфавитном порядке (с учётом регистра). 43SELECT DISTINCT title FROM titles ORDER BY title; 44 45-- Показать число строк в таблице отделов. 46SELECT COUNT(*) FROM departments; 47 48-- Показать число строк, где название отдела содержит подстроку «en» 49SELECT COUNT(*) FROM departments WHERE dept_name LIKE '%en%'; 50 51-- Объединение информации из нескольких таблиц: 52-- В таблице «titles» перечислены должности, кто их занимал по номеру сотрудника, 53-- а также с какой даты по какую. Получим эту информацию, но используем номера 54-- сотрудников как ссылку на таблицу «employees», чтобы получить имя и фамилию 55-- каждого сотрудника. Выводим только 10 строк. 56SELECT employees.first_name, employees.last_name, 57 titles.title, titles.from_date, titles.to_date 58FROM titles INNER JOIN employees ON 59 employees.emp_no = titles.emp_no LIMIT 10; 60 61-- Список всех таблиц во всех базах. Реализации обычно предоставляют 62-- собственные сокращения, чтобы показать все таблицы текущей базы. 63SELECT * FROM INFORMATION_SCHEMA.TABLES 64WHERE TABLE_TYPE='BASE TABLE'; 65 66-- Создать таблицу с именем tablename1 и двумя колонками в текущей базе. 67-- Для колонок имеется множество параметров, таких как тип данных. 68CREATE TABLE tablename1 (fname VARCHAR(20), lname VARCHAR(20)); 69 70-- Вставляем строку данных в таблицу «tablename1». Предполагаем, что таблица 71-- настроена таким образом, чтобы принимать эти значения. 72INSERT INTO tablename1 VALUES('Richard','Mutt'); 73 74-- В таблице «tablename1» изменить значение fname на «John» 75-- для каждой строки, где колонка lname равна «Mutt». 76UPDATE tablename1 SET fname='John' WHERE lname='Mutt'; 77 78-- Удалить из таблицы «tablename1» строки, 79-- где значение колонки lname начинается с «M». 80DELETE FROM tablename1 WHERE lname like 'M%'; 81 82-- Удалить все строки из таблицы «tablename1». В итоге получим пустую таблицу. 83DELETE FROM tablename1; 84 85-- Удалить таблицу «tablename1» полностью. 86DROP TABLE tablename1;