Основные команды SQL, которые должен знать каждый программист. Синтаксис и справка по командам sql Команды для работы в sql
Любая концептуальная информация о реляционных базах данных и таблицах приносит пользу лишь в том случае, если вы знаете, как организовать взаимодействие с данными. Язык SQL состоит из структурированных команд, предназначенных для добавления, модификации и удаления данных из базы. Эти команды образуют основу для взаимодействия с сервером PostgreSQL.
Этот раздел посвящен "анатомии" команд SQL. В нем рассматриваются структурные компоненты команд, описываются функции каждого компонента и их взаимные связи. Стандартный клиент командной строки PostgreSQL, psql, выводит результаты выполнения команд в приведенных примерах.
Большинство примеров команд SQL относится к базе данных booktown . Весь вывод psql снабжается префиксом вида booktown=# .
В некоторых примерах используется тестовая база данных testdb . По умолчанию в приглашении psql выводится только имя базы данных и символы =# , означающие, что система готова к вводу новой команды (хотя вы увидите, что символ = динамически изменяется по мере отслеживания состояния входных данных SQL). В книге это приглашение приводится вместе с входными и выходными данными SQL, чтобы вам было проще освоиться с выводом клиента psql.
Клиент psql подробно описан в главе 4. Здесь он упоминается лишь для пояснения стиля примеров команд SQL.
Примечание
Схема базы данных booktown (вместе с примерами записей) находится в файле booktown.sql на компакт-диске. Чтобы установить эту базу данных, введите в приглашении командной строки команду psql - U postgres template! - f /mnt/cdrom/booktown.sql, где /mnt/cdrom - путь к смонтированному компакт-диску, a postgres - имя суперпользователя PostgreSQL
.
Анатомия команд SQL
Команды SQL всегда начинаются с действия (verb ) - слова или группы слов, описывающих выполняемую операцию. Кроме того, команда SQL обычно содержит одну или несколько секций, уточняющих ее смысл. В табл. 3.2 перечислены основные действия SQL.
Таблица 3.2 . Основные действия PostgreSQL.
Действие | Описание |
---|---|
CREATE DATABASE | Создание новой базы данных |
CREATE INDEX | Создание нового индекса для столбца таблицы |
CREATE SEQUENCE | Создание новой последовательности в существующей базе данных |
CREATE TABLE | Создание новой таблицы в существующей базе данных |
CREATE TRIGGER | Создание нового определения триггера |
CREATE VIEW | Создание нового представления для существующей таблицы |
SELECT | Выборка записей из таблицы |
INSERT | Вставка одной или нескольких новых записей в таблицу |
UPDATE | Модификация данных в существующих записях |
DELETE | Удаление существующих записей из таблицы |
DROP DATABASE | Уничтожение существующей базы данных |
DROP INDEX | Удаление индекса столбца из существующей таблицы |
DROP SEQUENCE | Уничтожение существующего генератора последовательности |
DROP TABLE | Уничтожение существующей таблицы |
DROP TRIGGER | Уничтожение существующего определения триггера |
DROP VIEW | Уничтожение существующего представления |
CREATE USER | Создание в системе новой учетной записи пользователя PostgreSQL |
ALTER USER | Модификация существующей учетной записи пользователя PostgreSQL |
DROP USER | Удаление существующей учетной записи пользователя PostgreSQL |
GRANT | Предоставление прав доступа к объекту базы данных |
REVOKE | Лишение прав доступа к объекту базы данных |
CREATE FUNCTION | Создание новой функции SQL в базе данных |
CREATE LANGUAGE | Создание нового определения языка в базе данных |
CREATE OPERATOR | Создание нового оператора SQL в базе данных |
CREATE TYPE | Создание нового типа данных SQL в базе данных |
SQL - один из самых распространенных языков программирования, для создания и управления базой данных, а также для проведения разнообразных действий с самими данными.
Как показывает практика, он довольно простой в освоении и максимально использует стандартную лексику английского языка. Как и любой другой язык программирования, SQL имеет собственную логику и синтаксис, набор основных команд и правила их использования.
Классификация команд языка SQL
Все стандартные можно рассматривать исходя из их назначения. Как основу внегласной классификации можно взять такие наборы, как:
Команды для построения запросов.
Команды встроенных процедур и функций.
Команды триггеров и системных таблиц.
Наборы комбинаций для работы с датой и строковыми переменными.
Команды для работы с данными и таблицами.
Данную классификацию можно продолжать до бесконечности, но основные наборы команды языка SQL будут построены именно исходя из этих типов.
Рассматривая классификацию языка, нельзя не упомянуть о том, что он является универсальным, о чем говорит сфера его использования. Этот язык программирования и его разновидности задействуются не только в стандартной среде, но и в других программах, которые, так или иначе, вы использовали.
Сферу использования SQL можно рассматривать с точки зрения офисного программного обеспечения, а именно MicrosoftAccess. Этот язык, а точнее, его разновидность — MySQL, позволяет администрировать базы данных в сети Internet. Даже среда разработки Oracle использует в основе своих запросов команды SQL.
Использование SQL в MicrosoftAccess
Одним из самых простых примеров использования языка для программирования баз данных считается пакет программного обеспечения MicrosoftOffice. Изучение этого программного продукта предусмотрено школьным курсом информатики, а в одиннадцатом классе рассматривается система управления базой данных MicrosoftAccess.
Именно при изучении этого приложения ученики знакомятся с языком разработки баз данных и получают базовое понимание всего в него входящего. SQL команды Access довольно примитивны, конечно же, если рассматривать их на профессиональном уровне. Выполнение таких команд очень простое, а создаются они в приспособленном редакторе кода.
Рассмотрим конкретный пример:
SELECT Pe_SurName
WHERE Pe_Name = "Мэри";
Исходя из синтаксиса команды можно понять, что она вернет пользователю фамилию человека, в данном случае женщины по имени Мэри, которая хранится в таблице базы данных Contacts.
Хоть и использование SQL в Access ограничено, иногда такие простые запросы очень сильно могут упростить выполнение поставленного задания.
Использование команд SQL в Oracle
Oracle - это, наверное, единственный серьезный конкурент Microsoft SQL Server. Именно данная среда разработки и управления постоянно приводит к совершенствованию функций программного продукта компании Microsoft, так как конкуренция - это двигатель прогресса. Несмотря на постоянное соперничество, команды SQL Oracle повторяют SQL. Стоит отметить, что хоть Oracle и считается практически полной копией SQL, логика этой системы и языка в целом считается проще.
Система Oracle при использовании определенного набора команд не имеет такой сложной структуры. Если рассматривать возможности данных сред разработки баз данных, Oracle не имеет сложной структуры вложенных запросов.
Такая разница позволяет во много раз ускорить работу с данными, но, в противовес, ведет к нерациональному использованию памяти, в некоторых отдельных случаях. Структура Oracle в основном построена на временных таблицах и их использовании. Как пример: команды SQL в данной системе строятся по аналогии со стандартами самого языка SQL, хотя незначительно и отличаются от него.
SELECTCONCAT(CONCAT(CONCAT(‘Сотрудник ‘, sname), CONCAT(SUBSTR(fname, 0, 1), SUBSTR(otch, 0, 1))), CONCAT(‘принятнаработу ‘, acceptdate)) FROM employees WHERE acceptdate > to_date(‘01.01.80′,’dd.mm.yyyy’);
Данный запрос вернет данные о сотрудниках, которые приняты на работу в определенный промежуток времени. Хоть структура запроса отличается, от выполнение команд SQL в этих системах похоже, за исключением мелких деталей.
Использование SQL в сети Internet
С появлением всемирной паутины, то есть интернета, сфера использования языка SQL расширяется. Как известно, в сети хранится масса информации, но она не хаотично расположена, а размещена на сайтах и серверах по определенным критериям.
За хранение информации в Интернете, как и в других местах, отвечают непосредственно базы данных, а сайты являются системами управления. Как правило, сайты и их программный код организованы на разных языках программирования, но в основе баз данных лежит одна из разновидностей SQL, а именно язык создания баз данных, ориентированный под веб-интерфейсы MySQL.
Синтаксис и основной набор команд этого языка полностью копируют привычный всем SQL, но с некоторыми своими дополнениями, которые и дают ему отличие от Microsoft tSQL Server.
Команды SQL полностью похожи не только по синтаксису, но и по стандартному набору служебных слов. Разница состоит только в вызове и структурировании запроса. Для примера можно рассмотреть запрос для создания новой таблицы, именно она является первым, чему учат детей в школах на информатике:
$link = mysqli_connect("localhost", "root", "", "tester");
if (!$link) die("Error");
$query = "create table users(
login VARCHAR(20),
password VARCHAR(20)
if (mysqli_query($link, $query)) echo "Таблица создана.";
elseecho "Таблица не создана: ".mysqli_error();
mysqli_close($link);
В результате выполнения такого запроса можно получить новую таблицу "Юзеры", в которой будет два поля: логин и пароль.
Синтаксис изменен под Вэб, но в основу положены команды MicrosoftSQLServer.
Построение запросов MicrosoftSQLServer
Выборка из таблиц определенного набора данных одна из основных задач SQL. Для таких операций предусмотрена команда select в SQL. Именно о ней пойдет речь ниже.
Правила построение команды очень просты, а сама команда select в SQL строится следующим образом. К примеру, есть таблица, в которой имеются данные о сотруднике, которая, к примеру, имеет имя Person. Поставим задачу, что из таблицы нужно выбрать данные о сотрудниках, дата рождения которых - в промежутке от первого января до первого марта текущего года включительно. Для такой выборки необходимо выполнить команду SQL, в которой будет не только стандартная конструкция, но и условие выбора:
Select * from Person
Where P_BerthDay >= ‘01/01/2016’ and P_BerthDay<= ‘03/01/2016’
Выполнение такой команды вернет все данные о сотрудниках, день рождения которых находится в том периоде, который был задан вами. Иногда может стоять задача вывести только фамилию, имя и отчество сотрудника. Для этого запрос нужно построить чуть иначе, например, таким образом:
SelectP_Name - имя
P_SurName - фамилия
P_Patronimic - отчество
Where P_BerthDay >= ‘01/01/2016’ and P_BerthDay<= ‘03/01/2016’
Однако это всего лишь выбор чего-либо. Он, по сути своей, не влияет ни на что, а лишь предоставляет информацию. Но если вы решили заняться языком SQL всерьез, вам придется научится вносить изменения в базы данных, так как их построение без этого попросту невозможно. Как это делается, будет рассмотрено чуть ниже.
Основные команды SQL для изменения данных
Синтаксис языка построен не только для выполнения запросов, но и для манипуляций с данными. В основном задачей программиста баз данных является написание скриптов для выборок и отчетов, но иногда необходимо вносить правки в таблицы. Список команд SQL для таких действий невелик и состоит из трех основных команд:
Insert (пер. Вставить).
Update (пер. Обновление).
Delete (пер. Удалить).
Назначение этих команд легко определить, для этого достаточно будет всего лишь перевести их название. Эти команды просты в использовании и имеют не сложную схему построения, но стоит упомянуть, что некоторые из них, при неправильном использовании, могут нанести непоправимый вред базе.
Как правило, перед использованием такие MSSQL команды нужно продумать, и учесть все возможные последствия их выполнения.
Выучив данные команды, вы сможете полноценно начать работу с таблицами баз данных, тем самым видоизменять ее и вносить какие-то новые перменные или же удалять старые.
Команда Insert
Для вставки данных в таблицу используется самая безопасная команда — Insert. Неправильно вставленные данные всегда можно удалить и внести в базу данных заново.
Команда Insert предназначена для вставки в таблицу новых данных и позволяет добавить как полный набор, так и выборочно.
Для примера рассмотрим команду вставки в ранее описанную таблицу Person. Для того чтобы внести данные в таблицу необходимо выполнить команду SQL, которая позволит вставить все данные в таблицу или заполнить ее выборочно.
Insert into person
Select ‘Григорьев’,’Виталий’,’Петрович’,’01/01/1988’
Команды такого плана автоматически заполняют все ячейки таблицы с указанными данными. Бывают ситуации, когда у сотрудника нет отчества, скажем, он по обмену приехал работать из Германии. В таком случае нужно выполнить команду вставки данных, которая занесет в таблицу только то, что необходимо. Синтаксис такой команды будет следующим:
Insertintoperson(P_Name, P_SurName ,P_BerthDay)
Values (‘Дэвид’, ‘Гук’,’02/11/1986’)
Такая команда заполнит только указанные ячейки, а все остальные будут иметь значение null.
Команда для изменения данных
Для изменения данных как всей строки, так и некоторых ячеек используется команда Update SQL. Выполнять такую команду нужно только с определенным условием, а именно точно указывать в какую строку по номеру необходимо внести изменения.
Команда Update SQL имеет несложный синтаксис. Для правильного использования необходимо указать, какие данные, в какой колонке и в какой записи стоит изменить. Далее составить скрипт и выполнить его. Рассмотрим пример. Нужно изменить дату рождения Дэвида Гука, который внесен в таблицу сотрудников под номером 5.
Set P_BerthDay = ’02/10/1986’ where P_ID = 5
Условие (в данном скрипте) не даст изменить дату рождения во всех записях таблицы, а обновит только нужные.
Именно этой командой программисты пользуются чаще всего, так как она позволяет изменять данные в таблице не нанося существенный вред всей информации.
Команды для использования встроенных процедур и функций
С помощью языка SQL можно не только строить запросы, но и создавать встроенные механизмы для работы с данными. Как правило, бывают моменты, когда нужно использовать в теле одного запроса выборку, написанную ранее.
Если судить логически, то нужно скопировать текст выборки и вставить в нужное место, но можно обойтись и более простым решением. Рассмотрим пример, когда на рабочем интерфейсе выведена кнопка для печати отчета, скажем в Excel. Эта операция будет выполняться по мере необходимости. Для таких целей служат встроенные хранимые процедуры. Команды в данном случае, заключаются в процедуру и вызываются с помощью команды SQLExec.
Предположим, что была создана процедура для вывода даты рождения сотрудников с ранее описанной таблицы Person. В таком случае нет необходимости писать весь запрос. Для получения необходимой информации достаточно выполнить команду Exec [имя процедуры] и передать необходимые для выборки параметры. Как пример можно рассмотреть механизм создания процедуры такого характера:
CREATEPROCEDUREPrintPerson
@DB smalldatetime
@DE smalldatetime
SELECT * from Person
FROM HumanResources.vEmployeeDepartmentHistory
WHERE P_BerthDay >= @DB and P_BerthDay <= @DE
ANDEndDateISNULL;
Данная процедура вернет все сведения о сотрудниках, день рождения которых будет находиться в заданном временном периоде.
Организация целостности данных. Триггеры
Некоторые MS SQL-команды, можно даже сказать, конструкции, позволяют не только организовать манипуляции с данными, но и обеспечить их целостность. Для таких целей в языке предназначены системные конструкции, которые создает сам программист. Это так называемые триггеры, которые смогут обеспечить контроль данных.
В этом случае для организации проверки условий используются стандартные команды SQL-запросов. В триггерах можно создавать массу условий и ограничений для работы с данными, которые помогут управлять не только доступом к информации, но и запретить удаление, изменение или вставку данных.
Типы команд SQL, которые можно использовать в триггере, не ограничены. Рассмотрим на примере.
Если описывать механизм создания триггера, то типы команд SQL здесь такие же, как при создании процедуры. Сам алгоритм будет описан ниже.
Первым делом нужно описать служебную команду для создания триггеров:
Указываем, для какой операции с данными (в нашем случае это операция изменения данных).
Следующим шагом будет указание таблиц и переменных:
declare @ID int. @Date smalldatetime @nID int. @nDatesmalldatetime
DEclare cursor C1 for select P_ID, P_BerthDay from Inserted
DEclare cursor C2 for select P_ID, P_BerthDay from deleted
Задаем шаги выбора данных. После, в теле курсоров прописываем условие и реакцию на него:
if @ID = @nID and @nDate = "01/01/2016"
sMasseges "Выполнить операцию невозможно. Дата не подходит"
Стоит упомянуть о том, что триггер можно не только создать, но и отключить на время. Такую манипуляцию может провести только программист, выполнив команды SQL SERVER:
altertablePERSONdisabletriggerall - для отключения всех триггеров, созданных для данной таблицы, и, соответственно, altertablePERSONenabletriggerall - для их включения.
Эти основные команды SQL используются чаще всего, но их комбинации могут быть самыми разнообразными. SQL - очень гибкий язык программирования и дает разработчику максимум возможностей.
Вывод
Из всего вышесказанного можно сделать единственный вывод: знание языка SQL просто необходимо тем, кто собирается всерьез заняться программированием. Он лежит в основе всех выполняемых операций как в интернете, так и в домашних базах данных. Именно поэтому будущий программист обязательно должен знать множество команд данного языка, так как лишь с их помощью можно, так сказать, общаться с компьютером.
Конечно, недостатки есть, как и во всем в этом мире, но они настолько незначительны, что просто меркнут перед достоинствами. Среди всех языков программирования SQL практически единственная в своем роде, ведь она является универсальной, и знания по написанию скриптов и кодов лежат в основе практически всех сайтов.
Главным достоинством SQL безоговорчно можно считать его простоту, ведь, как-никак, именно он внесен в школьную программу. С ним может справиться даже начинающий программист, толком не разбирающийся в языках.
Язык SQL или Structured Query Language (язык структурированных запросов) предназначен для управления данными в системе реляционных баз данных (RDBMS). В этой статье будет рассказано о часто используемых командах SQL, с которыми должен быть знаком каждый программист. Этот материал идеально подойдёт для тех, кто хочет освежить свои знания об SQL перед собеседованием на работу. Для этого разберите приведённые в статье примеры и вспомните, что проходили на парах по базам данных.
Обратите внимание, что в некоторых системах баз данных требуется указывать точку с запятой в конце каждого оператора. Точка с запятой является стандартным указателем на конец каждого оператора в SQL. В примерах используется MySQL, поэтому точка с запятой требуется.
Настройка базы данных для примеров
Создайте базу данных для демонстрации работы команд. Для работы вам понадобится скачать два файла: DLL.sql и InsertStatements.sql . После этого откройте терминал и войдите в консоль MySQL с помощью следующей команды (статья предполагает, что MySQL уже установлен в системе):
Mysql -u root -p
Затем введите пароль.
Выполните следующую команду. Назовём базу данных «university»:
CREATE DATABASE university;
USE university;
SOURCE Может понадобиться создать ограничения для определённых столбцов в таблице. При создании таблицы можно задать следующие ограничения: Можно задать больше одного первичного ключа. В этом случае получится составной первичный ключ. Создайте таблицу «instructor»: CREATE TABLE instructor (ID CHAR(5),
name VARCHAR(20) NOT NULL,
dept_name VARCHAR(20),
salary NUMERIC(8,2),
PRIMARY KEY (ID),
FOREIGN KEY (dept_name) REFERENCES department(dept_name));
Можно просмотреть различные сведения (тип значений, является ключом или нет) о столбцах таблицы следующей командой: DESCRIBE При добавлении данных в каждый столбец таблицы не требуется указывать названия столбцов. INSERT INTO SELECT используется для получения данных из определённой таблицы: SELECT Следующей командой можно вывести все данные из таблицы: SELECT * FROM В столбцах таблицы могут содержаться повторяющиеся данные. Используйте SELECT DISTINCT для получения только неповторяющихся данных. SELECT DISTINCT Можно использовать ключевое слово WHERE в SELECT для указания условий в запросе: SELECT В запросе можно задавать следующие условия: Попробуйте выполнить следующие команды. Обратите внимание на условия, заданные в WHERE: SELECT * FROM course WHERE dept_name=’Comp. Sci.’;
SELECT * FROM course WHERE credits>3;
SELECT * FROM course WHERE dept_name="Comp. Sci." AND credits>3;
Оператор GROUP BY часто используется с агрегатными функциями, такими как COUNT , MAX , MIN , SUM и AVG , для группировки выходных значений. SELECT Выведем количество курсов для каждого факультета: SELECT COUNT(course_id), dept_name
FROM course
GROUP BY dept_name;
Ключевое слово HAVING было добавлено в SQL потому, что WHERE не может быть использовано для работы с агрегатными функциями. SELECT Выведем список факультетов, у которых более одного курса: SELECT COUNT(course_id), dept_name
FROM course
GROUP BY dept_name
HAVING COUNT(course_id)>1;
ORDER BY используется для сортировки результатов запроса по убыванию или возрастанию. ORDER BY отсортирует по возрастанию, если не будет указан способ сортировки ASC или DESC . SELECT Выведем список курсов по возрастанию и убыванию количества кредитов: SELECT * FROM course ORDER BY credits;
SELECT * FROM course ORDER BY credits DESC;
BETWEEN используется для выбора значений данных из определённого промежутка. Могут быть использованы числовые и текстовые значения, а также даты. SELECT Выведем список инструкторов, чья зарплата больше 50 000, но меньше 100 000: SELECT * FROM instructor
WHERE salary BETWEEN 50000 AND 100000;
Оператор LIKE используется в WHERE , чтобы задать шаблон поиска похожего значения. Есть два свободных оператора, которые используются в LIKE: Выведем список курсов, в имени которых содержится «to» , и список курсов, название которых начинается с «CS-»: SELECT * FROM course WHERE title LIKE ‘%to%’;
SELECT * FROM course WHERE course_id LIKE "CS-___";
С помощью IN можно указать несколько значений для оператора WHERE: SELECT Выведем список студентов с направлений Comp. Sci., Physics и Elec. Eng.: SELECT * FROM student
WHERE dept_name IN (‘Comp. Sci.’, ‘Physics’, ‘Elec. Eng.’);
JOIN используется для связи двух или более таблиц с помощью общих атрибутов внутри них. На изображении ниже показаны различные способы объединения в SQL. Обратите внимание на разницу между левым внешним объединением и правым внешним объединением: SELECT Выведем список всех курсов и соответствующую информацию о факультетах: SELECT * FROM course
JOIN department
ON course.dept_name=department.dept_name;
Выведем список всех обязательных курсов и детали о них: SELECT prereq.course_id, title, dept_name, credits, prereq_id
FROM prereq
LEFT OUTER JOIN course
ON prereq.course_id=course.course_id;
Выведем список всех курсов вне зависимости от того, обязательны они или нет: SELECT course.course_id, title, dept_name, credits, prereq_id
FROM prereq
RIGHT OUTER JOIN course
ON prereq.course_id=course.course_id;
View - это виртуальная таблица SQL, созданная в результате выполнения выражения. Она содержит строки и столбцы и очень похожа на обычную SQL-таблицу. View всегда показывает самую свежую информацию из базы данных. Создадим view , состоящую из курсов с 3 кредитами: Эти функции используются для получения совокупного результата, относящегося к рассматриваемым данным. Ниже приведены общеупотребительные агрегированные функции: Вложенные подзапросы - это SQL-запросы, которые включают выражения SELECT , FROM и WHERE , вложенные в другой запрос. Найдём курсы, которые преподавались осенью 2009 и весной 2010 годов: SELECT DISTINCT course_id
FROM section
WHERE semester = ‘Fall’ AND year= 2009 AND course_id IN (SELECT course_id
FROM section
WHERE semester = ‘Spring’ AND year= 2010);
Кирилл Поздеев , переводчик
Как Яндекс использует ваши данные и машинное обучение для персонализации сервисов - . В этом приложении содержатся сокращённые описания различных команд SQL. Цель
состоит в том, чтобы дать вам быструю и точную справку и определение SQL. Первый раздел этого приложения определяет элементы, используемые для создания команд
SQL; второй - подробности синтаксиса и предложения с кратким описанием самих команд. Вот стандартные условные обозначения (они называются BNF-условиями): Кроме того, мы будем использовать следующую последовательность (.,..) чтобы указывать, что предшествующее этому может повторяться любое число раз, с
индивидуальными событиями, отделяемыми запятыми. Атрибуты, которые не являются частью официального стандарта, будут отмечены в описании как (*нестандартные*). Этот раздел определяет элементы команд SQL. Они разделены на две категории:
Основные элементы языка
и Функциональные элементы языка
. Основные элементы
- это создаваемые блоки языка; когда SQL исследует команду, то он сначала оценивает каждый символ в тексте команды в терминах
этих элементов. Разделитель Функциональные элементы
- это разнообразные элементы, отличающиеся от ключевых слов, которые могут интерпретироваться как модули. Это части команды,
отделяемые с помощью разделителей Перечисленные здесь являются общими элементами для всех описываемых команд. Функциональные элементы могут определяться в терминах друг друга или даже в собственных терминах. Например, предикат БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА
ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ
Здесь определён список различных типов предиката
{ Синтаксис
Список значений Синтаксис
Если совпадение произошло, Синтаксис
Синтаксис
Предложение SELECT подзапроса Синтаксис:
EXISTS
( Если подзапрос Этот раздел подробно описывает синтаксис различных команд SQL. Это даст вам возможность быстро отыскивать команду, находить синтаксис и краткое описание её работы. ИМЕЙТЕ ВВИДУ:
команды, которые начинаются словами - EXEC SQL, а также
команды или предложения, заканчивающиеся словом, Синтаксис
EXEC SQL BEGIN DECLARE SECTION Эта команда создает главный раздел программы для объявления в ней главных переменных, которые будут использоваться во вкладываемых операторах SQL.
Переменная SQLCODE должна быть включена как одна из объявляемых переменных главного языка. Синтаксис
EXEC SQL CLOSE CURSOR Эта команда указывает курсору закрыться, после чего ни одно значение не сможет быть выбрано из него до тех пор, пока он не будет снова открыт. Синтаксис
Эта команда оставляет неизменными все изменения, сделанных в базе данных, до тех пор, пока начавшаяся транзакция не закончится и не начнется новая транзакция. (*NONSTANDARD*) (НЕСТАНДАРТНАЯ) Синтаксис
CREATE INDEX Эта команда создает эффективный маршрут с быстрым доступом для поиска строк, содержащих указанные столбцы. Если UNIQUE указана, таблица не сможет содержать дубликаты (двойники) значений в этих столбцах. Синтаксис
CREATE IPUBLICl SYNONYM Эта команда создает альтернативное (синоним) имя таблицы. Синоним принадлежит его создателю, а сама таблица - обычно другому пользователю.
Используя синоним, его владелец может не ссылаться на таблицу её полным (с включением имени владельца) именем. Если PUBLIC указан, синоним принадлежит каталогу SYSTEM и, следовательно, доступен всем пользователям. Синтаксис
CREATE TABLE Команда создает таблицу в базе данных. Эта таблица будет принадлежать её создателю. Столбцы будут рассматриваться в поимённом порядке. Синтаксис
CREATE VIEW Просмотр обрабатывается как любая таблица в командах SQL. Когда команда
ссылается на имя таблицы Синтаксис
EXEC SQL DECLARE Эта команда связывает имя курсора Синтаксис
DELETE FROM Если предложение WHERE отсутствует, ВСЕ строки таблицы удаляются. Если предложение WHERE
использует предикат Синтаксис
EXEC SQL EXEC SQL используется, чтобы указывать начало всех команд SQL, вложенных в другой язык. Синтаксис
EXEC SQL FETCH FETCH принимает вывод из текущей строки запроса Синтаксис (стандартный)
GRANT ALL Аргумент ALL (ВСЕ), с или без PRIVILEGES (ПРИВИЛЕГИИ), включает каждую привилегию в список привилегий. PUBLIC (ОБЩИЙ) включает всех существующих
пользователей и всех созданных в будущем. Эта команда даёт возможность передать права для выполнения действий в таблице с указанным именем. REFERENCES
позволяет дать права на использование столбцов в списке столбцов Синтаксис (нестандартный)
GRANT DBA Привилегия Синтаксис
Команда отменяет все изменения в базе данных, сделанные в течение текущей транзакции. Она, кроме того, заканчивается текущую и начинает новую транзакцию. Синтаксис
SELECT { IDISTINCT | ALL] Это предложение организует запрос и выводит значения из базы данных (см.
Главы 3 - 14). Применяются следующие правила: Предложение SELECT оценивает каждую строку-кандидат таблицы, в которой строки
показаны независимо. Строка-кандидат определяется следующим образом: Каждая строка-кандидат производит значения,
которые делают предикат Синтаксис
Вывод двух или более запросов Синтаксис
UPDATE UPDATE изменяет значения в каждом столбце Синтаксис
EXEC SQL WHENEVER SQL - Структурированный Язык Запросов.
Описание
bigint
(int 8
) bigint
(int 8
) binary
(n) binary
(n) или image
character
national
character
или ntext
character varying
(синоним char varying varchar
) national character varying
или ntext
Datetime
datetime
decimal
он же numeric
double precision
double precision
integer
(int 4
) (синоним:int
) integer
(int 4
) national character
(синоним: national character
, nchar
) national character
Numeric
(сининимы: decimal
, dec
) national character varying
(синонимы: national char varying
, nvarchar
) National character varying
Smalldatetime
datetime
smallint
(int 2
) smallint
(int 2
) Smallmoney
sql_variant
Больше не поддреживается Ntext
Timestamp
Не поддреживается tinyint
(int 1
) tinyint
(int 1
) Uniqueidentifier
uniqueidentifier
varbinary
(n) varbinary
(n) или image
smalldatetime
datetime
smallint
(int 2
) smallint
(int 2
) smallmoney
sql_variant
Не поддерживается timestamp
Не поддерживается tinyint
(int 1
) tinyint
(int 1
) uniqueidentifier
uniqueidentifier
varbinary
(n) varbinary
(n) или image
Таблица типов данных в SQL Server 2000
Запрос
— команда, которую вы даете вашей программе базы данных. Запросы это часть языка DML. Все запросы в SQL состоят из одиночной команды. Структура этой команды обманчиво проста, потому что вы должны расширять ее так, чтобы выполнить высоко сложные оценки и обработки данных. SELECT
“Выбор” - самая часто используемая команда, с помощью её идет выборка данных из таблицы. SELECT id, user_name, city, birth_day FROM users_base;
Такой запрос выведет из таблицы users_base все значения столбцов указанных через запятую после команды SELECT. Также, можно выводить все столбцы одним символом, * т.е. SELECT * FROM users_base
; - такой запрос выведет все данные из таблицы. SELECT {Имена столбцов через запятую которые необходимо вывести в запросе} FROM {имя таблицы в базе данных} Значения могут быть помещены и удалены из полей, тремя командами языка DML (Язык Манипулирования Данными): INSERT INTO users_base (user_name, city, birth_day) VALUES (‘Александр’, ‘Ростов’, ’20.06.1991’); UPDATE users_base SET user_name = ‘Алексей’;
Команда UPDATE обновляет значения в таблице. Сначала идет сама команда UPDATE затем имя таблицы, после команда SET (установит) далее имя столбца и его значение в кавычках (кавычки ставятся в том случае если значение имеет string формат, если это числовое значение и столбец не привязан к типу данных vchar и любых других строковых типов, то кавычки не имеют смысла.) DELETE FROM users_base WHERE user_name = ‘Василий’;
Команда DELETE удаляет строку целиком, определяет строку по критерию WHERE (Где). В данном случае этот запрос удалил бы все строки, в которых значение столбца user_name было бы Василий. О критерии WHERE и других мы поговорим немного позже. WHERE- предложение команды SELECT и других DML команд, которое позволяет вам устанавливать предикаты, условие которых может быть или верным или неверным для любой строки таблицы. Команда извлекает только те строки из таблицы, для которых такое утверждение верно. ORDER BY - условие для сортировки выбранных строк. Имеет 2 критерия ASC и DESC. ASC (сортировка от А до Я или от 0 до 9) DESC (противоположно от ASC). Также это условие можно использовать совместно с условием WHERE. DISTINCT (Отличный) — аргумент, который обеспечивает вас способом устранять двойные значения из вашего предложения SELECT. Т.е. если у вас имеются повторные значения в столбце, допустим, user_name то DISTINCT выведет вам только одно, например у вас в базе есть 2 человека по имени Алексей то запрос с использованием функции DISTINCT выведет вам только 1 значение, которое встретит первым... AND - берет два Буля (в форме A AND B) как аргументы и оценивает их по отношению к истине, верны ли они оба. OR - берет два Буля (в форме A OR B) как аргументы и оценивает на правильность, верен ли один из них. SELECT * FROM users_base WHERE city = ‘Ростов’ OR user_name = ‘Александр’;
- выведет все значения из таблицы где в строке встречается название города Ростов или Имя пользователя Александр. NOT - берет одиночный Булев (в форме NOT A) как аргументы и заменяет его значение с неверного на верное или верное на неверное. IN - определяет набор значений в которое данное значение может или не может быть включено. Between - похож на оператор IN. В отличии от определения по номерам из набора, как это делает IN, BETWEEN определяет диапазон, значения которого должны уменьшаться что делает предикат верным. COUNT - производит номера строк или не NULL значения полей, которые выбрал запрос. SUM - производит арифметическую сумму всех выбранных значений данного поля. AVG - производит усреднение всех выбранных значений данного поля. MAX - производит наибольшее из всех выбранных значений данного поля. MIN - производит наименьшее из всех выбранных значений данного поля. CREATE TABLE users_base (id integer, user_name text, city text, birth_day datetime);
- выполнение такой команды приведёт к созданию таблицы, по которой я приводил примеры… Тут всё просто, пишем команду CREATE TABLE далее имя таблицы, которую хотим создать, далее в скобках через запятую имена столбцов и их тип данных. Это стандартный вид создания таблицы в SQL. Сейчас я приведу пример создания таблиц в SQL Server 2005: SET ANSI_NULLS ON При вознекновении вопросов по этой теме, пишите мне на мыло Команды для работы с базами данных
1. Просмотр доступных баз данных
SHOW DATABASES;
2. Создание новой базы данных
CREATE DATABASE;
3. Выбор базы данных для использования
USE 4. Импорт SQL-команд из файла.sql
SOURCE 5. Удаление базы данных
DROP DATABASE Работа с таблицами
6. Просмотр таблиц, доступных в базе данных
SHOW TABLES;
7. Создание новой таблицы
CREATE TABLE Ограничения целостности при использовании CREATE TABLE
Пример
8. Сведения о таблице
9. Добавление данных в таблицу
INSERT INTO 10. Обновление данных таблицы
UPDATE 11. Удаление всех данных из таблицы
DELETE FROM 12. Удаление таблицы
DROP TABLE Команды для создания запросов
13. SELECT
14. SELECT DISTINCT
15. WHERE
Пример
16. GROUP BY
Пример
17. HAVING
Пример
18. ORDER BY
Пример
19. BETWEEN
Пример
20. LIKE
SELECT Пример
21. IN
Пример
22. JOIN
Пример 1
Пример 2
Пример 3
23. View
Создание
CREATE VIEW Удаление
DROP VIEW Пример
24. Агрегатные функции
25. Вложенные подзапросы
Пример
ОБРАТИТЕ ВНИМАНИЕ: Терминология которую мы используем здесь - не является официальной
терминологией ANSI. Официальная терминология может вас сильно запутать, поэтому мы несколько ее упростили.
По этой причине мы иногда используем условия, отличающиеся от ANSI, или используем те же самые условия, но несколько по-иному. Например, наше
определение
ЭЛЕМЕНТЫ SQL
ФУНКЦИОНАЛЬНЫЕ ЭЛЕМЕНТЫ
Следующая таблица показывает функциональные элементы команд SQL и их определения:
ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ
|
[(
[(
{
[
ПРЕДИКАТЫ
AND
Подзапрос
Фраза A NOT IN (B, C) является эквивалентом фразы NOT (A IN (B, C)).
SQL КОМАНДЫ
BEGIN DECLARE SECTION (НАЧАТЬ РАЗДЕЛ ОБЪЯВЛЕНИЙ)
CLOSE CURSOR (ЗАКРЫТЬ КУРСОР)
COMMIT (WORK) (ПОДТВЕРДИТЬ (ТРАНЗАКЦИИ))
CREATE INDEX (СОЗДАТЬ ИНДЕКС)
ON (
CREATE SYNONYM (*NONSTANDARD*)
(СОЗДАТЬ СИНОНИМ) (*НЕСТАНДАРТНЫЙ*);
CREATE TABLE (СОЗДАТЬ ТАБЛИЦУ)
({
[
[
определяет тип данных, которые столбец будет содержать. Стандарт описывается в
Приложении B ; все прочие используемые типы данных обсуждались
в Приложении C . Значение размера
CREATE VIEW (СОЗДАТЬ ПРОСМОТР)
AS
;
, запрос
Некоторые
просмотры могут модифицироваться, что означает, что команды модификации могут
выполняться в этих просмотрах и передаваться в таблицу, на которую была ссылка в
запросе DECLARE CURSOR (ОБЪЯВИТЬ КУРСОР)
DELETE (УДАЛИТЬ)
{ ; }
| WHERE CURRENT OF , на
которую в данный момент имеется ссылка с помощью имени курсора
EXEC SQL (ВЫПОЛНИТЬ SQL)
FETCH (ВЫБОРКА/ИЗВЛЕЧЕНИЕ)
INTO GRANT (ПЕРЕДАТЬ ПРАВА)
| {SELECT
| INSERT
| DELETE
| UPDATE [(
| REFERENCES [(
ON . , . .
TO PUBLIC |
;
| RESOURCE
| CONNECT ... .
TO
|
FROM { PUBLIC
| ROLLBACK (WORK)
(ОТКАТ) (ТРАНЗАКЦИИ)SELECT (ВЫБОР)
FROM . , . .
. , . . ];
, состоит из имени таблицы,
включая префикс владельца, если текущий пользователь не владелец, или синоним
(нестандартно) таблицы. Таблица может быть или базовой таблицей, или просмотром.
В принципе псевдоним может указать, какой синонимом используется для таблицы,
только на время текущей команды. Имя таблицы или синоним должны отделяться от
псевдонима одним или более разделителями
включена, каждая
строка этой таблица в свою очередь является строкой-кандидатом.
включено, каждая
строка каждой таблицы должна быть скомбинирована, в свою очередь, с каждой
комбинацией строк из всех других таблиц. Каждая такая комбинация будет, в свою
очередь, строкой-кандидатом.
Если GROUP BY используется, строки-кандидаты комбинируются, используя агрегатные
функции. Если никакого предиката UNION (ОБЪЕДИНЕНИЕ)
UPDATE (МОДИФИКАЦИЯ)
SET {
{[ WHERE
| {
, находящиеся в
курсоре
WHENEVER (ВСЯКИЙ РАЗ КАК)
(последнее - нестандартное)
В данном обзоре мы рассмотрим наиболее часто встречающиеся виды SQL-запросов.
Стандарт SQL определяется ANSI
(Американским Национальным Институтом Стандартов
).
SQL — это язык, ориентированный специально на реляционные базы данных.Разделение SQL:
DDL
(Язык Определения Данных
)
— так называемый Язык Описания Схемы в ANSI, состоит из команд, которые создают объекты (таблицы, индексы, просмотры, и так далее) в базе данных.
DML
(Язык Манипулирования Данными
) — это набор команд, которые определяют, какие значения представлены в таблицах в любой момент времени.
DCD
(Язык Управления Данными
) состоит из средств, которые определяют, разрешить ли пользователю выполнять определенные действия или нет. Они являются составными частями DDL в ANSI. Не забывайте эти имена. Это не различные языки, а разделы команд SQL сгруппированных по их функциям.Типы данных:
SQL Server - Типы данных
(синоним char
)
Начиная с SQL Server 2005 не рекомендуется для использования.
ЧТО ТАКОЕ ЗАПРОС?
Команда SELECT:
Вид запроса с применением SELECT:Структура команды SELECT:
- это простейший вид запроса. Существуют дополнительные команды для удобства извлечения данных (см. далее “Функции”)DML команды:
INSERT
(Вставка)
UPDATE
(Обновление, модификация),
DELETE
(Удаление)Команда INSERT:
Команда INSERT идет вместе с приставкой INTO (in to - в), далее в скобках идут имена столбцов, в которые мы должны вставить данные, далее идет команда VALUES (значения) и в скобках по очереди идут значения (обязательно нужно соблюдать очередность значений со столбцами, значения должны идти в той же очередности, как и столбцы указанные вами).Команда UPDATE:
Команда DELETE:
Критерии, функции, условия и т.п. что помогает нам в SQL:
Пример:
SELECT id, city, birth_day FROM users_base WHERE user_name = ‘Алексей’;
- такой запрос выведет только те строки, которые будут соответствовать условию WHERE, а именно все строки в которых столбец user_name имеет значение Алексей.
Пример:
SELECT id, city, birth_day FROM users_base ORDER BY user_name ASC; - такой запрос выведет значения отсортированные по столбцу user_name от А до Я (A-Z; 0-9)
Пример:
SELECT id, city, birth_day FROM users_base WHERE user_name = ‘Алексей’ ORDER BY id ASC;
Пример:
SELECT DISTINCT user_name FROM users_base;
- такой запрос выведет нам значения всех записей в столбце user_name но они не будут повторяться, т.е. если вы имели бесконечное число повторяющихся значений, то они показаны не будут…
Пример:
SELECT * FROM users_base WHERE city = ‘Ростов’ AND user_name = ‘Александр’;
- выведет все значения из таблицы где в одной строке встречается название города (в данном случае Ростов и имя пользователя Александр.
SELECT * FROM users_base WHERE city = ‘Ростов’ OR NOT user_name = ‘Александр’;
- выведет все значения из таблицы где в одной строке встретится имя города Ростов или имя пользователя не будет ровно Александр.
SELECT * FROM users_base WHERE city IN (‘Владивосток’, ‘Ростов’);
- такой запрос выведет все значения из таблицы в которых встретятся наименования указанных городов в столбце city
SELECT * FROM users_base WHERE id BETWEEN 1 AND 10;
- выводит все значения из таблицы которые будут находиться в диапазоне от 1 до 10 в столбце id
SELECT COUNT (*) FROM users_base ;
- выведет количество строк в данной таблице.
SELECT COUNT (DISTINCT user_name) FROM users_base ;
- выведет кол-во строк с именами пользователей (не повторяющихся)
SELECT SUM (id) FROM users_base ;
- выведет сумму значений всех строк столбца id.
SELECT AVG (id) FROM users_base ;
- выведет среднее значение всех выбранных значений столбца id Создание таблиц:
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N".") AND type in (N"U"))
BEGIN
CREATE TABLE .(
NOT NULL,
NOT NULL,
NOT NULL,
PRIMARY KEY CLUSTERED
ASC
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N".") AND type in (N"U"))
BEGIN
CREATE TABLE .(
IDENTITY(1,1) NOT NULL,
NULL,
NULL,
PRIMARY KEY CLUSTERED
ASC
)WITH (IGNORE_DUP_KEY = OFF) ON
) ON TEXTIMAGE_ON
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N".") AND type in (N"U"))
BEGIN
CREATE TABLE .(
IDENTITY(1,1) NOT NULL,
NULL,
NULL,
PRIMARY KEY CLUSTERED
ASC
)WITH (IGNORE_DUP_KEY = OFF) ON
) ON
END
Синтаксис в SQL Server 2005 это уже другая тема, я просто хотел показать что я описал основы SQL программирования, до вершин вы сможете дойти сами зная основы.