;
Столбец будет добавлен со значением NULL для всех строк таблицы. Новый столбец станет последним по порядку столбцом таблицы. Вообще то, можно добавить сразу несколько новых столбцов, отделив их запятыми, в одной команде. Имеется возможность удалять или изменять столбцы. Наиболее часто, изменением столбца может быть просто увеличение его размера, или добавление (удаление) ограничения.
Удаление таблица:
Нужно быть создателем таблицы, чтобы иметь возможность удалить ее. Поэтому не волнуйтесь о случайном разрушении ваших данных, SQL сначала потребует чтобы вы очистили таблицу прежде, чем удалит ее из базы данных. Таблица с находящимися в ней строками, не может быть удалена. Синтаксис для удаления вашей таблицы, если конечно она является пустой, следующая:
DROP TABLE < table name >;
2.3 Выборка данных из таблицы
SELECT - оператор DML языка SQL, возвращающий набор данных (выборку) из базы данных, удовлетворяющих заданному условию. В большинстве случаев, выборка осуществляется из одной или нескольких таблиц. При формировании запроса SELECT пользователь описывает ожидаемый набор данных: его вид (набор столбцов) и его содержимое (критерий попадания записи в набор, группировка значений, порядок вывода записей и т. п.).
Запрос выполняется следующим образом:
сначала извлекаются все записи из таблицы, а затем для каждой записи набора проверяется её соответствие заданному критерию. Если осуществляется слияние из нескольких таблиц, то сначала составляется произведение таблиц, а уже затем из полученного набора отбираются требуемые записи.
Формат запроса с использованием данного оператора:
SELECT список полей FROM список таблиц WHERE условия…
{*[список полей]} FROM <список таблиц>
WHERE - используется для определения, какие строки должны быть выбраны или включены в GROUP BY.
GROUP BY - используется для объединения строк с общими значениями в элементы меньшего набора строк.
HAVING - используется для определения, какие строки после GROUP BY должны быть выбраны.
ORDER BY - используется для определения, какие столбцы используются для сортировки результирующего набора данных.
Один и тот же набор данных может быть получен при выполнении различных запросов. Поиск оптимального плана выполнения данного запроса является задачей оптимизатора.
2.4 Создание SQL-запросов.
Запрос– это средство выбора необходимой информации из базы данных. Вопрос, сформированный по отношению к базе данных, и есть запрос. SQL – запросы – это запросы, которые составляются (программистами) из последовательности SQL – инструкций. Эти инструкции задают, что надо сделать с входным набором данных для генерации выходного набора. Все запросы Access строит на основе SQL – запросов, чтобы посмотреть их, необходимо в активном окне проектирования запроса выполнить команду Вид/SQL.
Существует несколько типов запросов: на выборку(приведён выше), на обновление, на добавление, на удаление, перекрестный запрос, создание таблиц. Наиболее распространенным является запрос на выборку. Запросы на выборку используются для отбора нужной пользователю информации, содержащейся в таблицах. Они создаются только для связанных таблиц.
Для того чтобы создать запрос на языке SQL, для начала создаём пустой запрос в режиме конструктора. Для этого на вкладке Создание нужно выбрать пункт Конструктор запросов. Далее на вкладке Конструктор выберем пункт Режим и изменим режим построения запросов на Режим SQL.
Создание запроса в режиме SQL похоже на программирование, пользователю предстоит вручную набрать нужные команды. Запрос на выбор информации начинается словом SELECT. Далее нужно перечислить нужные поля таблицы, напечатаем наименование таблицы, поставим точку, а в квадратных скобках наберем имя поля из этой таблицы и т.д. Поля отделяются запятыми.
Запрос заканчивается служебным словом FROM, после которого указывается таблица, из которой была взята информация. В конце строки запроса должна стоять точка с запятой.
Для проверки правильности написания запроса выполним его. Для этого нажмем на кнопку Выполнить на панели Конструктор. Итог запроса будет отображен в таблице. Если запрос был записан неправильно, то будет получено сообщение об ошибке. В этом случае нужно в первую очередь проверить правильность написания наименований таблиц и полей.
2.5 Обработка данных в SQL:
Запросы могут производить обобщенную групповую обработку значений полей, что реализуется с помощью агрегатных функций. В SQL допускаются следующие агрегатные функции:
COUNT - производит подсчет количества строк или не-NULL значений полей, которые выбрал запрос;
SUM - рассчитывает арифметическую сумму всех выбранных значений данного поля;
AVG - производит усреднение всех выбранных значении данного поля;
МАХ - находит и возвращает наибольшее из всех выбранных значений
MIN - находит и возвращает наименьшее из всех выбранных значений данного поля.
Для упорядочения вывода полей таблиц SQL использует команду ORDER BY, позволяя сортировать вывод запроса согласно значениям в том количестве выбранных столбцов.
Для размещения нескольких запросов вместе и объединения вывода используют предложение UNION. Предложение UNION объединяет вывод двух или более SQL запросов в единый набор строк и столбцов. Команда UNION автоматически исключает дубликаты строк из вывода.
Компьютерные сети
Вступление
Продолжим изучение SQL запросов к базе данных. Сегодня, один из простых SQL запросов, SQL запрос для создания таблицы базы данных. Работает запрос на основе оператора CREATE TABLE.
Создание таблицы базы данных
Есть оператор sql, который используется для создания таблиц баз данных. Оператор: CREATE TABLE.
Вспоминаем, что реляционная таблица базы данных должна иметь уникальные:
- Уникальное имя;
- Столбцы (атрибуты);
- Первичный ключ.
- Строки (записи);
Для начала, мы создаем, только таблицу и не заполняем её данными.
По-хорошему, общий вид таблицы с уникальными именами строк и столбцов задается при создании . Мы для примера создадим простенькую таблицу БД и обойдемся без концептуальной модели.
В этой статье создадим таблицу БД с покупателями. Покупатели взяты для примера.
Чем идентифицируется покупатель? Решаем, что каждый покупатель идентифицируется следующими данными:
- Фамилия;
- Логин;
- Пароль;
- Email;
- телефон.
Помним, что в таблице обязательно нужно задать .
Чтобы создать таблицу базы данных, используем оператор sql CREATE TABLE.
Синтаксис оператора такой:
CREATE TABLE
имя таблицы (столбец 1, тип столбца (пробел) параметр столбца (пробел), столбец 2, тип столбца (пробел) параметр столбца (пробел), столбец 3, тип столбца (пробел) параметр столбца (пробел), и т.д.)
В нашем варианте, имя таблицы: clients. Даем данным покупателей обозначения столбцов:
- Имя: пусть будет client_customer;
- Фамилия: client_subclient;
- Логин: client_login;
- Пароль: client_password;
- eMail: client_mail;
- Телефон: client_telefon.
Думаем, какой тип данных будет храниться в этих столбцах, и выбираем типы данных CHAR(длина поля постоянно) или VARCHAR(длинна поля переменное). В нашем случае подходит тип данных VARCHAR.
Особое внимание уделяем первичному ключу. Делаем первичным ключом id покупателя. В параметрах ключа задаем, что это первичный ключ, он не может быть нулём и что для следующей записи увеличивается на единицу. Последнее свойство называется автоинкремент. Смотрим подсказку в справочнике (ссылка выше) и получаем столбец с первичным ключом:
Client_id integer not null auto_increment primary key
Пишем SQL запрос для создания таблицы базы данных
Суммируем все исходные данные и получаем такой SQL запрос:
/*Таблица пользователей clients*/
create table clients
(/*client_id будет первичный ключ (обязательно целое число) с
автоинкрементом (+1), который никогда не будет равен нулю*/
client_id integer not null auto_increment primary key,
client_customer varchar(13), /*имя */
client_surclient varchar(22), /*фамилия */
client_login varchar(21), /*логин*/
client_passwd varchar(7), /*пароль*/
client_email varchar(44) /*email*/
client_telefon varchar(26) /*телефон*/);
Примечание:
SQL запрос для создания таблицы создаем в текстовом редакторе типа Notepad++. В скобках ограничиваем длину поля, может быть от 1 до 255.
Итоги статьи
- В этой статье мы познакомились с первым оператором SQL языка CREATE TABLE
- Создали SQL запрос для создания одной (первой) таблицы базы данных с первичным ключом.
Итак, мы познакомились с типами данных, теперь будем усовершенствовать таблицы для нашего форума. Сначала разберем их.
И начнем с таблицы users (пользователи). В ней у нас 4 столбца:
Id_user - целочисленные значения, значит будет тип int, ограничим его 10 символами - int (10).
name - строковое значение varchar, ограничим его 20 символами - varchar(20).
email - строковое значение varchar, ограничим его 50 символами - varchar(50).
password - строковое значение varchar, ограничим его 15 символами - varchar(15).
Все значения полей обязательны для заполнения, значит надо добавить тип NOT NULL.
Id_user int (10) NOT NULL
name varchar(20) NOT NULL
email varchar(50) NOT NULL
Первый столбец, как вы помните из концептуальной модели нашей БД, является первичным ключом (т.е. его значения уникальны, и они
однозначно идентифицируют запись). Следить за уникальностью самостоятельно можно, но не рационально. Для этого в SQL есть
специальный атрибут - AUTO_INCREMENT
, который при обращении к таблице на добавление данных высчитывает
максимальное значение этого столбца, полученное значение увеличивает на 1 и заносит его в столбец. Таким образом, в этом столбце
автоматически генерируется уникальный номер, а следовательно тип NOT NULL излишен. Итак, присвоим атрибут столбцу с первичным
ключом:
name varchar(20) NOT NULL
email varchar(50) NOT NULL
password varchar(15) NOT NULL
Теперь надо указать, что поле id_user является первичным ключом. Для этого в SQL используется ключевое слово
PRIMARY KEY ()
, в скобочках указывается имя ключевого поля. Внесем изменения:
Id_user int (10) AUTO_INCREMENT
name varchar(20) NOT NULL
email varchar(50) NOT NULL
password varchar(15) NOT NULL
PRIMARY KEY (id_user)
Итак, таблица готова, и ее окончательный вариант выглядит так:
Create table users (
id_user int (10) AUTO_INCREMENT,
name varchar(20) NOT NULL,
email varchar(50) NOT NULL,
password varchar(15) NOT NULL,
PRIMARY KEY (id_user)
);
Теперь разберемся со второй таблицей - topics (темы). Рассуждая аналогично, имеем следующие поля:
id_author int (10) NOT NULL
PRIMARY KEY (id_topic)
Но в модели нашей БД поле id_author является внешним ключом, т.е. оно может иметь только те значения, которые есть в поле
id_user таблицы users. Для того, чтобы указать это в SQL есть ключевое слово FOREIGN KEY ()
, которое имеет
следующий синтаксис:
FOREIGN KEY (имя_столбца_которое_является_внешним_ключом) REFERENCES имя_таблицы_родителя (имя_столбца_родителя);
Укажем, что id_author - внешний ключ:
Id_topic int (10) AUTO_INCREMENT
topic_name varchar(100) NOT NULL
id_author int (10) NOT NULL
PRIMARY KEY (id_topic)
FOREIGN KEY (id_author) REFERENCES users (id_user)
Таблица готова, и ее окончательный вариант выглядит так:
Create table topics (
id_topic int (10) AUTO_INCREMENT,
topic_name varchar(100) NOT NULL,
PRIMARY KEY (id_topic),
FOREIGN KEY (id_author) REFERENCES users (id_user)
);
Осталась последняя таблица - posts (сообщения). Здесь все аналогично, только два внешних ключа:
Create table posts (
id_post int (10) AUTO_INCREMENT,
message text NOT NULL,
id_author int (10) NOT NULL,
id_topic int (10) NOT NULL,
PRIMARY KEY (id_post),
FOREIGN KEY (id_author) REFERENCES users (id_user),
FOREIGN KEY (id_topic) REFERENCES topics (id_topic)
);
Обратите внимание, внешних ключей у таблицы может быть несколько, а первичный ключ в MySQL может быть только один.
В первом уроке мы удалили нашу БД forum, пришло время создать ее вновь.
Запускаем сервер MySQL (Пуск - Программы - MySQL - MySQL Server 5.1 - MySQL Command Line Client), вводим пароль, создаем
БД forum (create database forum;), выбираем ее для использования (use forum;) и создаем три наших таблицы:
Обратите внимание, одну команду можно писать в несколько строк, используя клавишу Enter (MySQL автоматически подставляет
символ новой строки ->), и только после разделителя (точки с запятой) нажатие клавиши Enter приводит к выполнению запроса.
Помните, если вы сделали что-то не так, всегда можно удалить таблицу или всю БД с помощью оператора DROP. Исправлять что-то
в командной строке крайне неудобно, поэтому иногда (особенно на начальном этапе) проще писать запросы в каком-нибудь редакторе,
например в Блокноте, а затем копировать и вставлять их в черное окошко.
Итак, таблицы созданы, чтобы убедиться в этом вспомним о команде show tables
:
И, наконец, посмотрим структуру нашей последней таблицы posts:
Теперь становятся понятны значения всех полей структуры, кроме поля DEFAULT. Это поле значений по умолчанию. Мы могли бы
для какого-нибудь столбца (или для всех) указать значение по умолчанию. Например, если бы у нас было поле с названием
"Женаты\Замужем" и типом ENUM ("да", "нет"), то было бы разумно сделать одно из значений значением по умолчанию.
Синтаксис был бы следующий:
Married enum ("да", "нет") NOT NULL default("да")
Т.е. это ключевое слово пишется через пробел после указания типа данных, а в скобках указывается значение по умолчанию.
Но вернемся к нашим таблицам. Теперь нам необходимо внести данные в наши таблицы. На сайтах, вы обычно вводите информацию в
какие-нибудь html-формы, затем сценарий на каком-либо языке (php, java...) извлекает эти данные из формы и заносит их в БД.
Делает он это посредством SQL-запроса на внесение данных в базу. Писать сценарии на php мы пока не умеем, а вот отправлять SQL-запросы
на внесение данных сейчас научимся.
Для этого используется оператор INSERT
. Синтаксис можно использовать двух видов. Первый вариант используется
для внесения данных во все поля таблицы:
INSERT INTO имя_таблицы VALUES ("значение_первого_столбца","значение_второго_столбца", ..., "значение_последнего_столбца");
Давайте попробуем внести в нашу таблицу users следующие значения:INSERT INTO users VALUES ("1","sergey", "[email protected]", "1111");
Второй вариант используется для внесения данных в некоторые поля таблицы:
INSERT INTO имя_таблицы ("имя_столбца", "имя_столбца") VALUES ("значение_первого_столбца","значение_второго_столбца");
В нашей таблице users все поля обязательны для заполнения, но наше первое поле имеет ключевое слово - AUTO_INCREMENT (т.е. оно
заполняется автоматически), поэтому мы можем пропустить этот столбец:INSERT INTO users (name, email, password) VALUES ("valera", "[email protected]", "2222");
Если бы у нас были поля с типом NULL, т.е. необязательные для заполнения, мы бы тоже могли их проигнорировать. А вот если
попытаться оставить пустым поле со значением NOT NULL, то сервер выдаст сообщение об ошибке и не выполнит запрос. Кроме того,
при внесении данных сервер проверяет связи между таблицами. Поэтому вам не удастся внести в поле, являющееся внешним ключом, значение,
отсутствующее в связанной таблице. В этом вы убедитесь, внося данные в оставшиеся две таблицы.
Но прежде внесем информацию еще о нескольких пользователях. Чтобы добавить сразу несколько строк, надо просто перечислять
скобки со значениями через запятую:
Теперь внесем данные во вторую таблицу - topics (темы). Все тоже самое, но надо помнить, что значения в поле id_author должны
присутствовать в таблице users (пользователи):
Теперь давайте попробуем внести еще одну тему, но с id_author, которого в таблице users нет (т.к. мы внесли в таблицу users только
5 пользователей, то id=6 не существует):
Сервер выдает ошибку и говорит, что не может внести такую строку, т.к. в поле, являющемся внешним ключом, стоит значение,
отсутствующее в связанной таблице users.
Теперь внесем несколько строк в таблицу posts (сообщения), помня, что в ней у нас 2 внешних ключа, т.е. id_author и id_topic,
которые мы будем вносить должны присутствовать в связанных с ними таблицах:
Итак, у нас есть 3 таблицы, в которых есть данные. Встает вопрос - как посмотреть, какие данные хранятся в таблицах. Этим
мы и займемся на следующем уроке.
Язык SQL
используется не только для обработки информации, но и предназначена для выполнения всех операций с базами данных и таблицами, включая также создание таблиц и работа с ними. Существует два способа создания таблиц: 1)
большинство СУБД обладают визуальным интерфейсом для интерактивного создания таблиц и управление ими; 2)
таблицами можно манипулировать, используя операторы SQL.
Стоит отметить, что, когда вы используете интерактивный инструментарий СУБД, на самом деле вся работа выполняется операторами SQL, т.е. интерфейс сам создает эти команды незаметно для пользователя (это подобно на запись макроса в Excel, когда макрорекодер записывает ваши действия и преобразует их в команды VBA).
1. Создание таблиц
Для создания таблиц программным способом используют оператор CREATE TABLE
. Для этого нужно указать следующие данные:
- - имя таблицы, которое указывается после ключевого слова CREATE TABLE
- - имена и определения столбцов таблицы, отделены запятыми
- - в некоторых СУБД также требуется, чтобы было указано местоположение таблицы.
Давайте создадим новую таблицу и назовем ее Customers
:
CREATE TABLE
Customers (
ID CHAR(10)
NOT NULL Primary key
,
Custom_name CHAR(25)
NOT NULL,
Custom_address CHAR(25)
NULL,
Custom_city CHAR(25)
NULL,
Custom_Country CHAR(25)
NULL,
ArcDate CHAR(25)
NOT NULL, DEFAULT
NOWO)
Так мы сначала указываем название новой таблицы, затем в скобках перечисляем столбцы, которие будем создавать, причем их названия не могут повторяться в пределах одной таблицы. После названий столбцов указывается тип данных для каждого поля (CHAR (10)
), затем отмечаем может ли поле содержать пустые значения (NULL
или NOT NULL
), а также нужно указать поле, которое будет первичным ключом (Primary key
).
Язык SQL также позволяет определять для каждого поля значение по умолчанию, то есть, если пользователь не укажет значение определенного поля - оно будет автоматически проставлено СУБД. Значение по умолчанию определяется ключевым словом DEFAULT
при определении столбцов оператором CREATE TABLE
.
2. Обновление таблиц
Для того, чтобы изменить таблицу в SQL используется оператор ALTER TABLE
. При использовании данного оператора необходимо ввести следующую информацию:
- - имя таблицы, которую мы хотим изменить
- - перечень изменений, которые мы хотим сделать.
Для примера давайте добавим новую колонку в таблицу Sellers
, в которой будем указывать телефон реализатора:
ALTER TABLE
Sellers ADD
Phone CHAR (20)
Кроме добавления столбцов, мы можем их удалять. Давайте теперь удалим поле Phone
. Для этого пропишем следующий запрос:
ALTER TABLE
Sellers DROP COLUMN
Phone
3. Удаление таблиц
Удаление таблиц осуществляется с помощью оператора DROP TABLE
. Чтобы удалить таблицу Sellers_new
, мы можем прописать следующий запрос:
DROP TABLE
Sellers_new
Во многих СУБД применяются правила, предотвращающие удаление таблиц, которые являются уже связаны с другими таблицами. Если эти правила действуют и вы удаляете такую таблицу, то СУБД блокирует операцию удаления до тех пор, пока не будет удалена связь. Такие меры предотвращают случайное удаление нужных таблиц.
Последнее обновление: 09.07.2017
Создание базы данных
Для создания базы данных используется команда CREATE DATABASE
.
Чтобы создать новую базу данных откроем SQL Server Management Studio. Нажмем на назначение сервера в окне Object
Explorer и в появившемся меню выберем пункт New Query
.
В центральное поле для ввода выражений sql введем следующий код:
CREATE DATABASE usersdb
Тем самым мы создаем базу данных, которая будет называться "usersdb":
Для выполнения команды нажмем на панели инструментов на кнопку Execute или на клавишу F5. И на сервере появится новая база данных.
После создания базы даных, мы можем установить ее в качестве текущей с помощью команды USE
:
USE usersdb;
Прикрепление базы данных
Возможна ситуация, что у нас уже есть файл базы данных, который, к примеру, создан на другом компьютере. Файл базы данных представляет файл с расширением
mdf, и этот файл в принципе мы можем переносить. Однако даже если мы скопируем его компьютер с установленным MS SQL Server,
просто так скопированная база данных на сервере не появится. Для этого необходимо выполнить прикрепление базы данных к серверу.
В этом случае применяется выражение:
CREATE DATABASE название_базы_данных
ON PRIMARY(FILENAME="путь_к_файлу_mdf_на_локальном_компьютере")
FOR ATTACH;
В качестве каталога для базы данных лучше использовать каталог, где хранятся остальные базы данных сервера. На Windows 10
по умолчанию это каталог C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA
.
Например, пусть в моем случае файл с данными называется userstoredb.mdf. И я хочу этот файл добавить на сервер
как базу данных. Вначале его надо скопировать в выше указанный каталог. Затем для прикрепления базы к серверу надо использовать следующую команду:
CREATE DATABASE contactsdb
ON PRIMARY(FILENAME="C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\userstoredb.mdf")
FOR ATTACH;
После выполнения команды на сервере появится база данных contactsdb.
Удаление базы данных
Для удаления базы данных применяется команда DROP DATABASE
, которая имеет следующий синтаксис:
DROP DATABASE database_name1 [, database_name2]...
После команды через запятую мы можем перечислить все удаляемые базы данных. Например, удаление базы данных contactsdb:
DROP DATABASE contactsdb
Стоит учитывать, что даже если удаляемая база данных была прикреплена, то все равно будут удалены все файлы базы данных.