Типы данных в языке SQL, операторы языка SQL для создания, удаления и модификации таблиц.
Типы данных SQL разделяются на три группы:
— строковые;
— с плавающей точкой (дробные числа);
— целые числа, дата и время.
Типы данных SQL строковые
Типы данных SQL | Описание |
CHAR(size) | Строки фиксированной длиной (могут содержать буквы, цифры и специальные символы). Фиксированный размер указан в скобках. Можно записать до 255 символов |
VARCHAR(size) | Может хранить не более 255 символов. |
TINYTEXT | Может хранить не более 255 символов. |
TEXT | Может хранить не более 65 535 символов. |
BLOB | Может хранить не более 65 535 символов. |
MEDIUMTEXT | Может хранить не более 16 777 215 символов. |
MEDIUMBLOB | Может хранить не более 16 777 215 символов. |
LONGTEXT | Может хранить не более 4 294 967 295 символов. |
LONGBLOB | Может хранить не более 4 294 967 295 символов. |
ENUM(x,y,z,etc.) | Позволяет вводить список допустимых значений. Можно ввести до 65535 значений вSQL Тип данных ENUM список. Если при вставке значения не будет присутствовать в списке ENUM, то мы получим пустое значение. Ввести возможные значения можно в таком формате: ENUM ( ‘X’, ‘Y’, ‘Z’) |
SET | SQL Тип данных SET напоминает ENUM за исключением того, что SET может содержать до 64 значений. |
Типы данных SQL с плавающей точкой (дробные числа) и целые числа
Типы данных SQL | Описание |
TINYINT(size) | Может хранить числа от -128 до 127 |
SMALLINT(size) | Диапазон от -32 768 до 32 767 |
MEDIUMINT(size) | Диапазон от -8 388 608 до 8 388 607 |
INT(size) | Диапазон от -2 147 483 648 до 2 147 483 647 |
BIGINT(size) | Диапазон от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
FLOAT(size,d) | Число с плавающей точкой небольшой точности. |
DOUBLE(size,d) | Число с плавающей точкой двойной точности. |
DECIMAL(size,d) | Дробное число, хранящееся в виде строки. |
Типы данных SQL — Дата и время
Типы данных SQL | Описание |
DATE() | Дата в формате ГГГГ-ММ-ДД |
DATETIME() | Дата и время в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС |
TIMESTAMP() | Дата и время в формате timestamp. Однако при получении значения поля оно отображается не в формате timestamp, а в виде ГГГГ-ММ-ДД ЧЧ:ММ:СС |
TIME() | Время в формате ЧЧ:ММ:СС |
YEAR() | Год в двух значной или в четырехзначном формате. |
Создание таблицы в базе данных производится командой CREATE TABLE.
Синтаксис:
CREATE TABLE [IF NOT EXISTS] tbl_name [(create_definition. )] [table_options] [select_statement]
tbl_name— Задает имя таблицы, которая будет создана в текущей базе данных. Если никакая база данных на момен вызова команды CREATE TABLE не была принята текущей, то возникнет ошибка выполнения команды.
IF NOT EXISTS— Если указан этот параметр и производится попытка создать таблицу с дублирующим именем (т.е. таблица с таким именем в текущей БД уже есть), то таблица создана не будет и сообщение об ошибке не появиться. В противном случае таблица также создана не будет, но команда вызовет ошибку.
create_definition— Определяет внутреннюю структуру создаваемой таблицы (названия и типы полей, ключи, индексы и т.д.)
Возможные синтаксисы create_definition:
col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [PRIMARY KEY] [reference_definition]
PRIMARY KEY (index_col_name. )
KEY [index_name] (index_col_name. )
INDEX [index_name] (index_col_name. )
UNIQUE [INDEX] [index_name] (index_col_name. )
[CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name. ) [reference_definition]
col_name — Задает имя столбца в создаваемой таблице.
Type— Задает тип данных для столбца col_name.
Возможные значения параметра type:
§ INT[(length)] [UNSIGNED] [ZEROFILL]
§ BIGINT[(length)] [UNSIGNED] [ZEROFILL]
§ DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
§ FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
§ DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
[NOT NULL | NULL] —Указывавет, может ли данных столбец содержать значение NULL или нет. Если не указано, то по умолчанию принимается NULL (т.е. может содержать NULL).
[DEFAULT default_value]— Задает значение по умолчанию для данного столбца. При вставке новой записи в таблицу командой INSERT если значение для поля col_name явно указано не было, то устанавливается значение default_value.
[AUTO_INCREMENT]— При вставке новой записи в таблицу поле с этим атрибутом автоматически получит числовое значение, на 1 больше самого большого значения для этого поля в текущий момент времени. Данная возможность обычно используется для генерирования уникальных идентификаторов строк. Столбец, для которого применяется атрибут AUTO_INCREMENT, должен иметь целочисленный тип. В таблице может быть только один столбец с атрибутом AUTO_INCREMENT. Так же этот столбец должен быть проиндексирован. Отсчет последовательности чисел для AUTO_INCREMENT начинается с 1. Это могут быть только положительные числа.
Следующий пример создает таблицу users с 3 полями, где первое поле — уникальный идентификатор записи, второе поле — имя пользователя, а третье поле — его возраст:
create table Water_Area(
id int auto_increment,
constraint pk_Water_Area primary key nonclustered(id))
create table Station(
id_Water_Area int not null,
name varchar(20) not null,
Latitude float(4) null,
Longitude float(4) null,
coordinates varchar(40) null,
coordinates_modern varchar(30) null,
comment varchar(70) null
constraint pk_Station primary key nonclustered(id))
Удаление таблицы.
Для удаления таблицы служит команда DROP TABLE.
DROP TABLE [IF EXISTS] tbl_name [, tbl_name. ] [RESTRICT | CASCADE]
tbl_name — Имя удаляемой таблицы.
IF EXISTS – Если указан этот параметр, то при попытке удаления несущестующей таблицы ошибки не возникнет. В противном случае возникнет ошибка выполнения команды.
RESTRICT и CASCADE Не несут никакой функциональности. Оставлены для упрощения переноса программы.
Drop table Station
Модификация таблиц.
Для модификации служит команда Alter Table.
ALTER TABLE TableName1ADD | ALTER [COLUMN] FieldName1FieldType [(nFieldWidth [, nPrecision])][NULL | NOT NULL] [CHECK lExpression1 [ERROR cMessageText1]][DEFAULT eExpression1][PRIMARY KEY | UNIQUE][REFERENCES TableName2 [TAG TagName1]][NOCPTRANS] |[DROP [COLUMN] FieldName]
Команда ALTER TABLE изменяет определение таблицы одним из следующих способов:
-добавляет ограничение целостности
-переопределяет столбец (тип данных, размер, умалчиваемое значение)
-модифицирует характеристики памяти или иные параметры
-включает, выключает или удаляет ограничение целостности или триггер.
alter table Station
alter table Station
add constraint fk_Station_Relation_Water_Area foreign key (id_Water_Area) references Water_Area (id)
Как поменять тип данных в таблице sql
SELECT * Into XLImport FROM OPENROWSET(‘Microsoft.Jet.OLEDB.4.0’,’Excel 8.0;Database= + FileName + , ‘SELECT * FROM [tarzona_mn$]’)
���������� ���������:
�������� ����� ������ �� �������
—-
SELECT * Into XLImport FROM OPENROWSET(‘Microsoft.Jet.OLEDB.4.0’,’Excel 8.0;Database=» + OpenDialog1->FileName + «‘, ‘SELECT * FROM [tarzona_mn$]
—-
CREATE TABLE [dbo].[XLImport] (
[��/�] [float] NULL ,
[��� ������] [float] NULL ,
[������������ ������] [nvarchar] (255) NULL ,
[��� ����] [float] NULL ,
[������������ ����] [nvarchar] (255) NULL
) ON [PRIMARY]
GO
Введение в SQL. Создание, изменение и удаление таблиц. Выборка данных из таблиц. Создание SQL-запросов. Обработка данных в SQL. Методика.
Введение в SQL. SQL — структурированный язык запросов, который дает возможность создавать и работать в реляционных базах данных, которые являются наборами связанной информации сохраняемой в таблицах. Язык ориентирован на операции с данными, представленными в виде логически взаимосвязанных совокупностей таблиц-отношений. Важнейшая особенность структур этого языка состоит в ориентации на конечный рез-тат обработки данных, а не на процедуру этой обработки. SQL сам определяет, где находятся данные, индексы и даже какие наиболее эффективные последовательности операций следует использовать для получения рез-та.
Изначально, SQL был основным способом работы пользователя с базой данных и позволял выполнять следующий набор операций: создание в базе данных новой таблицы; добавление в таблицу новых записей; изменение записей; удаление записей; выборка записей из одной или нескольких таблиц (в соответствии с заданным условием); изменение структур таблиц.
Со временем SQL обеспечил возможность описания и управления новыми хранимыми объектами (например, индексы, представления, триггеры и хранимые процедуры). SQL остаётся единственным механизмом связи между прикладным программным обеспечением и базой данных. В то же время, современные СУБД, а, также, информационные системы, использующие СУБД, предоставляют пользователю развитые средства визуального построения запросов. Каждое предложение SQL — это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе.
В соответствии с тем, какие изменения происходят в базе данных, различают следующие типы запросов: на создание или изменение в базе данных новых или существующих объектов; на получение данных; на добавление новых данных (записей); на удаление данных; обращения к СУБД.
Основным объектом хранения реляционной базы данных является таблица, поэтому все SQL-запросы — это операции над таблицами. В соответствии с этим, запросы делятся на:
-запросы, оперирующие самими таблицами (создание и изменение таблиц);
-запросы, оперирующие с отдельными записями (или строками таблиц) или наборами записей.
Каждая таблица описывается в виде перечисления своих полей (столбцов таблицы) с указанием: типа хранимых в каждом поле значений; связей между таблицами (задание первичных и вторичных ключей); информации, необходимой для построения индексов.
Таким образом, использование SQL сводится, по сути, к формированию всевозможных выборок строк и совершению операций над всеми записями, входящими в набор.
Команды SQL разделяются на следующие группы:
1. Команды языка определения данных — DDL (Data Definition Language). Эти SQL команды можно использовать для создания, изменения и удаления различных объектов базы данных.
2. Команды языка управления данными — DCL (Data Control Language). С помощью этих SQL команд можно управлять доступом пользователей к базе данных и использовать конкретные данные (таблицы, представления и т.д.).
3. Команды языка управления транзакциями — TCL (Тгаnsасtiоn Соntrol Language). Эти SQL команды позволяют определить исход транзакции.
4. Команды языка манипулирования данными — DML (Data Manipulation Language). Эти SQL команды позволяют пользователю перемещать данные в базу данных и из нее.
Операторы SQL делятся на:
-операторы определения данных (Data Definition Language, DDL)
-CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.)
-ALTER изменяет объект
-DROP удаляет объект
-операторы манипуляции данными (Data Manipulation Language, DML)
-SELECT считывает данные, удовлетворяющие заданным условиям
-INSERT добавляет новые данные
-UPDATE изменяет существующие данные
-DELETE удаляет данные
-операторы определения доступа к данным (Data Control Language, DCL)
-GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом
-REVOKE отзывает ранее выданные разрешения
-DENY задает запрет, имеющий приоритет над разрешением
-операторы управления транзакциями (Transaction Control Language, TCL)
-COMMIT применяет транзакцию.
-ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции.
-SAVEPOINT делит транзакцию на более мелкие участки.
Преимущества: 1.Независимость от конкретной СУБД (тексты SQL-запросов, содержащие DDL и DML, могут быть достаточно легко перенесены из одной СУБД в другую). 2. Наличие стандартов (наличие стандартов и набора тестов для выявления совместимости и соответствия конкретной реализации SQL общепринятому стандарту только способствует «стабилизации» языка). 3. Декларативность (с помощью SQL программист описывает только то, какие данные нужно извлечь или модифицировать)
Недостатки:1.Несоответствие реляционной модели данных 2.Повторяющиеся строки 3. Неопределённые значения (nulls) 4. Явное указание порядка колонок слева направо 5. Колонки без имени и дублирующиеся имена колонок 6. Отсутствие поддержки свойства «=» 7. Использование указателей 8. Высокая избыточность
2.2 Создание, изменение и удаление таблиц.
Создание таблицы:
Таблицы создаются командой CREATE TABLE. Эта команда создает пустую таблицу — таблицу без строк. Значения вводятся с помощью DML команды INSERT. Команда CREATE TABLE в основном определяет им таблицы, в виде описания набора имен столбцов указанных в определенном порядке. Она также определяет типы данных и размеры столбцов. Каждая таблица должна иметь по крайней мере один столбец.
CREATE TABLE <TABLE-NAME>
Изменение таблицы:
Команда ALTER TABLE – это содержательна форма, хотя ее возможности несколько ограничены. Она используется чтобы изменить определение существующей таблицы. Обычно, она добавляет столбцы к таблице. Иногда она может удалять столбцы или изменять их размеры, а также в некоторых программах добавлять или удалять ограничения. Типичный синтаксис чтобы добавить столбец к таблице :
ALTER TABLE <TBODY></TBODY></TABLE><TABLE name>ADD <COLUMN name>
Столбец будет добавлен со значением NULL для всех строк таблицы. Новый столбец станет последним по порядку столбцом таблицы. Вообще то, можно добавить сразу несколько новых столбцов, отделив их запятыми, в одной команде. Имеется возможность удалять или изменять столбцы. Наиболее часто, изменением столбца может быть просто увеличение его размера, или добавление (удаление) ограничения.
Удаление таблица:
Нужно быть создателем таблицы, чтобы иметь возможность удалить ее. Поэтому не волнуйтесь о случайном разрушении ваших данных, SQL сначала потребует чтобы вы очистили таблицу прежде, чем удалит ее из базы данных. Таблица с находящимися в ней строками, не может быть удалена. Синтаксис для удаления вашей таблицы, если конечно она является пустой, следующая:
DROP TABLE < table name >;
2.3 Выборка данных из таблицы
SELECT — оператор DML языка SQL, возвращающий набор данных (выборку) из базы данных, удовлетворяющих заданному условию. В большинстве случаев, выборка осуществляется из одной или нескольких таблиц. При формировании запроса SELECT пользователь описывает ожидаемый набор данных: его вид (набор столбцов) и его содержимое (критерий попадания записи в набор, группировка значений, порядок вывода записей и т. п.).
Запрос выполняется следующим образом: сначала извлекаются все записи из таблицы, а затем для каждой записи набора проверяется её соответствие заданному критерию. Если осуществляется слияние из нескольких таблиц, то сначала составляется произведение таблиц, а уже затем из полученного набора отбираются требуемые записи.
Формат запроса с использованием данного оператора:
SELECT список полей FROM список таблиц WHERE условия…
[DISTINCT | ALL] FROM <список таблиц>
[WHERE <предикат – условие выборки или соединения>]
[GROUP BY <список полей результата>]
[HAVING <предикат-условие для группы>]
[ORDER BY <список полей, по которым требуется упорядочит ввод>]
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 автоматически исключает дубликаты строк из вывода.
Компьютерные сети
Папиллярные узоры пальцев рук — маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни.
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ — конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой.
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций.
Изменение, заполнение и обновление таблиц
После создания пустых таблиц следующим логическим шагом является заполнение их данными и обновление этих данных. Для этого в Transact-SQL предназначена пара инструкций INSERT – UPDATE.
Однако, часто на позднем этапе проектирования возникает необходимость изменить саму схему таблиц. Например, если изменился первичный ключ или тип данных столбца. Чтобы не удалять старые таблицы и не создавать их заново с помочью CREATE TABLE c правильными параметрами, применяется инструкция ALTER TABLE. Применение этих трех конструкций рассматривается ниже.
Заполнение таблиц
Заполнить таблицу данными можно через конструкцию CREATE TABLE, однако более эффективным подходом является разделять создание таблицы и ее заполнение, особенно новичкам в SQL, потому что:
- визуально понятнее;
- удобнее, если наполнение таблиц поэтапное.
Чтобы получить следующий вид таблицы:
Потребуется создать ее с помощью CREATE TABLE и заполнить, применив инструкцию INSERT. Следующая инструкция добавляет одну строку в уже созданную нами таблицу housemates:
В примере выше следует различать два блока конструкции INSERT:
INTO – указывающий на таблицу в которую добавляются данные
VALUES – инициализирующий построчный ввод.
В параметрах (в скобках) блока INTO перечисляются столбцы в порядке их следования. Допустима запись без параметров, если порядок следования столбцов при создании таблицы и заполнении ее совпадают. Следующий код идентичен предыдушему:
Если необходимо поменять порядок заполнения, то это нужно явно указать:
В блоке VALUES производится построчная инициализация в порядке следования столбцов блока INTO. Заполнение строки – это перечисление значений ячеек в скобках. Значения перечисляются через запятую, строки между собой тоже.
Применить конструкцию INSERT можно только к тем столбцам в которых еще нет данных. Иначе возникнет ошибка выполнения запроса.
Обновление таблицы
Потребность в обновлении таблиц возникает если необходимо изменить уже введенные в таблицу данные. Выполняется с помощью инструкции UPDATE. Если INSERT работает только с пустыми таблицами, то UPDATE только с заполненными. Если запрос будет адресован к незаполненным ячейкам, возникнет ошибка.
Следующий код присвоит новый почтовый ящик жителю дома с идентификационным номером 103.
Блок SET – это блок изменений. Если нужно обновить значение нескольких ячеек, то они перечисляются через запятую.
Изменение таблицы
На поздних этапах проектирования или уже после разработки базы часто возникает необходимость:
- добавить или удалить столбец;
- изменить тип столбца;
- назначить столбец или группу столбцов первичным или внешним ключом, или снять эти ограничения.
Для всех этих операций предназначена инструкция переопределения ATER TABLE.
Чтобы добавить столбец инструкция ALTER TABLE применяется с предложением ADD. Добавим новый столбец к таблице housemates из прошлого раздела:
Нужно применить к нему предложение ALTER COLUMN внутри ALTER TABLE:
Удаляется столбец применением DROP COLUMN внутри ALTER TABLE:
Первичный или внешний ключ удаляется и добавляется конструкциями ALTER TABLE ADD CONSTRAINT/DROP CONSTRAINT, соответственно:
Если попытаться присвоить таблице первичный ключ, который уже там есть транслятор запросов вернет ошибку. Поэтому если в таблице уже есть первичный ключ, следует снять его и назначить группу столбцов первичным ключом. Например, так: