Построение баз данных с помощью SQL. Манипулирование данными в SQL

Содержание

Слайд 2

Управление таблицами CREATE TABLE ALTER TABLE DROP TABLE Управление данными SELECT INSERT UPDATE DELETE

Управление таблицами

CREATE TABLE

ALTER TABLE

DROP TABLE

Управление данными

SELECT

INSERT


UPDATE

DELETE

Слайд 3

Команда создания таблицы – CREATE TABLE CREATE TABLE имя_таблицы ({ |

Команда создания таблицы – CREATE TABLE

CREATE TABLE имя_таблицы
({<определение_столбца>|
<определение_ограничения_таблицы>}
[,…,{<определение_столбца>|
<определение_ограничения_таблицы >}])
Определение_столбца:
<Имя_столбца>

<тип_данных>
[<ограничение_столбца> ] [,…,<ограничение_столбца>]
Слайд 4

Ограничение столбца ::= [ CONSTRAINT ] {[ DEFAULT ] | [

Ограничение столбца

<ограничение_столбца>::=
[ CONSTRAINT <имя_ограничения > ]
{[ DEFAULT <выражение>]
| [ NULL

| NOT NULL ]
| [ PRIMARY KEY | UNIQUE ]
| [FOREIGN KEY
REFERENCES <имя_главной_таблицы>[(<имя_столбца> [,…,n])]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
]
| [CHECK (<логическое_выражение>)]
}
Слайд 5

Ограничения на уровне таблицы ::= [ CONSTRAINT ] { [ {

Ограничения на уровне таблицы

<ограничение_таблицы> ::=
[ CONSTRAINT <имя_ограничения>]
{ [

{ PRIMARY KEY | UNIQUE }
{(<имя_колонки> [ASC | DESC] [,…,n] )}]
| FOREIGN KEY
[ ( <имя_колонки>[,..., n ] ) ]
REFERENCES <внешняя_таблица> [ (<имя_колонки_внешней_таблицы> [, ..., n ] ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
| CHECK (<логическое_выражение> )
}
Слайд 6

Создание таблицы «Студенты» (БД «Сессия») CREATE TABLE Студенты (ID_Студент INTEGER NOT

Создание таблицы «Студенты» (БД «Сессия»)

CREATE TABLE Студенты
(ID_Студент INTEGER NOT NULL,
Фамилия CHAR(30)

NOT NULL,
Имя CHAR(15) NOT NULL,
Отчество CHAR(20) NOT NULL,
Номер_группы INTEGER NOT NULL,
Адрес CHAR(30),
Телефон CHAR(8),
PRIMARY KEY (ID_Студент))
Слайд 7

Создание таблицы «Дисциплины» (БД «Сессия») CREATE TABLE Дисциплины (ID_Дисциплина INTEGER NOT

Создание таблицы «Дисциплины» (БД «Сессия»)

CREATE TABLE Дисциплины
(ID_Дисциплина INTEGER NOT NULL,
Наименование VARCHAR(40) NOT

NULL,
PRIMARY KEY (ID_Дисциплина),
UNIQUE (Наименование))
Слайд 8

Создание таблицы «Учебный план» (БД «Сессия») CREATE TABLE Учебный_план (ID_План INTEGER

Создание таблицы «Учебный план» (БД «Сессия»)

CREATE TABLE Учебный_план
(ID_План INTEGER NOT NULL,
ID_Дисциплина

INTEGER NOT NULL,
Семестр INTEGER NOT NULL,
Количество_часов INTEGER,
ID_Преподаватель INTEGER,
PRIMARY KEY (ID_План),
CHECK ((Семестр >= 1) OR (Семестр <= 10)))
Слайд 9

Создание таблицы «Сводная ведомость» (БД «Сессия») CREATE TABLE Сводная_ведомость (ID_Студент INTEGER

Создание таблицы «Сводная ведомость» (БД «Сессия»)

CREATE TABLE Сводная_ведомость
(ID_Студент INTEGER NOT NULL,
ID_План INTEGER

NOT NULL,
Оценка INTEGER NOT NULL,
Дата_сдачи DATETIME NOT NULL,
PRIMARY KEY (ID_Студент, ID_Дисциплина),
CHECK ((Оценка >= 0) OR
(Оценка <= 5)))
Слайд 10

Создание таблицы «Сводная ведомость» (БД «Сессия») CREATE TABLE Кадровый_состав (ID_ Преподаватель

Создание таблицы «Сводная ведомость» (БД «Сессия»)

CREATE TABLE Кадровый_состав
(ID_ Преподаватель INTEGER NOT NULL,

Фамилия CHAR(30) NOT NULL,
Имя CHAR(15) NOT NULL,
Отчество CHAR(20) NOT NULL,
Должность CHAR(20) NOT NULL,
Кафедра CHAR(3) NOT NULL,
Адрес CHAR(30),
Телефон CHAR(8),
PRIMARY KEY (ID_Преподаватель))
Слайд 11

Команда ALTER TABLE добавить в таблицу определение нового столбца; удалить столбец

Команда ALTER TABLE

добавить в таблицу определение нового столбца;
удалить столбец из

таблицы;
изменить значение по умолчанию для какого-либо столбца;
добавить или удалить первичный ключ таблицы;
добавить или удалить внешний ключ таблицы;
добавить или удалить условие уникальности;
добавить или удалить условие на значение.

ALTER TABLE <имя_таблицы>
[ALTER COLUMN <имя_столбца> [SET DEFAULT <выражение>]|
[DROP DEFAULT]]
|[ADD <определение_столбца>]
|[DROP COLUMN <имя_столбца> [CASCADE]|[RESTRICT]]
|[ADD [<определение_первичного_ключа>]|[<определение_внешнего_ключа>]|
[<условие_уникальности>]|[<условие_на_значение>]]
|[DROP CONSTRAINT <имя_ограничения> [CASCADE]|[RESTRICT]]

Слайд 12

Добавление столбца ALTER TABLE Студенты ADD Год_поступления INTEGER NOT NULL DEFAULT

Добавление столбца

ALTER TABLE Студенты
ADD Год_поступления INTEGER NOT NULL
DEFAULT YEAR(GETDATE())

Модификация

столбца

ALTER TABLE Студенты
ALTER COLUMN Номер_группы CHAR(6) NOT NULL

Удаление столбца

ALTER TABLE Студенты
DROP COLUMN Год_поступления

Слайд 13

Добавление внешних ключей в таблицу «Учебный_план» ALTER TABLE Учебный_план ADD CONSTRAINT

Добавление внешних ключей в таблицу «Учебный_план»

ALTER TABLE Учебный_план
ADD CONSTRAINT FK_Дисциплина
FOREIGN

KEY (ID_Дисциплина)
REFERENCES Дисциплины
ALTER TABLE Учебный_план
ADD CONSTRAINT FK_Кадровый_состав
FOREIGN KEY (ID_Преподаватель)
REFERENCES Кадровый_состав

ALTER TABLE Сводная_ведомость
ADD CONSTRAINT FK_Студент
FOREIGN KEY (ID_Студент)
REFERENCES Студенты
ALTER TABLE Сводная_ведомость
ADD CONSTRAINT FK_План
FOREIGN KEY (ID_План)
REFERENCES Учебный_план

Добавление внешних ключей в таблицу «Сводная_ведомость»

Слайд 14

Удаление ограничений ALTER TABLE Студент ADD CONSTRAINT DEF_Номер_группы DEFAULT 1 FOR

Удаление ограничений

ALTER TABLE Студент
ADD CONSTRAINT DEF_Номер_группы DEFAULT 1
FOR Номер_группы


ALTER TABLE Учебный_план
DROP CONSTRAINT FK_Дисциплина

ALTER TABLE Студент
DROP CONSTRAINT DEF_Номер_группы

Удаление внешнего ключа

Удаление значения по умолчанию

Удаление таблицы

DROP TABLE <имя_таблицы>

Слайд 15

Извлечение данных – команда SELECT SELECT [ INTO ] FROM [

Извлечение данных – команда SELECT

SELECT <Список_выбора>
[ INTO <Новая_таблица> ]
FROM <Исходная_таблица>


[ WHERE <Условие_отбора> ]
[ GROUP BY <Ключи_группировки> ]
[ HAVING <Условие_отбора> ]
[ ORDER BY <Ключи_сортировки> [ ASC | DESC ] ]

SELECT INTO
FROM WHERE
GROUP BY HAVING
UNION ORDER BY
COMPUTE FOR
OPTION

Слайд 16

Раздел SELECT - SELECT [ ALL | DISTINCT ] [ TOP

Раздел SELECT -

SELECT [ ALL | DISTINCT ]
[ TOP n

[ PERCENT ] [ WITH TIES ] ]
<Список_выбора>

обязательный раздел, который должен указываться в любом запросе: задает набор столбцов, возвращаемых после выполнения запроса, т.е. внешний вид результата

Слайд 17

Ключевые слова ALL и DISTINCT SELECT ALL Семестр, Отчетность FROM Учебный_план

Ключевые слова ALL и DISTINCT

SELECT ALL Семестр, Отчетность
FROM Учебный_план

SELECT DISTINCT

Семестр, Отчетность
FROM Учебный_план
Слайд 18

Использование ключевого слова ТОР SELECT TOP 5 * FROM Студенты SELECT

Использование ключевого слова ТОР

SELECT TOP 5 * FROM Студенты

SELECT TOP

10 PERCENT * FROM Студенты
Слайд 19

Влияние порядка сортировки на возвращаемый набор данных SELECT TOP 10 PERCENT

Влияние порядка сортировки на возвращаемый набор данных

SELECT TOP 10 PERCENT

*
FROM Студенты
ORDER BY Номер_Группы
Слайд 20

Использование ключевого слова WITH TIES SELECT TOP 10 PERCENT WITH TIES * FROM Студенты

Использование ключевого слова WITH TIES

SELECT TOP 10 PERCENT WITH TIES

* FROM Студенты
Слайд 21

Предложение ::= { * | { | }.* | { |

Предложение <Список_выбора>

<Список_выбора> ::=
{ *
| { <Имя_таблицы> | <Псевдоним_таблицы> }.*
| { <Имя_столбца>

| <Выражение> }
[ [ AS ] <Псевдоним_столбца>]
| <Псевдоним_столбца> = <Выражение>
} [ ,...,n ]

SELECT ID_Дисциплина, Наименование, Семестр
FROM Дисциплина, Учебный_план

SELECT Дисциплина.ID_Дисциплина, Наименование,
Семестр
FROM Дисциплина, Учебный_план

Слайд 22

Запрос для таблицы «Студенты», представляющий фамилию, имя и отчество в одной

Запрос для таблицы «Студенты», представляющий фамилию, имя и отчество в одной

колонке

Используем операцию конкатенации (сложения) символьных строк и значение ФИО в качестве псевдонима столбца:
SELECT TOP 10 Фамилия + ' ' + Имя + ' ' + Отчество as ФИО, Номер_Группы
FROM Студенты

Слайд 23

Раздел FROM FROM { } [,...,n] ::= [ [AS] ]| Псевдоним tpl Имя таблицы «Учебный_план»

Раздел FROM

FROM { <Источник_данных> } [,...,n]
<Источник_данных> ::=
<имя_таблицы> [ [AS]

<псевдоним_таблицы>]|
<связка_таблиц>

Псевдоним
tpl

Имя таблицы
«Учебный_план»

Слайд 24

Раздел WHERE WHERE | {= | *= | =*} SELECT Фамилия,

Раздел WHERE

WHERE <условие_отбора>|
<имя_столбца> {= | *= | =*} <имя_столбца>

SELECT

Фамилия, Имя, Отчество, Номер_Группы,
Год_поступления
FROM Студенты
WHERE Год_поступления < 2000
Слайд 25

Оператор BETWEEN [NOT] BETWEEN AND ( >= ) AND ( )

Оператор BETWEEN

<выражение> [NOT] BETWEEN <начало_диапазона>
AND <конец_диапазона>

(<выражение>>=<начало_диапазона>) AND (<выражение><=<конец_диапазона>)

SELECT Наименование,

Семестр, Количество_часов
FROM Учебный_план INNER JOIN Дисциплины ON
Учебный_план.ID_Дисциплина = Дисциплины.ID_Дисциплина
WHERE Количество_часов
BETWEEN 50 AND 100
Слайд 26

Оператор IN [NOT] IN ( ,…, ) SELECT Наименование, Семестр, Количество_часов

Оператор IN

<выражение> [NOT] IN (<выражение1>,…,<выражениеN>)

SELECT Наименование, Семестр, Количество_часов
FROM Учебный_план INNER

JOIN Дисциплины ON
Учебный_план.ID_Дисциплина = Дисциплины.ID_Дисциплина
WHERE Наименование IN ('Английский язык', 'Физическая культура')
Слайд 27

Оператор LIKE [NOT] LIKE SELECT Фамилия, Имя, Отчество, Должность FROM Кадровый_состав WHERE Должность LIKE '%пр%'

Оператор LIKE

<Символьное_выражение> [NOT] LIKE <образец>

SELECT Фамилия, Имя, Отчество, Должность
FROM Кадровый_состав
WHERE

Должность LIKE '%пр%'
Слайд 28

Раздел ORDER BY (сортировка) SELECT TOP 20 Наименование, Семестр, Количество_часов FROM

Раздел ORDER BY (сортировка)

SELECT TOP 20 Наименование, Семестр, Количество_часов
FROM Учебный_план, Дисциплины


WHERE (Учебный_план.ID_Дисциплина = Дисциплины.ID_Дисциплина)
ORDER BY Семестр, Количество_часов DESC

ORDER BY {<условие_сортировки>[ASC | DESC] }[,...,n]