Файл: Тема концепция управления данными в современных информационных системах Цель лекции.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.11.2023
Просмотров: 239
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ТЕМА 7. Язык SQL: команды языка манипулирования данными
Цель лекции: изучить команды языка манипулирования данными
Ключевые слова: оператор, добавление, удаление, обновление, выбор, вставка, предложение, таблица, строка, сортировка, группировка, запрос, поле, ключевое слово.
План лекции
1. Подмножество языка DML: операторы SELECT, INSERT, UPDATE, DELETE
2. Сортировка и группировка в операторе SELECT
3. Составление запросов
1. Оператор SELECT читает данные из базы данных и возвращает их в виде таблицы результата запроса.
Выбор данных представляет собой наиболее часто встречающуюся операцию, выполняемую с помощью SQL. Оператор SELECT — один из самых важных операторов этого языка, применяемый для выбора данных. Синтаксис этого оператора имеет следующий вид:
SELECT column-list FROM table-list [WHERE where-clause] [ORDER BY order-by-clause]
Операторы SELECT должны содержать слова SELECT и FROM; другие ключевые слова, такие как WHERE или ORDER BY, являются необязательными. К необязательным также относятся GROUP BY, HAVING.
Ключевые слова – это так называемые предложения (clause) – специфические кодовые слова, формирующие наиболее важные блоки внутри оператора SELECT.
За ключевым словом SELECT следуют сведения о том, какие именно поля необходимо включить в результирующий набор данных. Звездочка (*) обозначает все поля таблицы.
Изменение данных в SQL выполняются операторами INSERT, DELETE и UPDATE, которые осуществляют соответственно добавление в таблицу новых строк, удаление строк из таблицы, обновление данных в таблице.
Оператор INSERT
Оператор INSERT позволяет вставлять в таблицу как отдельные строки путем указания значений для каждого столбца, так и множество строк, взятых из другой таблицы с помощью оператора SELECT. Синтаксис оператора INSERT имеет вид:
INSERT [INTO] table ( [column_list] { VALUES ( { DEFAULT | NULL | expression } } [, …] )
Например, для добавления нового клиента в таблицу Customers можно использовать следующий запрос:
INSERT INTO Customers (CustomerID, CompanyName) VALUES (‘XYZFO’, ‘XYZ Deli’)
Оператор INSERT состоит из двух предложений - INTO и VALUES. В предложении INTO указывается таблица, в которую добавляется новая строка, а в предложении VALUES содержатся значения данных для новой строки. Кроме того, в предложении INTO может быть указан список столбцов, в которые заносятся данные, перечисленные в предложении VALUES. Количество и типы констант, указанных в предложении VALUES, должны соответствовать этим столбцам. Если список столбцов в предложении INTO не указывается, то подразумеваются все столбцы таблицы и в предложении VALUES константы задаются для всей строки.
Пример
В таблицу Salespeople добавить запись об агенте Nancy, проживающей в городе Atlanta, и присвоить ей код 1005, код менеджера - 1003
INSERT INTO Salespeople VALUES(1005, 'Nancy', 'Atlanta',1003)
Список столбцов в запрашиваемой таблице и список столбцов, указываемый в команде INSERT, должны соответствовать друг другу, как по количеству, так и по типам.
Пример
В таблицу Salespeople добавить таблицу Customers INSERT INTO Salespeople
SELECT Cnum, Cname, City, 0 FROM Customers.
Оператор DELETE
Для удаления строк из таблиц следует использовать оператор DELETE, синтаксис которого имеет вид:
DELETE FROM table [WHERE criteria]
В предложении FROM указывается таблица, содержащая строки, которые требуются удалить. Оператор DELETE может содержать предложение WHERE, где задаются условия отбора удаляемых строк, аналогичное условию поиска в операторе SELECT. Если предложения WHERE нет в операторе DELETE, то удаляются все строки исходной таблицы.
Пример
Из таблицы Salespeople удалить запись об агенте с кодом 1005
DELETE FROM Salespeople WHERE Snum=1005.
Для удаления из списка всех продуктов, которые больше не поставляются, можно выполнить следующий запрос:
DELETE FROM Products WHERE Discontinued = 1
Отметим, что полезно использовать оператор SELECT с тем же синтаксисом, что и оператор DELETE, чтобы проверить, какие именно записи будут удалены, прежде чем действительно их удалять. Ниже показан оператор SELECT для приведенного выше запроса на удаление данных:
SELECT ProductName FROM Products WHERE Discontinued = 1
Можно использовать в предложении WHERE более сложный критерий для определения того, какие записи должны быть удалены. Предположим, нам нужно удалить из списка клиентов тех из них, кто не имел заказов до определенной даты. Сначала для этого следует выполнить следующий SELECT, чтобы определить, что именно мы удаляем:
SELECT CompanyName FROM Customers WHERE Customers. CustomerID NOT IN (SELECT CustomerID FROM Orders WHERE OrderDate > 01/01/15).
А затем заменить оператор SELECT на оператор DELETE:
DELETE FROM Customers WHERE Customers.CustomerID NOT IN (SELECT CustomerID FROM Orders WHERE OrderDate > 01/01/15).
Оператор UPDATE
Для изменения значений в одной или нескольких колонках таблицы применяется оператор UPDATE. Синтакcис этого оператора имеет вид:
UPDATE tableSET column1 = expression1 [, column2 = expression2] [,…] [WHERE criteria].
Выражение в предложении SET может быть константой или результатом вычислений. Например, для повышения цен всех продуктов, стоящих меньше 10 долл., можно выполнить следующий запрос:
UPDATE Products SET UnitPrice = UnitPrice * 1.1 WHERE UnitPrice < 10.
Оператор UPDATE с предложением SET представляет собой список операций присваивания, где в каждой операции
указанный столбец получает новое значение, равное значению выражения. При этом в выражении могут участвовать старые значения этих столбцов. В предложении WHERE указывается условие поиска строк, в которых требуется обновить значения указанных столбцов. Если в операторе UPDATE предложение WHERE отсутствует, то значение столбцов обновляются во всех стоках исходной таблицы.
Пример
В таблице Customers у заказчика с кодом 2003 изменить адрес на 'Chicago'
UPDATE Customers SET City='Chicago' WHERE Cnum=2003
2. Предложение ORDER BY
Предложение ORDER BY (необязательное) применяется для сортировки результирующего набора данных по одной или нескольким колонкам. Для определения порядка сортировки используются ключевые слова ASC (по возрастанию) или DESC (по убыванию). По умолчанию данные сортируются по возрастанию. Синтаксис предложения ORDER BY имеет вид:
ORDER BY column1 [{ASC | DESC}] [, column2 [{ASC | DESC}] [,…].
Например, для сортировки сотрудников по фамилии и затем по имени следует использовать следующий SQL-запрос:
SELECT LastName, FirstName, Title FROM Employees ORDER BY LastName, FirstName.
Если сортировка данных требуется в убывающем порядке (например, требуется список продуктов в порядке убывания цен), используется ключевое слово DESC:
SELECT ProductName, UnitPrice FROM Products ORDER BY UnitPrice DESC.
Предложение GROUP BY
Для вычисления суммарных значений на основе данных одной или нескольких таблиц можно использовать предложение GROUP BY, имеющее такой синтаксис:
GROUP BY {column1} [, …]
Например, следующий запрос связывает две таблицы, сортирует их по полю CustomerID, для каждого значения CustomerID создает одну строку в результирующем наборе данных и вычисляет количество значений поля OrderID для каждого значения CustomerID:
SELECT Customers.CustomerID, COUNT (Orders.OrderID) FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID GROUP BY Customers.CustomerID.
В приведенном выше примере запроса мы использовали в предложении SELECT агрегатную функцию COUNT, вычисляющую количество значений.
3.SELECT является наиболее часто используемым оператора языка SQL. Это команда задает «вопросы» базе данных – вот почему SQL называется «языком запросов».
Запросы - это наиболее часто используемый момент в SQL. ведь этот язык для них и был создан. Запрос представляет собой некую команду, которая обращается к БД и сообщает ей, чтобы она отобразила определенную информацию из таблиц в память. Эта информация обычно выводится непосредственно на экран компьютера, терминал, посылается принтеру, сохраняется в файле или служит исходными данными для другой команды или запроса.
Все запросы в SQL состоят из одиночной команды SELECT с достаточно простой структурой, однако путем ее использования можно выполнить сложную обработку данных. В самой простой форме, команда SELECT просто обращается к БД, чтобы извлечь информацию из таблицы. Например, можно вывести таблицу студентов, дав следующий запрос:
SELECT SNUM, SFAM, SIMA, SOTCH, STIP FROM STUDENTS;
Другими словами, эта команда просто выводит все данные из таблицы. Большинство программ, работающих с языком SQL, выдают заголовки полей, поэтому в дальнейшем результаты будут приводиться именно в такой форме.
Детально поясним каждую часть этой команды:
SELECT - ключевое слово, которое сообщает БД, что эта команда является запросом, т.е. все запросы начинаются этим словом.
SNUM, SFAM, S1MA, SOTCH, STIP - список полей из таблицы, которые выбираются запросом. Поля, не перечисленные здесь, не будут включены в вывод команды, но это, разумеется, не означает, что они будут удалены или информация в них будет стерта из таблиц. Запрос не воздействует на информацию в таблицах; он только показывает данные.
FROM STUDENTS - ключевое слово, подобно SELECT, которое должно быть представлено в каждом запросе. Оно сопровождается пробелом и затем именем таблицы используемой в качестве источника информации. В данном случае - это таблица студентов STUDENTS.
Точка с запятой (;) используется во всех интерактивных командах SQL для сообщения БД, что команда заполнена и готова выполниться, а в некоторых системах наклонная черта (\) в строке является индикатором конца команды.
Очевидно, запрос такого характера не обязательно будет упорядочивать вывод любым указанным способом. Та же самая команда, выполненная с теми же самыми данными, но в разное время не сможет вывести результат в одинаковом порядке. Обычно строки обнаруживаются в том порядке, в котором они найдены в таблице, а поскольку он произволен, то совсем не обязательно будет сохраняться тот порядок, в котором данные вводились или сохранялись. Допускается упорядочивать вывод командами SQL с помощью специального предложения, о котором пойдет речь ниже, а сейчас необходимо иметь в виду, что в отсутствие явного упорядочения нет никакого определенного порядка в выводе результатов запроса.
Если необходимо получить каждое поле таблицы, имеется необязательное сокращение в виде символа "звездочка" (*), как отмечалось выше, которое можно использовать для вывода полного списка полей следующим образом:
SELECT * FROM_STUDENTS;
что приведет к тому же результату, что и предыдущая команда. В общем случае запрос начинается с ключевого слова SELECT, сопровождаемого пробелом. После этого должен следовать список разделенных запятыми имен полей, которые необходимо вывести.
Ключевое слово FROM, следующее далее, сопровождается пробелом и именем таблицы, запрос к которой делается. В заключение точка с запятой должна использоваться для того, чтобы закончить запрос и указать что команда готова к выполнению.
Команда SELECT способна извлечь строго определенную информацию из таблицы Например, при необходимости вывода только определенных полей таблицы, просто из списка исключаются не нужные поля. Например, запрос
SELECT SNUM, SFAM, STIP FROM_STUDENTS;
будет производить следующий вывод:
Цель лекции: изучить команды языка манипулирования данными
Ключевые слова: оператор, добавление, удаление, обновление, выбор, вставка, предложение, таблица, строка, сортировка, группировка, запрос, поле, ключевое слово.
План лекции
1. Подмножество языка DML: операторы SELECT, INSERT, UPDATE, DELETE
2. Сортировка и группировка в операторе SELECT
3. Составление запросов
1. Оператор SELECT читает данные из базы данных и возвращает их в виде таблицы результата запроса.
Выбор данных представляет собой наиболее часто встречающуюся операцию, выполняемую с помощью SQL. Оператор SELECT — один из самых важных операторов этого языка, применяемый для выбора данных. Синтаксис этого оператора имеет следующий вид:
SELECT column-list FROM table-list [WHERE where-clause] [ORDER BY order-by-clause]
Операторы SELECT должны содержать слова SELECT и FROM; другие ключевые слова, такие как WHERE или ORDER BY, являются необязательными. К необязательным также относятся GROUP BY, HAVING.
Ключевые слова – это так называемые предложения (clause) – специфические кодовые слова, формирующие наиболее важные блоки внутри оператора SELECT.
За ключевым словом SELECT следуют сведения о том, какие именно поля необходимо включить в результирующий набор данных. Звездочка (*) обозначает все поля таблицы.
Изменение данных в SQL выполняются операторами INSERT, DELETE и UPDATE, которые осуществляют соответственно добавление в таблицу новых строк, удаление строк из таблицы, обновление данных в таблице.
Оператор INSERT
Оператор INSERT позволяет вставлять в таблицу как отдельные строки путем указания значений для каждого столбца, так и множество строк, взятых из другой таблицы с помощью оператора SELECT. Синтаксис оператора INSERT имеет вид:
INSERT [INTO] table ( [column_list] { VALUES ( { DEFAULT | NULL | expression } } [, …] )
Например, для добавления нового клиента в таблицу Customers можно использовать следующий запрос:
INSERT INTO Customers (CustomerID, CompanyName) VALUES (‘XYZFO’, ‘XYZ Deli’)
Оператор INSERT состоит из двух предложений - INTO и VALUES. В предложении INTO указывается таблица, в которую добавляется новая строка, а в предложении VALUES содержатся значения данных для новой строки. Кроме того, в предложении INTO может быть указан список столбцов, в которые заносятся данные, перечисленные в предложении VALUES. Количество и типы констант, указанных в предложении VALUES, должны соответствовать этим столбцам. Если список столбцов в предложении INTO не указывается, то подразумеваются все столбцы таблицы и в предложении VALUES константы задаются для всей строки.
Пример
В таблицу Salespeople добавить запись об агенте Nancy, проживающей в городе Atlanta, и присвоить ей код 1005, код менеджера - 1003
INSERT INTO Salespeople VALUES(1005, 'Nancy', 'Atlanta',1003)
Список столбцов в запрашиваемой таблице и список столбцов, указываемый в команде INSERT, должны соответствовать друг другу, как по количеству, так и по типам.
Пример
В таблицу Salespeople добавить таблицу Customers INSERT INTO Salespeople
SELECT Cnum, Cname, City, 0 FROM Customers.
Оператор DELETE
Для удаления строк из таблиц следует использовать оператор DELETE, синтаксис которого имеет вид:
DELETE FROM table [WHERE criteria]
В предложении FROM указывается таблица, содержащая строки, которые требуются удалить. Оператор DELETE может содержать предложение WHERE, где задаются условия отбора удаляемых строк, аналогичное условию поиска в операторе SELECT. Если предложения WHERE нет в операторе DELETE, то удаляются все строки исходной таблицы.
Пример
Из таблицы Salespeople удалить запись об агенте с кодом 1005
DELETE FROM Salespeople WHERE Snum=1005.
Для удаления из списка всех продуктов, которые больше не поставляются, можно выполнить следующий запрос:
DELETE FROM Products WHERE Discontinued = 1
Отметим, что полезно использовать оператор SELECT с тем же синтаксисом, что и оператор DELETE, чтобы проверить, какие именно записи будут удалены, прежде чем действительно их удалять. Ниже показан оператор SELECT для приведенного выше запроса на удаление данных:
SELECT ProductName FROM Products WHERE Discontinued = 1
Можно использовать в предложении WHERE более сложный критерий для определения того, какие записи должны быть удалены. Предположим, нам нужно удалить из списка клиентов тех из них, кто не имел заказов до определенной даты. Сначала для этого следует выполнить следующий SELECT, чтобы определить, что именно мы удаляем:
SELECT CompanyName FROM Customers WHERE Customers. CustomerID NOT IN (SELECT CustomerID FROM Orders WHERE OrderDate > 01/01/15).
А затем заменить оператор SELECT на оператор DELETE:
DELETE FROM Customers WHERE Customers.CustomerID NOT IN (SELECT CustomerID FROM Orders WHERE OrderDate > 01/01/15).
Оператор UPDATE
Для изменения значений в одной или нескольких колонках таблицы применяется оператор UPDATE. Синтакcис этого оператора имеет вид:
UPDATE tableSET column1 = expression1 [, column2 = expression2] [,…] [WHERE criteria].
Выражение в предложении SET может быть константой или результатом вычислений. Например, для повышения цен всех продуктов, стоящих меньше 10 долл., можно выполнить следующий запрос:
UPDATE Products SET UnitPrice = UnitPrice * 1.1 WHERE UnitPrice < 10.
Оператор UPDATE с предложением SET представляет собой список операций присваивания, где в каждой операции
указанный столбец получает новое значение, равное значению выражения. При этом в выражении могут участвовать старые значения этих столбцов. В предложении WHERE указывается условие поиска строк, в которых требуется обновить значения указанных столбцов. Если в операторе UPDATE предложение WHERE отсутствует, то значение столбцов обновляются во всех стоках исходной таблицы.
Пример
В таблице Customers у заказчика с кодом 2003 изменить адрес на 'Chicago'
UPDATE Customers SET City='Chicago' WHERE Cnum=2003
2. Предложение ORDER BY
Предложение ORDER BY (необязательное) применяется для сортировки результирующего набора данных по одной или нескольким колонкам. Для определения порядка сортировки используются ключевые слова ASC (по возрастанию) или DESC (по убыванию). По умолчанию данные сортируются по возрастанию. Синтаксис предложения ORDER BY имеет вид:
ORDER BY column1 [{ASC | DESC}] [, column2 [{ASC | DESC}] [,…].
Например, для сортировки сотрудников по фамилии и затем по имени следует использовать следующий SQL-запрос:
SELECT LastName, FirstName, Title FROM Employees ORDER BY LastName, FirstName.
Если сортировка данных требуется в убывающем порядке (например, требуется список продуктов в порядке убывания цен), используется ключевое слово DESC:
SELECT ProductName, UnitPrice FROM Products ORDER BY UnitPrice DESC.
Предложение GROUP BY
Для вычисления суммарных значений на основе данных одной или нескольких таблиц можно использовать предложение GROUP BY, имеющее такой синтаксис:
GROUP BY {column1} [, …]
Например, следующий запрос связывает две таблицы, сортирует их по полю CustomerID, для каждого значения CustomerID создает одну строку в результирующем наборе данных и вычисляет количество значений поля OrderID для каждого значения CustomerID:
SELECT Customers.CustomerID, COUNT (Orders.OrderID) FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID GROUP BY Customers.CustomerID.
В приведенном выше примере запроса мы использовали в предложении SELECT агрегатную функцию COUNT, вычисляющую количество значений.
3.SELECT является наиболее часто используемым оператора языка SQL. Это команда задает «вопросы» базе данных – вот почему SQL называется «языком запросов».
Запросы - это наиболее часто используемый момент в SQL. ведь этот язык для них и был создан. Запрос представляет собой некую команду, которая обращается к БД и сообщает ей, чтобы она отобразила определенную информацию из таблиц в память. Эта информация обычно выводится непосредственно на экран компьютера, терминал, посылается принтеру, сохраняется в файле или служит исходными данными для другой команды или запроса.
Все запросы в SQL состоят из одиночной команды SELECT с достаточно простой структурой, однако путем ее использования можно выполнить сложную обработку данных. В самой простой форме, команда SELECT просто обращается к БД, чтобы извлечь информацию из таблицы. Например, можно вывести таблицу студентов, дав следующий запрос:
SELECT SNUM, SFAM, SIMA, SOTCH, STIP FROM STUDENTS;
SNUM | SFAM | SIMA | SOTCH | STIP |
3412 | Поляков | Анатолий | Алексеевич | 25.50 |
3413 | Старова | Любовь | Михайловна | 17.00 |
3414 | Гриценко | Владимир | Николаевич | 0.00 |
3415 | Котенко | Анатолий | Николаевич | 0.00 |
3416 | Нагорный | Евгений | Васильевич | 25.50 |
Другими словами, эта команда просто выводит все данные из таблицы. Большинство программ, работающих с языком SQL, выдают заголовки полей, поэтому в дальнейшем результаты будут приводиться именно в такой форме.
Детально поясним каждую часть этой команды:
SELECT - ключевое слово, которое сообщает БД, что эта команда является запросом, т.е. все запросы начинаются этим словом.
SNUM, SFAM, S1MA, SOTCH, STIP - список полей из таблицы, которые выбираются запросом. Поля, не перечисленные здесь, не будут включены в вывод команды, но это, разумеется, не означает, что они будут удалены или информация в них будет стерта из таблиц. Запрос не воздействует на информацию в таблицах; он только показывает данные.
FROM STUDENTS - ключевое слово, подобно SELECT, которое должно быть представлено в каждом запросе. Оно сопровождается пробелом и затем именем таблицы используемой в качестве источника информации. В данном случае - это таблица студентов STUDENTS.
Точка с запятой (;) используется во всех интерактивных командах SQL для сообщения БД, что команда заполнена и готова выполниться, а в некоторых системах наклонная черта (\) в строке является индикатором конца команды.
Очевидно, запрос такого характера не обязательно будет упорядочивать вывод любым указанным способом. Та же самая команда, выполненная с теми же самыми данными, но в разное время не сможет вывести результат в одинаковом порядке. Обычно строки обнаруживаются в том порядке, в котором они найдены в таблице, а поскольку он произволен, то совсем не обязательно будет сохраняться тот порядок, в котором данные вводились или сохранялись. Допускается упорядочивать вывод командами SQL с помощью специального предложения, о котором пойдет речь ниже, а сейчас необходимо иметь в виду, что в отсутствие явного упорядочения нет никакого определенного порядка в выводе результатов запроса.
Если необходимо получить каждое поле таблицы, имеется необязательное сокращение в виде символа "звездочка" (*), как отмечалось выше, которое можно использовать для вывода полного списка полей следующим образом:
SELECT * FROM_STUDENTS;
что приведет к тому же результату, что и предыдущая команда. В общем случае запрос начинается с ключевого слова SELECT, сопровождаемого пробелом. После этого должен следовать список разделенных запятыми имен полей, которые необходимо вывести.
Ключевое слово FROM, следующее далее, сопровождается пробелом и именем таблицы, запрос к которой делается. В заключение точка с запятой должна использоваться для того, чтобы закончить запрос и указать что команда готова к выполнению.
Команда SELECT способна извлечь строго определенную информацию из таблицы Например, при необходимости вывода только определенных полей таблицы, просто из списка исключаются не нужные поля. Например, запрос
SELECT SNUM, SFAM, STIP FROM_STUDENTS;
будет производить следующий вывод:
SNUM | SFAM | STIP |
3412 | Поляков | 25,50 |
3413 | Сшарова | 17.00 |
3414 | Гриценко | 0.00 |
3415 | Котенко | 0.00 |
3416 | Нагорный | 25.50 |