Напиши для этих таблиц:
CREATE TABLE [dbo].[Academic](
[full_name] nvarchar NULL,
[date_bith] [date] NULL,
[specialise] nvarchar NULL,
[god_prisvoenia] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Application](
[Code] char NOT NULL,
[Number] char NOT NULL,
PRIMARY KEY CLUSTERED
(
[Code] ASC,
[Number] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Contry](
[name] nvarchar NULL,
[capital] nvarchar NULL,
[squer] [int] NULL,
[population] [int] NULL,
[continent] nvarchar NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Countries](
[CountryName] nvarchar NULL,
[Capital] nvarchar NULL,
[Continent] nvarchar NULL,
[Population] [int] NULL,
[Area] [float] NULL,
[GovernanceTypeID] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Countries_Ishkeev](
[CountryName] nvarchar NOT NULL,
[Capital] nvarchar NOT NULL,
[Continent] nvarchar NOT NULL,
[Population] [int] NOT NULL,
[Area] [float] NOT NULL,
[GovernanceTypeID] [int] NULL,
PRIMARY KEY CLUSTERED
(
[CountryName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Department](
[Code] char NOT NULL,
[Name] varchar NULL,
[Faculty] char NULL,
PRIMARY KEY CLUSTERED
(
[Code] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Discipline](
[Code] [int] NOT NULL,
[Volume] [int] NULL,
[Name] varchar NULL,
[Instructor] char NULL,
PRIMARY KEY CLUSTERED
(
[Code] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Employee](
[Employee_ID] [int] NOT NULL,
[Code] char NULL,
[Last_Name] varchar NULL,
[Position] varchar NULL,
[Salary] [decimal](10, 2) NULL,
[Supervisor] [int] NULL,
PRIMARY KEY CLUSTERED
(
[Employee_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Engineer](
[Employee_ID] [int] NOT NULL,
[Specialization] varchar NULL,
PRIMARY KEY CLUSTERED
(
[Employee_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Exam](
[Date] [date] NOT NULL,
[Code] [int] NOT NULL,
[Registration_Number] [int] NOT NULL,
[Employee_ID] [int] NOT NULL,
[Auditorium] varchar NULL,
[Grade] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Faculty](
[Abbreviation] char NOT NULL,
[Name] varchar NULL,
PRIMARY KEY CLUSTERED
(
[Abbreviation] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Governance](
[ID] [int] NOT NULL,
[Type] nvarchar NULL,
PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Gymnasts](
[ID] [int] IDENTITY(1,1) NOT NULL,
[LastName] nvarchar NOT NULL,
[Subject] nvarchar NOT NULL,
[School] nvarchar NOT NULL,
[Scores] [float] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Head_of_Department](
[Employee_ID] [int] NOT NULL,
[Experience] [int] NULL,
PRIMARY KEY CLUSTERED
(
[Employee_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Lecturer](
[Employee_ID] [int] NOT NULL,
[Title] varchar NULL,
[Degree] varchar NULL,
PRIMARY KEY CLUSTERED
(
[Employee_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Specialization](
[Number] char NOT NULL,
[Direction] varchar NULL,
[Code] char NULL,
PRIMARY KEY CLUSTERED
(
[Number] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Student](
[Registration_Number] [int] NOT NULL,
[Number] char NULL,
[Last_Name] varchar NULL,
PRIMARY KEY CLUSTERED
(
[Registration_Number] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Students](
[ID] [int] IDENTITY(1,1) NOT NULL,
[LastName] nvarchar NOT NULL,
[Subject] nvarchar NOT NULL,
[School] nvarchar NOT NULL,
[Scores] [float] NULL,
PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
следующие запросы:
–1. Создайте представление, содержащее список африканских стран, население которых больше 10 млн. чел., а площадь больше 500 тыс. кв. км, и используйте его.
–2. Создайте представление, содержащее список континентов, среднюю площадь стран, которые находятся на нем, среднюю плотность населения, и используйте его.
–3. Создайте представление, содержащее фамилии преподавателей, их должность, зва-ние, степень, место работы, количество их экзаменов, и используйте его.
–4. Создайте табличную переменную, содержащую три столбца («Номер месяца», «Название месяца», «Количество дней»), заполните ее для текущего года, и используйте ее.
–5. Создайте табличную переменную, содержащую список стран, площадь которых в 100 раз меньше, чем средняя площадь стран на континенте, где они находятся, и используйте ее.
–6. Создайте локальную временную таблицу, имеющую три столбца («Номер недели», «Количество экзаменов», «Количество студентов»), заполните и используйте ее.
–7. Создайте глобальную временную таблицу, содержащую название континентов, наибольшую и наименьшую площадь стран на них, заполните и используйте ее.
–8. С помощью обобщенных табличных выражений напишите запрос для вывода списка сотрудников, чьи зарплаты меньше, чем средняя зарплата по факультету, их зарплаты и назва-ние факультета.
–9. Напишите команды для удаления всех созданных вами представлений.
по этим примерам:
Пример 1: Создайте представление, содержащее список стран, население которых меньше 1 млн. чел., а площадь больше 100 тыс. кв. км, и используйте его:
CREATE VIEW Пример1
AS
SELECT
Название
,Столица
,Площадь
,Население
,Континент
FROM
Страны
115
WHERE
Население < 1000000
AND
Площадь > 100000
SELECT
Название
,Столица
,Площадь
,Население
,Континент
FROM
Пример1
Пример 2: Создайте представление, содержащее список континентов, суммарную пло-щадь и суммарное население стран, которые находятся на каждом континенте и используйте его:
CREATE VIEW Пример2
(
Континент
,Площадь
,Население
)
AS
SELECT
Континент
,SUM(Площадь)
,SUM(Население)
FROM
Страны
GROUP BY
Континент
SELECT
Континент
,Площадь
,Население
FROM
Пример2
116
Пример 3: Создайте представление, содержащее фамилии преподавателей, должность, каждого преподавателя, звание, степень, место работы, зарплату и используйте его:
CREATE VIEW Пример3
(
Фамилия
,Должность
,Звание
,Степень
,Кафедра
,Зарплата
)
AS
SELECT
Фамилия
,Должность
,Звание
,Степень
,Название
,Зарплата
FROM
Сотрудник С
INNER JOIN Преподаватель П ON С.Таб_номер = П.Таб_номер INNER JOIN Кафедра К ON С.Шифр = К.Шифр
SELECT
Фамилия
,Должность
,Звание
,Степень
,Кафедра
,Зарплата
FROM
Пример3
Пример 4: Создайте табличную переменную, содержащую три столбца («Номер не-дели», «Дата начала», «Дата конца»). Заполните ее для текущего года и используйте:
DECLARE @Пример4 TABLE
(
[Номер недели] INT,
[Дата начала] DATE,
[Дата конца] DATE
)
117
DECLARE @T AS DATE, @N INT = 1
SET @T = CAST(YEAR(GETDATE()) AS CHAR(4)) + ‘0101’
WHILE DATEPART(WEEKDAY, @T) > 1
SET @T = DATEADD(DAY, -1, @T)
PRINT DATEPART(WEEK, @T)
WHILE YEAR(@T) < YEAR(DATEADD(YEAR, 1, GETDATE()))
BEGIN
INSERT
@Пример4
VALUES
(@N, @T, DATEADD(DAY, 6, @T))
SET @T = DATEADD(DAY, 7, @T)
SET@N=@N+1
END
SELECT
[Номер недели]
,[Дата начала]
,[Дата конца]
FROM
@Пример4
Пример 5: Создайте табличную переменную, содержащую список стран, площадь ко-торых в 1000 раз меньше, чем средняя площадь стран в мире и используйте:
DECLARE @Пример5 TABLE
(
Название VARCHAR(50),
Столица VARCHAR(50),
Площадь FLOAT,
Население BIGINT,
Континент VARCHAR(50)
)
INSERT INTO
@Пример5
SELECT
Название
,Столица
,Площадь
,Население
,Континент
118
FROM
Страны
WHERE
Площадь * 1000 < (
SELECT
AVG(Площадь)
FROM
Страны
)
SELECT
Название
,Столица
,Площадь
,Население
,Континент
FROM
@Пример5
Пример 6: Создайте локальную временную таблицу, имеющую три столбца («Название месяца», «Количество экзаменов», «Количество студентов»), заполните и используйте ее:
SELECT
DATENAME(MONTH, Дата) AS [Название месяца]
, COUNT(DISTINCT Код) AS [Количество экзаменов]
, COUNT(DISTINCT Рег_номер) AS [Количество студентов]
INTO
#Пример6
FROM
Экзамен
GROUP BY
DATENAME(MONTH, Дата)
SELECT * FROM #Пример6
Пример 7: Создайте глобальную временную таблицу, содержащую название стран и плотность их населения, заполните и используйте ее:
CREATE TABLE ##Пример7
(
Название VARCHAR(50),
Плотность FLOAT
)
INSERT INTO
##Пример7
(Название, Плотность)
119
SELECT
Название, ROUND(Население / Площадь, 0) AS Плотность
FROM
Страны
SELECT * FROM ##Пример7
DROP TABLE #Пример6
Пример 8: С помощью обобщенных табличных выражений, напишите запрос для вы-вода списка сотрудников, чьи зарплаты меньше, чем средняя зарплата по кафедре, их зарплаты
и название кафедры:
WITH СЗК AS
(
SELECT
К.Название AS Кафедра ,К.Шифр
,AVG(Зарплата) AS [Средняя зарплата по кафедре]
FROM
Сотрудник С
INNER JOIN Кафедра К ON С.Шифр = К.Шифр
GROUP BY
К.Название, К.Шифр
)
SELECT
С.Фамилия
, С.Зарплата
, З.Кафедра
, З.[Средняя зарплата по кафедре]
FROM
Сотрудник С
INNER JOIN СЗК З ON С.Шифр = З.Шифр
WHERE
С.Зарплата < З.[Средняя зарплата по кафедре]