Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Создание базы данных средствами SQL-сервера.



Вы можете создавать базу данных используя SQL Server Management Studio

Когда вы создаёте базу данных, SQL Server:

1. Создаёт файл данных и журнал транзакций для базы данных.

2. Требует владельца и создателя базы данных, который имеет права доступа к базе данных master, потому что SQL Server записывает информацию о каждой базе данных в таблицы sysdatabases и sysaltfiles в базе данных master.

3. Позволяет вам определить: a. имя базы данных; b. свойства базы данных; c. расположение файлов базы данных.

4. SQL Server использует копию базы данных model для инициализации базы данных и метаданных. Любые опции или настройки базы данных model копируются в новую базу данных.

5. После этого SQL Server заполняет свободные страницы базы данных пустотой.

Команда CREATE DATABASE имеет следующие параметры:

PRIMARY — файл определяется как первичное устройство.

NAME — логическое имя; по умолчанию совпадает с именем файла.

FILENAME — полное имя файла на диске.

SIZE — исходный размер файла. Минимальный размер файла журнала равен 512 Кбайт.

MAXSIZE — максимальный размер файла.

UNLIMITED — размер файла не ограничивается.

FILEGROWTH — приращение размера в мегабайтах (MB), килобайтах (KB) или процентах (%). По умолчанию приращение равно 10%.

FOR LOAD — обеспечивает обратную совместимость со сценариями SQL, написанными для предыдущих версий SQL Server.

FOR ATTACH — указывает, что файлы базы данных уже существуют.

Оператор SQL создание таблицы.

Основные требования:

1. Создание таблиц с учётом поддержки целостности

2. Поддержка целостности - сохранение согласованности информации при её изменении.

3. Структурная целостность - БД, должна оставаться реляционной, не должно появляться двойных строк.

4. Языковая целостность - должен используется язык не ниже SQL (для работы с данными)

5. Ссылочная целостность: Каскадное удаление(удаление связных записей ), Каскадное обновление

Семантическая целостность - выполнение условий работы с данными, которые относятся к предметной области. (Например, возраст неотрицателен; Число часов целое; Студент сначала принят, а потом отчислен; )

Реализация в SQL: CREATE TABLE имя_таблицы (имя таблицы [значение по умолчанию][ограничения], ограничения)

Типы данных:

Символьные: char (длина) 1 символ - 1 байт

varchar (длина) символьное поле переменной длины

nchar (длина) символьное поле UNICODE

nvarchar символьное поле переменной длины UNICODE

UNICODE

1символ = 2 байта

Числовые:

Int - целое 4 байта

Smallint - целое 2 байта

Datetime - дата/время (~до микросекунд)

Smalldatetime- дата/время (~1 минута, 1.01.1900-6.06.2079).

 

 

Импортирование базы данных из MS Access 2008 в SQL Server

 

1. В меню Пуск находим «Среда SQL Server Management Studio»

 

2. Открываем. Появится окошко соединения с сервером

 

3. В поле «Имя сервера» в выпадающем списке нажимаем на Обзор и выбираем сервер STUD-SRV

 

 

4. Соединившись с сервером создаем новую базу данных формата «Группа_Фамилия»

5. После создания БД открываем Импорт и экспорт данных

 

6. В поле источник данных выбираем «Microsoft Office 12.0 Acces…»

 

 

7. Нажимаем на кнопку «Свойства»

 

8. В поле «источник данных» вставляем путь к нашей БД

 

 

9. Нажимаем ОК и Далее. На следующем окне в имени сервера выбираете STUD-SRV и выбираете ниже вашу созданную базу данных

 

 

10. Выбираете таблицы которые нужно Импортировать

 

 

Ваша БД успешно импортирована в SQL Server.

 

 

ПРАКТИЧЕСКИЕ ЗАДАНИЯ.

 

1. Научитесь использовать средства создания базы данных СУБД MS SQL Server. Для этого:

1. Создать БД, используя компоненту Enterprise Manager:

· запустите программу Enterprise Manager ПУСК/ПРОГРАММЫ/ MS SQL Server/ Enterprise Manager;

· познакомьтесь с меню команд;

· подключитесь к серверу STUD SRV (уточните имя сервера у преподавателя);

· создайте свою базу данных с именем номер группы_ФИО, например, 431_ИвановИИ;

· познакомьтесь с объектами созданной БД.

2. Создать БД с именем номер группы_ФИО_N, используя другой метод создания БД:

 

3. Используя оператор создания базы данных CREATE DATABASE, создать новую БД с именем номер группы_ФИО_архив.

2. Научитесь импортировать данные из уже имеющейся БД в ACCESS средствами MS SQL Server.

1. В первую созданную вами средствами СУБД MS SQL Server БД с именем номер группы_ФИО импортируйте данные из уже имеющейся БД ACCESS «Учебный процесс». Для этого:

·

2. Создайте схему данных.

Научитесь создавать таблицы средствами MS SQL Server.

1. В уже готовую БД добавьте сведения об оплате за обучение (создать таблицу, добавить ее в диаграмму, установить необходимую связь, данными пока не заполнять). Для создания таблицы используйте SQL Server Enterprise Manager:

· через контекстное меню объекта Tables выберите команду New Table или нажмите кнопку New панели инструментов;

· в появившемся окне задайте параметры столбов создаваемой таблицы Обязательные параметры:

o имя столбца,

o тип данных,

o длина;

Дополнительные параметры:

o Allow Nulls – флажок говорит о том, что значение столба д.б. определено при создании новой записи,

o Default Value – задание значения по умолчанию,

o Identity – позволяет задавать значение столбца автоматически как счетчик в ACCESS только можно от любого начального значения Identity Seed с любым приращением Identity Increment,

o IsRowGuid – сообщает, что столбец используется как глобальный уникальный идентификатор,

o Formula – выражение, используемое при вычислении значения столбца.

Остальные свойства и атрибуты таблицы можно увидеть и отредактировать в окне Properties, которое открывается нажатием одноименной кнопки на панели инструментов. В этом задании оно вам не потребуется.

· Нажмите кнопку Save на панели инструментов для сохранения созданной таблицы с именем Оплата;

· Заполните таблицу данными, используя оператор Trasact-SQL INSERT INTU. (Необходимо сделать не менее 5 записей).

· Просмотрите заполненную таблицу Оплата. Для этого используйте контекстное меню и команду Open Table / Return All Rows. Здесь данные можно не только просмотреть, но и отредактировать.

Научитесь удалять БД средствами MS SQL Server.

Удалите ранее созданную базу номер группы_ФИО_N, применив команду Trasact-SQL DROP DATABASE < имя базы данных>. Будьте внимательны! Проверьте, то ли Вы удаляете!

5. Проверьте полученные знания, выполнив тестовые задания. (См. стр. Тестовые задания. Тема 4).

 

Тема 5. Создание запросов. Язык запросов DQL.

Необходимые знания.

Структура языка SQL:

· DDL – язык определения данных,

· DQL – язык запросов,

· DML – язык манипулирования данными,

· DCL – язык управления данными,

· команды администрирования данных,

· команды управления транзакциями

В этой теме мы займемся изучением только языка запросов DQL.

Язык DQL имеет всего один оператор SELECT, но обладающий огромными возможностями. Этот единственный оператор поиска реализует все операции реляционной алгебры. Однако писать запросы на языке SQL (грамотные запросы) сначала совсем не просто. Надо учиться, так же как надо учиться решать математические задачки или составлять алгоритмы для решения непростых комбинаторных задач. Один и тот же запрос может быть реализован несколькими способами, и, будучи все правильными, они, тем не менее, могут существенно отличаться по времени исполнения, и это особенно важно для больших баз данных.

Синтаксис оператора SELECT имеет следующий вид:

SELECT [ALL | DISTINCT] «писок полей> |*)

FROM < Список таблиц>

[WHERE < Предикат-условие выборки или соединения> ]

[GROUP BY < Список полей результата> ]

[HAVING < Предикат-условие для группы> ]

[ORDER BY < Список полей, по которым упорядочить вывод> ]

Символ *. (звездочка) означает, что в результирующий набор включаются все столбцы из исходных таблиц запроса.

В разделе FROM задается перечень исходных отношений (таблиц) запроса.

В разделе WHERE задаются условия отбора строк результата или условия соединения кортежей исходных таблиц, подобно операции условного соединения в реляционной алгебре.

В разделе GROUP BY задается список полей группировки.

В разделе HAVING задаются предикаты-условия, накладываемые на каждую группу.

В части ORDER BY задается список полей упорядочения результата, то есть список полей, который определяет порядок сортировки в результирующем отношении. Например, если первым полем списка будет указана Фамилия, а вторым Номер группы, то в результирующем отношении сначала будут собраны в алфавитном порядке студенты, и если найдутся однофамильцы, то они будут расположены в порядке возрастания номеров групп.

 

Оператор SELECT предназначен для выборки информации из таблиц БД и представления нужным образом результата.

Для выборки необходимо указать как минимум две вещи:

· что выбрать,

· откуда выбрать.

В общем виде оператор выглядит следующем образом.

SELECT [ALL | DISTINCT] {* | [имя столбца [AS новое имя]]} [, …n]

FROM имя таблицы [[AS] псевдоним] [, …n]

[WHERE < условие поиска> ] [GROUP BY имя столбца [, …n] [HAVING < условие для группы> ]

[ORDER BY имя столбца [, …n]]

На первый взгляд это выглядит ужасно, но если разобраться, здесь нет ничего сложного. Попробуйте исключить все, что записано в квадратных скобках как необязательное. Что получим?

SELECT *

FROM имя таблицы

Мы написали запрос, позволяющий вывести для всех полей (это знак *) все записи из таблицы, имя которой указано после слова FROM.

Например:

SELECT *

FROM Преподаватели;

Если нужны не все поля, то следует вместо знака * указать список имен этих полей.

Например:

1. Вывести фамилии всех студентов и номера их зачеток

SELECT ФИО, N_зачетки

FROM Студент;

Итак, запомним -

SELECT что вывести (какие столбцы)

FROM откуда вывести (из каких таблиц)

Если Вы хотите упорядочить выводимые данные, используйте сортировку, которая задается предложением ORDER BY, гдеуказывается по значениям какого столбца следует сортировать и как сортировать. Предложение ORDER BY должно быть последним в операторе SELECT.

Сортировать можно по нескольким столбцам.

По умолчанию сортировка выполняется по возрастанию значений ( ASC ).

Для сортировки по убыванию необходимо в конце ORDER BY предложения записать ключевое слово DESCENDING сокращенно DESC

Например:

1. Вывести по алфавиту фамилии всех студентов с указанием номеров их зачеток

SELECT ФИО, N_зачетки

FROM Студент

ORDER BY ФИО;

2. Вывести список студентов по убыванию значений поля «год рождения»

SELECT ФИО, N_зачетки, год_рождения

FROM Студент

ORDER BY ФИО, год_рождения DESC ;

Если Вы хотите вывести не просто все имеющиеся записи, а вывести с применением некоторого условия, то применяйте предложение WHERE.

Существует 5 основных типов условий поиска в предложении WHERE:

· сравнение,

· попадание в заданный диапазон,

· принадлежность множеству,

· соответствие строкового значения заданному шаблону,

· проверка на значение NULL.

Рассмотрим эти условия.

Сравнение -

WHERE логическое выражение

Например:

Вывести все сведения их таблицы «Ведомость» для записей, где значения в поле Оценка > 3.

SELECT *

FROM Ведомость

WHERE Оценка> 3;

Логическое выражение может быть сложным, тогда следует вспомнить, что

· логическое выражение вычисляется слева направо,

· сначала вычисляется то, что в скобках,

· логические операции выполняются в следующей последовательности сначала NOT затем AND потом OR.

Диапазон в предложении WHERE задается оператором BETWEEN, в котором указываются минимальное значение диапазона AND максимальное значение диапазона (граничные значения включаются).

Конструкция NOT BETWEEN – для поиска значений вне диапазона

Например:

Из таблицы Товар вывести данные о товаре ценой от 500 до 1500

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

FROM Товар

WHERE Цена BETWEEN 500 AND 1500;

Принадлежность множеству

Оператор IN(список заданных значений) проверяет соответствие списку заданных значений, NOT IN – наоборот несоответствие.

Например:

Вывести из таблицы Студенты данные о студентах, родившихся в 1990 и 1991 годах

SELECT *

FROM Студенты

WHERE Год_рождения IN(1990, 1991);

Соответствие строкового значения заданному шаблону -

используется оператор LIKE ” шаблон.

В шаблоне используются следующие символы:

% -заменяет любое количество любых символов;

_-заменяет один символ;

[]-предлагает набор символов;

[^]-предлагает все символы кроме указанных.

Например:

Найти студентов, у которых в номере телефона:

Третья цифра 8

WHERE Студент.Телефон LIKE ”_ _8%”

Вторая цифра 5 или 9

WHERE Студент.Телефон LIKE ”_[59]%”

Вторая цифра 5, 6 или 7

WHERE Студент.Телефон LIKE ”_[5-7]%”

Встречается 23

WHERE Студент.Телефон LIKE ”%23% ”

Проверка на значение NULL – т.е. поиск записей, в которых значение некоторого поля в данный момент отсутствует

Например:

Найти студентов без телефона:

SELECT ФИО

FROM Студент

WHERE Телефон IS NULL;

Найти студентов с телефоном:

SELECT ФИО, Телефон

FROM Студент

WHERE Телефон IS NOT NULL;

С помощью SELECT можно осуществлять вычисления по данным в соответствии с формулой (выражением), где используются обращения к данным заданных полей, константы, встроенные функции языка и знаки арифметических операций.

SELECT список полей, выражение AS имя поля-результата.

Например:

Вывести список фамилий студентов с указанием предполагаемого года окончания университета, если в БД хранится дата поступления и известен срок обучения:

SELECT ФИО, YEAR (Дата_поступления)+5 AS ГОД_выпуска

FROM СТУДЕНТЫ;

В этом запросе в выражении YEAR (Дата_поступления)+5 функция YEAR (Дата_поступления) дает год поступления из значения поля Дата_поступления, затем прибавляется срок обучения 5 лет.

Подведение итогов в простых запросах

Например:

Вычислить общее количество студентов факультета

SELECT COUNT (*) AS всего_студентов

FROM СТУДЕНТЫ;

Вычислить общее количество студентов в группе 434

SELECT COUNT (ФИО) AS всего_студентов

FROM СТУДЕНТЫ

WHERE группа=‘434’;

А как быть, если надо подсчитать количество студентов в каждой группе факультета? Правильно, нужно использовать группировку, применив предложение GROUP BY имя поля, по которому нужно группировать.

В нашем примере будет

SELECT Группа, COUNT (ФИО) AS всего_студентов

FROM СТУДЕНТЫ

GROUP BY Группа;

А как применить условие к сгруппированным данным? Нужно знать, что есть предложение HAVING и простые правила:

· предложение HAVING для групп тоже, что WHERE для записей,

· WHERE фильтрует строки, а HAVING – группы.

· WHERE фильтрует до группировки, а HAVING – после.

Например

Определить группы с количеством студентов более 20

SELECT Группа, COUNT (ФИО) AS всего_студентов

FROM СТУДЕНТЫ

GROUP BY Группа

HAVING COUNT (ФИО)> 20;

А можно ли в запросе с группировкой применять WHERE? Конечно, если нужно.

Например,

найти группы только 4-го курса, где количество студентов > 20

SELECT Группа, COUNT (ФИО) AS всего_студентов

FROM СТУДЕНТЫ

WHERE Группа LIKE ”_4*”

GROUP BY Группа

HAVING COUNT (ФИО)> 20;

Если вы еще помните, в нашем университете в номере группы второй символ обозначает номер курса, поэтому LIKE ”_4*”

До сих пор мы рассматривали возможность обращения к данным только одной таблицы. Чтобы извлечь данные, хранящиеся в нескольких таблицах с помощью оператора SELECT, необходимо их объединить.

Объединение – это самая мощная операция SQL.

Чтобы объединить, нужно указать все необходимые таблицы и «объяснить», как они между собой связаны. Можно этого достичь с помощью предложения WHERE. А если об этом забыть, то эффект будет весьма неожиданным и может вас потрясти количеством выведенных записей

Например, если решая задачу выбора сведения об оценках, полученных студентами на экзаменах с указанием фамилии, вы напишите

SELECT ФИО, N_зачетки, Оценка

FROM Студенты, Ведомость;

то результатом такого запроса будет декартово произведение. В случае если в таблице Студент было 30 записей, а таблице Ведомость - 120 записей, то в результате выполнения такого запроса получится 3600 записей. Как вам такой результат?!


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-28; Просмотров: 987; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.085 с.)
Главная | Случайная страница | Обратная связь