Операторы определения данных и манипулирования данными.
Операторы определения данных DDL
Оператор | Смысл | Действие |
CREATE TABLE | Создать таблицу | Создает новую таблицу в БД |
DROP TABLE | Удалить таблицу | Удаляет таблицу из БД |
ALTER TABLE | Изменить таблицу | Изменяет структуру существующей таблицы или ограничения целостности, задаваемые для данной таблицы |
CREATE VIEW | Создать представление | Создает виртуальную таблицу, соответствующую некоторому SQL-запросу |
ALTER VIEW | /Изменить представление | Изменяет ранее созданное представление |
DROP VIEW | Удалить представление | Удаляет ранее созданное представление |
CREATE INDEX | Создать индекс | Создает индекс для некоторой таблицы для обеспечения быстрого доступа по атрибутам, входящим в индекс |
DROP INDEX | Удалить индекс | Удаляет ранее созданный индекс |
Созданиебазыданных
CREATE DATABASE University
Установление текущей базы данных
USEUniversity
Создание таблицы (сокращенный вариант)
CREATETABLE<имя таблицы>
(<описание элемента таблицы>[,…n])
<описание элемента таблицы> ::=<определение столбца> | [… опускаем]
<определение столбца> ::=<имя столбца><тип данных> [<значение по умолчанию>] [<ограничения столбца>]
<значение по умолчанию> ::=DEFAULT {<литерал> | NULL | [… опускаем]}
<ограничение столбца> ::=NOTNULL […опускаем]
Скрипты создания БД для примера «Библиотека»
CREATE DATABASE Library
GO
CREATE TABLE [dbo].[Readers](
[reader_id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
|
|
[last_name] [varchar](50) NOT NULL,
[first_name] [varchar](50) NOT NULL,
[second_name] [varchar](50) NULL,
[work_phone] [char](11) NULL,
[home_phone] [char](11) NULL,
)
CREATE TABLE [dbo].[Publications](
[isbn] [varchar](14) NOT NULL PRIMARY KEY,
[title] [varchar](120) NOT NULL,
[author] [varchar](30) NULL,
[public_year] [int] NULL,
[pages] [int] NULL,
)
CREATE TABLE [dbo].[Exemplars](
[inv] [varchar](10) NOT NULL PRIMARY KEY,
[isbn] [varchar](14) NOT NULL FOREIGN KEY REFERENCES Publications(isbn),
[reader_id] [int] NULL FOREIGN KEY REFERENCES Readers(reader_id),
[date_out] [datetime] NULL,
)
Удалениебазыданных
DROP DATABASE University
Удалениетаблицы
DROP TABLE Exams
Изменение таблицы (сокращенный вариант)
ALTERTABLE<имя таблицы> {
ADD<определение столбца> |
ALTERCOLUMN<имя столбца><тип и свойства>
DROPCOLUMN<имя столбца> [… опускаем] }
Добавление нового столбца
ALTERTABLEEADD [Комментарий] NVARCHAR(255)
Изменение свойств столбца
ALTERTABLEEALTERCOLUMN [Комментарий] NVARCHAR(500)
Для переименования – хранимая процедура
sp_rename 'object_name', 'new_name' , 'object_type‘
где 'object_type‘ принимает значения:
COLUMN – столбец
DATABASE – пользовательская БД
INDEX – пользовательский индекс.
OBJECT – объект из каталога (таблица, процедура, ограничение и т.п.)
Переименовать столбец
EXECsp_rename 'E.[Оц]', 'Оценка', 'COLUMN'
Переименоватьтаблицу
|
|
EXECsp_rename 'E', 'Exams', 'OBJECT'
Операторы манипулирования данными DataManipulationLanguage (DMP)
Оператор | Смысл | Действие |
DELETE | Удалить строки | Удаляет одну или несколько строк, соответствующих условиям фильтрации, из базовой таблицы. Применение оператора согласуется с принципами поддержки целостности, поэтому этот оператор не всегда может быть выполнен корректно, даже если синтаксически он записан правильно |
INSERT | Вставить строку | Вставляет одну строку в базовую таблицу. Допустимы модификации оператора, при которых сразу несколько строк могут быть перенесены из одной таблицы или запроса в базовую таблицу |
UPDATE | Обновить строку | Обновляет значения одного или нескольких столбцов в одной или нескольких строках, соответствующих условиям фильтрации |
Добавление строк
INSERTINTO<имя таблицы>
[(<список столбцов>)]
VALUES (<список значений>)
INSERT INTO Exemplars (inv, isbn, reader_id, date_out)
VALUES (202, ‘5-132’, 533, GetDate())
Если значения в порядке объявления столбцов
INSERT INTO Exemplars
VALUES (202, ‘5-132’, 533, GetDate())
Вставкаиздругойтаблицы
INSERT INTO Readers (name) SELECT student_name FROM Students
Удаление
DELETE FROM <имятаблицы>
[WHERE <предикат>]
Удалить одну запись
DELETEFROMG
WHERE [ФИО] = ‘Петров’
|
|
Удалить студентов, имеющих две или более двоек
DELETE FROM G
WHERE G.[ФИО] IN
(SELECT E.[ФИО] FROM E
WHERE [Оценка]=2
GROUP BY E.[ФИО]
HAVING COUNT(*) >=2)
Изменение значений в строке
UPDATE<имя таблицы>
SET<имя столбца> = <выражение>, …n
[WHERE<предикат>]
Изменение в одной строке
UPDATEE
SET [Оц] = 5, [Дисц] = ‘ОС’
WHERE [ФИО] = ‘Петров’ AND [Дисц] = ‘БД’
UPDATE E SET [Оц] = [Оц] + 1
WHERE [Дисц] = ‘БД’ AND [Оц] < 5
Использованиеподзапроса
UPDATE E SET E.[Оц] = [Оц] + 1
WHERE E.[ФИО] IN
(SELECT G.[ФИО] FROM G
WHERE G.[Группа] IN (‘ВТ-100’, ‘ВТ-200’, ‘ВТ-300’))
Оператор SELECT.
Язык запросов (DataQueryLanguage) в SQL состоит из единственного оператора SELECT. Этот единственный оператор поиска реализует все операции реляционной алгебры.
Синтаксис оператора SELECT имеет следующий вид:
SELECT( [ALL | DISTINCT] <списокполей>|*)
FROM <Список таблиц>
[WHERE <Предикат-условие выборки или соединения>]
[GROUP BY <Список полей результата>]
[HAVING <Предикат-условие для группы>]
[ORDER BY <Список полей, по которым упорядочить вывод>]
Здесь ключевое слово ALL означает, что в результирующий набор строк включаются все строки, удовлетворяющие условиям запроса. Ключевое слово DISTINCT означает, что в результирующий набор включаются только различные строки, то есть дубликаты строк результата не включаются в набор. Символ *. (звездочка) означает, что в результирующий набор включаются все столбцы из исходных таблиц запроса.
|
|
В разделе FROM задается перечень исходных отношений (таблиц) запроса.
В разделе WHERE задаются условия отбора строк результата или условия соединения кортежей исходных таблиц, подобно операции условного соединения в реляционной алгебре.
В разделе GROUP BY задается список полей группировки.
В разделе HAVING задаются предикаты-условия, накладываемые на каждую группу.
В части ORDER BY задается список полей упорядочения результата, то есть список полей, который определяет порядок сортировки в результирующем отношении.
SELECT — ключевое слово, которое сообщает СУБД, что эта команда — запрос. За ним может следовать способ выборки — с удалением дубликатов (DISTINCT) или без удаления (ALL, подразумевается по умолчанию). Затем следует список перечисленных через запятую столбцов, которые выбираются запросом из таблиц, или символ '*' (звездочка) для выбора всей строки.
• FROM — ключевое слово, подобно SELECT, которое должно быть представлено в каждом запросе. Оно сопровождается пробелом и затем именами таблиц, где над перечисленными таблицами осуществляется операция декартова произведения.
Все последующие разделы оператора SELECT являются необязательными.
В выражении условий раздела WHERE могут быть использованы следующие предикаты:
• Предикаты сравнения { =, <>, >,<, >=,<= }, которые имеют традиционный смысл.
• Предикат Between A and В — принимает значения между А и В. \
• Предикат вхождения в множество IN (множество) истинен тогда, когда сравниваемое значение входит в множество заданных значений.
• Предикаты сравнения с образцом LIKE и NOT LIKE.
Предикат сравнения с неопределенным значением IS NULL
Дата добавления: 2018-08-06; просмотров: 252; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!