Тарифы Услуги Сим-карты

Основы T-SQL. Как составлять SQL-запросы - подробные примеры

В sql server’е базы данных хранятся в виде обычных файлов на диске. Как минимум на одну БД приходится таких файлов 2: *.mdf и *.ldf. В первом хранятся сами данные, таблицы, индексы и пр., а во втором находится т.н. transaction log, в котором находится информация необходимая для восстановления БД.

Как можно создать новую БД? Это можно сделать 2 способами:

используя sql server enterprise manager
с использованием языка sql и оператора create database
Первый вариант прост и нагляден. Второй — удобен при распространении Ваших замечательных продуктов, использующих ms sql server, поскольку позволяет создать БД без нажатия разных кнопок.

Использование sql server enterprise manager

Залогиньтесь на Ваш компьютер как administrator или как пользователь, входящий в локальную группу administrators
Запустите sql server enterprise manager.
Раскройте Вашу группу sql серверов. Затем раскройте Ваш sql сервер. (раскрыть — значит щелкнуть мышкой на "+" в дереве объектов enterprise manager).
Щелкните на Вашем сервере.
В меню tools выберите пункт wizards…. В появившемся окне раскройте пункт database, щелкните на create database wizard и нажмите ok.
На экране появится окно "волшебника" по созданию БД. Жмем "next"
На этом шаге "волшебник" поинтересуется у Вас именем БД, а также местом ее расположения на необъятных просторах Ваших дисков 🙂 Проще говоря нужно указать название БД (лучше не использовать русские буквы в имени БД), а также расположение файлов.mdf и.ldf
Я назвал ее гордым именем sqlstepbystep и в дальнейшем буду на нее так и ссылаться.
Теперь от Вас потребуется указать начальный размер БД и имя файла для хранения данных. укажите размер сколько Вам не жалко для экспериментов. imho, 5 МБ будет вполне достаточно. Имя файла тоже вполне произвольно. Например, я ввел sqlstep.
Этот шаг называется: "Определение роста БД", т.е. требуется определить как будет (и будет ли) изменяться размер БД по мере добавления данных. Даны две группы опций:
do not automatically grow the database files — запретить автоматический рост файлов БД
automatically grow the database file — автоматический рост файлов БД, выбрано по умолчанию. Пусть так и будет.
В случае автоматического роста файлов можно задать прирост БД в мегабайтах или в процентах (по умолчанию стоит 10%). Кроме того можно ограничить или неограничивать максимальный размер БД (по умолчанию — неограниченно). Выбор тех или иных значений зависит от назначения БД, интенсивности и характера ее использования, т.е. от Ваше конкретной задачи. Как правильно (с моей колокольни 🙂 выбрать эти параметры мы рассмотрим позднее, в шагах посвященных вопросам оптимизации.
С параметрами файла данных определились, теперь требуется определиться с параметрами лога. Они точно такие же. Обязательно введите имя файла лога отличное от имени файла БД, просто добавьте к нему log
Нажмете "next" и можно посмотреть на итоговый отчет. Если все в порядке нажмите "finish" БД и создастся. Об этом вы получите сообщение, а затем Вам будет предложено создать maintenance plan нам сейчас не нужен, поэтому откажитесь.

Использование sql оператора create database

Оператор create database может повторить все ваши действия, описанные выше. Собственно enterprise manager "перевел" ваши нажатия в этот оператор и передал его sql server’у. Почти все функции enterprise manager’а именно так и выполняются: у пользователя запрашиваются данные, формируется оператор замечательного языка sql (который мы рассмотрим позднее) и передается для выполнения sql server, а результаты выполнения показывают пользователю.

Рассмотрим поближе синтаксис оператора create database.

create database database_name (name = logical_file_name, filename = "os_file_name" [, size = size] [, maxsize = max_size] [, filegrowth = growth_increment]) } [,...n] ] ) } [,...n] ]


filename — полный путь и имя файла для размещения БД, должен указывать на локальный диск компьютера, на котором установлен sql server.
size — начальный размер каждого файла в Мб.
maxsize — максимальный размер файла в Мб, если не указана размер не ограничивается.
filegrowth — единица увеличения файла, указывается в Мб (по умолчанию) или в процентах (т.е. к числу добавляется %), значение 0 запрещает увеличение файла.
Теперь посмотрим как выглядит создание БД:

create database sqlstepbystep on primary (name=sqlstepdata, filename="c:mssql7datasqlstep_data.mdf", size=5, maxsize=10, filegrowth=10%) log on (name=sqlsteplog, filename="c:mssql7datasqlstep_log.ldf", size=1, maxsize=5, filegrowth=1)

Чтобы проверить эту команду, запустите query analyzer — очень полезная утилита, для выполнения sql запросов. Подключитесь к Вашему серверу и в окне ввода команд наберите этот оператор. Отправьте запрос на выполнение (клавишей f5 или ctrl-e или щелкните мышкой на кнопке с зеленой стрелкой). Все пошуршит и вскоре внизу, в окне сообщений, появится сообщение о том что БД создана успешно (или нет).

Все что мы создали можно и уничтожить. Удаление БД очень просто, как говорится "ломать не строить". sql оператор:

drop database <имя бд>

Набирается в query analyzer и запускается на выполнение. Фю-ю-и-ить, и БД уже нет.
В enterprise manager’e выберите БД щелкните правой кнопкой мыши и в контекстном меню выберите "delete" и все… пропало.

На следующем этапе мы рассмотрим создание таблиц, типы данных в transact-sql.

Инсталлируйте программное обеспечение SQL Server Management Studio. Это программное обеспечение можно бесплатно загрузить с сайта Microsoft. Оно позволяет вам подключаться и управлять вашим SQL сервером через графический интерфейс вместо того, чтобы использовать командную строку.

Запустите SQL Server Management Studio. При первом запуске программы вам будет предложено выбрать, к какому сервер подключаться. Если у вас уже есть сервер и вы работаете, имеете необходимые разрешения для подключения к нему, то можете ввести адрес сервера и идентификационную информацию. Если вы хотите создать локальную базу данных, установите имя базы данных Database Name как. и тип аутентификации как "Windows Authentication".

  • Нажмите кнопку Подключить чтобы продолжить.
  • Определите место для папки Databases. После выполнения соединения с сервером (локальное или удаленное), откроется окно обозревателя объектов Object Explorer в левой стороне экрана. В верхней части дерева обозревателя объектов будет сервер, к которому вы подключены. Если дерево не расширено, нажмите на значок "+" рядом с ним. Определите место папки базы данных Databases.

    Создайте новую базу данных. Щелкните правой кнопкой мыши по папке Databases и выберите пункт "New Database...". Появится окно, которое позволяет настроить базу данных перед ее созданием. Дайте имя базе данных, которое поможет вам идентифицировать ее. Большинство пользователей могут оставить значения остальных настроек по умолчанию.

    • Вы заметите, что при вводе имени базы данных два дополнительных файла будут созданы автоматически: Data и Log. Файл данных (Data) вмещает все данные в вашей базе данных, в то время как файл журнала (Log) отслеживает изменения в базе данных.
    • Нажмите кнопку OK, чтобы создать базу данных. Вы увидите вашу новую базу данных, которая появится в развернутой папке Databases. Она будет иметь значок цилиндра.
  • Создайте таблицу. База данных может только хранить данные, если вы создаете структуру для этих данных. Таблица содержит информацию, которую вы вводите в вашу базу данных, и вам нужно будет создать ее, прежде чем можете продолжить. Разверните новую базу данных в папке Databases, и щелкните правой кнопкой мыши на папке Tables и выберите пункт "New Table...".

    • Windows откроется в остальной части экрана, позволяя вам управлять вашей новой таблицей.
  • Создайте Primary Key (первичный ключ). Настоятельно рекомендуется, чтобы вы создавали первичный ключ в качестве первого столбца в вашей таблице. Он действует как идентификационный номер, или номер записи, что позволит вам легко выводить эти записи позже. Для его создания введите "ID" в столбце Name field, тип int в поле Data Type и снимите флажок "Allow Nulls". Нажмите на значок Key iна панели инструментов, чтобы установить этот столбец в качестве Primary Key (первичного ключа).

    • Вы же не хотите допустить нулевые значения, так как всегда хотите иметь запись по крайней мере "1". Если вы разрешите 0, ваша первая запись будет "0".
    • В окне Column Properties прокрутите вниз, пока не найдете опцию Identity Specification. Разверните ее и установите "(ls Identity)" на "Yes". Эта опция автоматически увеличит значение столбца ID для каждой записи, автоматически нумеруя каждую новую запись.
  • Разберитесь, как устроены таблицы. Таблицы состоят из полей или столбцов. Каждый столбец представляет один из аспектов записи базы данных. Например, если вы создаете базу данных сотрудников, вы можете иметь столбец "FirstName", столбец "LastName", столбец "Address" и столбец "PhoneNumber".

    Создайте остальные столбцы. Когда закончите заполнение полей для Primary Key, заметите, что новые поля появляются под ним. Это позволит вам войти в свой следующий столбец. Заполните поля, как считаете нужным, и убедитесь, что правильно выбрали тип данных для информации, которая будет введена в этом столбце:

    • nchar(#) - это тип данных следует использовать для текста, как имена, адреса и т.д. Число в скобках – это максимальное количество символов, разрешенное для это го поля. Установление лимита гарантирует, что ваш размер базы данных остается управляемым. Номера телефонов должны быть сохранены в этом формате, так как вы не выполняете математические функции с ними.
    • int - это целые числа, и обычно используются в поле идентификатора.
    • decimal(x,y) - будут хранить числа в десятичной форме, а числа в скобках обозначают соответственно общее количество цифр и количество цифр после десятичной. Например, decimal(6,2) будет сохранять числа как 0000.00.
  • Сохраните вашу таблицу. Когда вы закончите создавать свои столбцы, то вам нужно сохранить таблицу перед вводом информации. Щелкните на значке Save на панели инструментов, а затем введите название таблицы. Рекомендуется присваивать имя таблице таким образом, чтобы оно помогло вам распознать содержимое, особенно для больших баз данных с несколькими таблицами.

    Добавьте данные в вашу таблицу. После того, как вы сохранили таблицу, можете начать добавлять в нее данные. Откройте папку Tables в окне обозревателя объектов Object Explorer. Если вашей новой таблицы нет в списке, щелкните правой кнопкой мыши на папке Tables и выберите Refresh. Щелкните правой кнопкой мыши по таблице и выберите "Edit Top 200 Rows".

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

    1. Добавление нового пользователя

    Запускаем программу «Среда SQL Server Management Studio » («Пуск » — «Microsoft SQL Server 2008 R2 » — «Среда SQL Server Management Studio ») .

    В открывшемся окне выбираем:

    • Тип сервера: «Компонент Database Engine » .
    • Имя сервера в формате «<Имя компьютера>\<Идентификатор экземпляра> » , где
      <Имя компьютера> — имя физического компьютера на котором установлен SQL Server (в моем примере «S4 »).
      <Идентификатор экземпляра> — задается только в случае подключения к именованному экземпляра SQL Server.
    • Проверка подлинности:«Проверка подлинности SQL Server » или «Проверка подлинности Windows »
    • Имя входа: имя пользователя SQL Server.
    • Пароль: в случае проверки подлинности SQL Server, пароль для выбранного пользователя.

    После чего нажимаем «Соединить » .

    Если все введено верно, в окне «Обозреватель объектов » мы увидим вкладку с именем нашего SQL-сервера. В нем раскрываем вкладку «Безопасность » — «Имена входа » и в контекстном меню выбираем «Создать имя входа » .

    Откроется окно «Создание имени входа » . На вкладке «Общие » заполняем:

    • Имя входа: наименование пользователя SQL.
    • Проверку подлинности выбираем: SQL Server.
    • Придумываем пароль для пользователя.

    (При необходимости можно определить и остальные настройки безопасности). Затем переходим на вкладку «Роли сервера » .

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

    • sysadmin

    Если создается пользователь для подключения программ или , то достаточно указания ролей

    • dbcreator
    • processadmin
    • public

    назначается всем пользователям.

    Указав все необходимые роли для создаваемого пользователя нажимаем «ОК » .

    На этом процедура создания пользователя завершена.

    2. Создание новой базы данных

    Для добавления новой базы данных, в «Среде Microsoft SQL Server Management Studio » кликаем правой кнопкой мышки на вкладке «Базы данных » и выбираем «Создать базу данных » .

    В открывшемся окне «Создание базы данных » на вкладке «Общие » заполняем:

    • Задаем имя базы данных. Имя базы данных не должно начинаться с цифры или иметь пробелы в названии, иначе получим ошибку:
      «неправильный синтаксис около конструкции %имя базы данных%» .
    • В качестве владельца выбираем созданного на предыдущем шаге пользователя.

    Затем переходим на вкладку «Параметры » .

    Здесь необходимо выбрать «Модель восстановления » базы данных и «Уровень совместимости » . Эти параметры зависят от того приложения, которое будет с создаваемой базой данных на SQL сервере. Например для необходимо задать

    • Уровень совместимости: «SQL Server 2000 (80) » .

    Очень внимательно стоит отнестись к параметру «Модель восстановления » создаваемой базы данных. Подробно про модели восстановления баз данных и о том, на что данный параметр влияет, я писал . Если сомневаетесь — выбирайте простую модель восстановления.

    Определившись с параметрами нажимаем «ОК » .

    После чего в списке мы должны увидеть только что созданную базу данных.

    Помогла ли Вам данная статья?

    Аннотация: Определяется процесс создания базы данных. Описываются операторы создания, изменения базы данных. Рассматривается возможность указания имени файла или нескольких файлов для хранения данных, размеров и местоположения файлов. Анализируются операторы создания, изменения, удаления пользовательских таблиц. Приводится описание параметров для объявления столбцов таблицы. Дается понятие и характеристика индексов. Рассматриваются операторы создания и изменения индексов. Определяется роль индексов в повышении эффективности выполнения операторов SQL.

    База данных

    Создание базы данных

    В различных СУБД процедура создания баз данных обычно закрепляется только за администратором баз данных . В однопользовательских системах принимаемая по умолчанию база данных может быть сформирована непосредственно в процессе установки и настройки самой СУБД. Стандарт SQL не определяет, как должны создаваться базы данных , поэтому в каждом из диалектов языка SQL обычно используется свой подход. В соответствии со стандартом SQL, таблицы и другие объекты базы данных существуют в некоторой среде. Помимо всего прочего, каждая среда состоит из одного или более каталогов , а каждый каталог – из набора схем . Схема представляет собой поименованную коллекцию объектов базы данных , некоторым образом связанных друг с другом (все объекты в базе данных должны быть описаны в той или иной схеме ). Объектами схемы могут быть таблицы , представления, домены, утверждения, сопоставления, толкования и наборы символов. Все они имеют одного и того же владельца и множество общих значений, принимаемых по умолчанию.

    Стандарт SQL оставляет за разработчиками СУБД право выбора конкретного механизма создания и уничтожения каталогов , однако механизм создания и удаления схем регламентируется посредством операторов CREATE SCHEMA и DROP SCHEMA . В стандарте также указано, что в рамках оператора создания схемы должна существовать возможность определения диапазона привилегий, доступных пользователям создаваемой схемы . Однако конкретные способы определения подобных привилегий в разных СУБД различаются.

    В настоящее время операторы CREATE SCHEMA и DROP SCHEMA реализованы в очень немногих СУБД. В других реализациях, например, в СУБД MS SQL Server, используется оператор CREATE DATABASE .

    Создание базы данных в среде MS SQL Server

    Процесс создания базы данных в системе SQL-сервера состоит из двух этапов: сначала организуется сама база данных , а затем принадлежащий ей журнал транзакций . Информация размещается в соответствующих файлах, имеющих расширения *.mdf (для базы данных ) и *.ldf . (для журнала транзакций ). В файле базы данных записываются сведения об основных объектах (таблицах , индексах , представлениях и т.д.), а в файле журнала транзакций – о процессе работы с транзакциями (контроль целостности данных, состояния базы данных до и после выполнения транзакций).

    Создание базы данных в системе SQL-сервер осуществляется командой CREATE DATABASE . Следует отметить, что процедура создания базы данных в SQL-сервере требует наличия прав администратора сервера.

    <определение_базы_данных> ::= CREATE DATABASE имя_базы_данных [ <определение_файла> [,...n] ] [,<определение_группы> [,...n] ] ] [ LOG ON {<определение_файла>[,...n] } ] [ FOR LOAD | FOR ATTACH ]

    Рассмотрим основные параметры представленного оператора.

    При выборе имени базы данных следует руководствоваться общими правилами именования объектов. Если имя базы данных содержит пробелы или любые другие недопустимые символы, оно заключается в ограничители (двойные кавычки или квадратные скобки). Имя базы данных должно быть уникальным в пределах сервера и не может превышать 128 символов.

    При создании и изменении базы данных можно указать имя файла, который будет для нее создан, изменить имя, путь и исходный размер этого файла. Если в процессе использования базы данных планируется ее размещение на нескольких дисках, то можно создать так называемые вторичные файлы базы данных с расширением *.ndf . В этом случае основная информация о базе данных располагается в первичном (PRIMARY ) файле, а при нехватке для него свободного места добавляемая информация будет размещаться во вторичном файле . Подход, используемый в SQL-сервере, позволяет распределять содержимое базы данных по нескольким дисковым томам.

    Параметр ON определяет список файлов на диске для размещения информации, хранящейся в базе данных .

    Параметр PRIMARY определяет первичный файл . Если он опущен, то первичным является первый файл в списке.

    Параметр LOG ON определяет список файлов на диске для размещения журнала транзакций . Имя файла для журнала транзакций генерируется на основе имени базы данных , и в конце к нему добавляются символы _log .

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

    <определение_файла>::= ([ NAME=логическое_имя_файла,] FILENAME="физическое_имя_файла" [,SIZE=размер_файла ] [,MAXSIZE={max_размер_файла |UNLIMITED } ] [, FILEGROWTH=величина_прироста ])[,...n]

    Здесь логическое имя файла – это имя файла, под которым он будет опознаваться при выполнении различных SQL-команд.

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

    Параметр SIZE определяет первоначальный размер файла; минимальный размер параметра – 512 Кб, если он не указан, по умолчанию принимается 1 Мб.

    Параметр MAXSIZE определяет максимальный размер файла базы данных . При значении параметра UNLIMITED максимальный размер базы данных ограничивается свободным местом на диске.

    При создании базы данных можно разрешить или запретить автоматический рост ее размера (это определяется параметром FILEGROWTH ) и указать приращение с помощью абсолютной величины в Мб или процентным соотношением. Значение может быть указано в килобайтах, мегабайтах, гигабайтах, терабайтах или процентах (%). Если указано число без суффикса МБ, КБ или %, то по умолчанию используется значение MБ. Если размер шага роста указан в процентах (%), размер увеличивается на заданную часть в процентах от размера файла. Указанный размер округляется до ближайших 64 КБ.

    Дополнительные файлы могут быть включены в группу:

    <определение_группы>::=FILEGROUP имя_группы_файлов <определение_файла>[,...n]

    Пример 3.1 . Создать базу данных , причем для данных определить три файла на диске C, для журнала транзакций – два файла на диске C.

    CREATE DATABASE Archive ON PRIMARY (NAME=Arch1, FILENAME=’c:\user\data\archdat1.mdf’, SIZE=100MB, MAXSIZE=200, FILEGROWTH=20), (NAME=Arch2, FILENAME=’c:\user\data\archdat2.mdf’, SIZE=100MB, MAXSIZE=200, FILEGROWTH=20), (NAME=Arch3, FILENAME=’c:\user\data\archdat3.mdf’, SIZE=100MB, MAXSIZE=200, FILEGROWTH=20) LOG ON (NAME=Archlog1, FILENAME=’c:\user\data\archlog1.ldf’, SIZE=100MB, MAXSIZE=200, FILEGROWTH=20), (NAME=Archlog2, FILENAME=’c:\user\data\archlog2.ldf’, SIZE=100MB, MAXSIZE=200, FILEGROWTH=20) Пример 3.1. Создание базы данных.