learnxinyminutes-docs/ru-ru/sql-ru.html.markdown
2019-08-21 12:17:17 +05:30

104 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
language: SQL
filename: learnsql-ru.sql
contributors:
- ["Bob DuCharme", "http://bobdc.com/"]
translators:
- ["Shaltaev", "https://github.com/shaltaev"]
lang: ru-ru
---
Язык структурированных запросов (SQL) - это стандартный язык ISO для создания и работы с базами данных, хранящимися в наборе таблиц. Реализации обычно добавляют свои собственные расширения к языку; [Сравнение различных реализаций SQL](http://troels.arvin.dk/db/rdbms/) хороший справочник по различиям в продуктах.
Реализации обычно предоставляют приглашение командной строки, где вы можете вводить команды (описанные ниже) в интерактивном режиме, также есть способ выполнить серию этих команд, сохраненных в файле сценария. (Результат того, что вы сделали с помощью интерактивного режима, является хорошим примером того, что не стандартизировано - большинство реализаций SQL поддерживают ключевые слова QUIT, EXIT или оба.)
Некоторый команды ниже предполагают использование [демонстрационный образец базы данных сотрудников от MySQL](https://dev.mysql.com/doc/employee/en/) доступный на [github](https://github.com/datacharmer/test_db) следовательно для повторения команд в локальном окружении он должен быть загружен. Файлы и скрипты на github, схожи с командами ниже, которые манипулируют базами, таблицами и данными. Синтаксис для запуска этих сценариев будет зависеть от используемой вами реализации SQL. Способ запуска из командной строки обычный для вашей операционной системе.
```sql
-- Комментарии начинаются с двух дефисов. Завершите каждую команду
-- точкой с запятой.
-- SQL не учитывает регистр ключевых слов. Образцы команд здесь
-- следуйте соглашению о написании их в верхнем регистре, потому что
-- это позволяет легче их отличить от имен баз, таблиц и колонок.
-- Создание и удаление базы данных. Имена базы и таблицы чувствительны
-- к регистру.
CREATE DATABASE someDatabase;
DROP DATABASE someDatabase;
-- Список доступных баз.
SHOW DATABASES;
-- Выбор базы для работы.
USE employees;
-- Выбрать все колонки и строки из таблицы текущей базы.
-- В интерактивном режиме обычно результат будет выведен на экран.
SELECT * FROM departments;
-- Тот же запрос что и вышеБ но выбор только колонок dept_no и dept_name.
-- Разбиение команд на несколько строк допустимо.
SELECT dept_no,
dept_name FROM departments;
-- В данном случае будут выбраны только первые 5 результатов.
SELECT * FROM departments LIMIT 5;
-- Выбор имен депортаментов где имена содержат в себе 'en'.
SELECT dept_name FROM departments WHERE dept_name LIKE '%en%';
-- Выбор всех колонок где имена начинаются 'S' и 4 любых символа после.
SELECT * FROM departments WHERE dept_name LIKE 'S____';
-- Выбор всех должностей, но без повторений.
SELECT DISTINCT title FROM titles;
-- В дополнение к предыдущему запросу результат будет отсортирован
-- в алфавитном порядке (С учетом регистра).
SELECT DISTINCT title FROM titles ORDER BY title;
-- Вычислить количество строк в таблице депортамента.
SELECT COUNT(*) FROM departments;
-- Вычислить количество строк где имя депортамента содержит 'en'
-- в любой части имени.
SELECT COUNT(*) FROM departments WHERE dept_name LIKE '%en%';
-- ОБЪЕДИНЕНИЕ информации из нескольких таблиц: должность, когда ее занимал,
-- имя и фамилия сотрудника, объединить по идентификатору сотрудника
-- вывести только 10 строк.
SELECT employees.first_name, employees.last_name,
titles.title, titles.from_date, titles.to_date
FROM titles INNER JOIN employees ON
employees.emp_no = titles.emp_no LIMIT 10;
-- Список всех таблиц во всех базах. Реализации обычно предоставляют
-- их собственные сокращения чтобы сделать это для текущей базы.
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE';
-- Создать таблицу с именем tablename1, с двумя колонками, для колонок
-- доступно множество опций вроде типа и других, конкретнее уточняйте для
-- своей реализации.
CREATE TABLE tablename1 (fname VARCHAR(20), lname VARCHAR(20));
-- Вставляем строку в таблице созданную в предыдущем запросе .
INSERT INTO tablename1 VALUES('Richard','Mutt');
-- В tablename1, изменить значение fname на 'John'
-- для каждой строки где lname имеет значение 'Mutt'.
UPDATE tablename1 SET fname='John' WHERE lname='Mutt';
-- Удалить строки из таблицы tablename1
-- где lname начинается с 'M'.
DELETE FROM tablename1 WHERE lname like 'M%';
-- Удалить все строки из таблицы tablename1, в итоге получим пустую таблицу.
DELETE FROM tablename1;
-- Удалить таблицу tablename1.
DROP TABLE tablename1;
```