Создание, удаление таблицы
Create table table_name
(column_name data_type [null | not_null] [,…])
Пример:
Create_table tt
(s1 varchar(10) not null,
s2 varchar (20));
drop table tt
Вставка, удаление и изменение данных
Добавление строк
INSERT
INSERT table_name VALUES (expressions [, …n]
После ключевого слова VALUES в скобках перечисляются значения для всех столбцов таблицы кроме столбца счетчика (IDENTITY) и столбца times-tamp
Примеры:
INSERT authors VALUES(‘237-55-67’,’Malow’,’Gena’,…)
Для нескольких столбцов
INSERT authors (tel,fam)
VALUES (‘244-66-99’,’Ivanow’)
SELECT …INTO
Позволяет автоматически создавать новую таблицу на основе результата выборки данных.
SELECT {column_name [ AS column_alias], …n}
INTO new_table FROM {sourse_table, …n} [<select_options>]
column_name – имя столбца одной из таблиц, указанных в списке FROM
AS column_alias – присваивается псевдоним столбцу в новой таблице
INTO new_table – на основе выборки будет создана новая таблица
FROM {…} – список таблиц из которых берутся данные
select_options – подразумевает применение команд Where, Order by, Grup by и т.д.
Пример
SELECT ot AS “Отдел”,tn,f INTO bd10 FROM bd WHERE ot=200 or ot=100
Изменение данных
UPDATE
(table_name WITH {<table_hint_limited> […n]) | view_name |rowset_function_limited}
SET
{colum_name={expression | default | null}
| {([FROM {<table_sourse>} […n] [WHERE <search_condition>]}
| [WHERE CURRENT OF {{[GLOBAL] cursor_name} |cursor_variable_name)]}
[OPTION [<query_hint> [,…n])
(table_name WITH {<table_hint_limited> - указывается имя таблицы, которую меняем.
Перечисляются хинты, устанавливающие режимы блокировки данных в изменяемой таблице. За одну операцию модифицируются данные одной таблицы.
view_name – имя изменяемого представления
rowset_function_limited – задается набор изменяемых строк
colum_name={expression | default | null – указывается, какое значение будет записано в столбце.
FROM {<table_sourse> - перечень таблиц в которых используются данные .
WHERE <search_condition – условия выборки изменяемых строк
WHERE CURRENT OF {{[GLOBAL] cursor_name} |cursor_variable_name)]} – обновление данных в курсорах.
OPTION [<query_hint> [,…n] – для контроля оптимизатора при выполнении изменений.
Пример:
UPDATE bd10 SET ot+1, tn=tn-1, f=left(f,1)+’. ‘+f WHERE ot=100
Временные таблицы
Создаются в базе данных tempdb и глобальные хранятся до конца сеанса, а локальные видны только с того листа запроса в котором они созданы.
Create Table #CCC (a1 dec(7,2), a2 char(10)) - Локальная
Create Table ##CCC (a1 dec(7,2), a2 char(10)) - Глобальная
Типы данных
_____________________
CHAR, VARCHAR Cимвольный а1 varchar(30)
BIT, BIT VARYING Битовый a1 bit(4)
NUMERIC, DECIMAL (DEC), Точные числа Десятич. формат a1 dec(7,2)
INTEGER (INT), SMALLINT Точные числа Большое число a1 int(17)
Маленькое число а1 smallint
- до 32767
FLOAT, REAL, Округл. числа 5.2E6
DOUBLE PRECISION Округл. числа
DATE, TIME, TIMESTAMP Дата / Время a1 DATE
INTERVAL Интервал interval year(2) to month
Interval hour to second(4)
SQL_VARIANT Может содержать любой тип данных
Переменные
Локальные переменные
DECLARE @переменная тип_данных ПРИМЕР: DECLARE @a1 int, @a2 int
DECLARE @переменная Table
(определение таблицы)
Присвоение значение переменной
Set @a1=’Hello, World’
Select @a1=’Hello, World’
Select @a1=MAX(OK) FROM bd с указанием другого оператора SELECT
INSERT INTO @a1 SELECT * FROM i1
INSERT INTO @a1 VALUES (…) добавить строки в переменную табл.типа
--- Пример: Табличные переменные
declare @a2 table
( tn int, ot1 int, f char(20))
---Запись в локальную перемену из таблицы
insert int @al
select tn, of, f from bd where ot=200
---Измерение локальной переменной
update @al set ot1=222
---Запись в локальную переменную данных
insert into @a2
VALUES ( 55,22,’Петров’)
Глобальные переменные
Они предоставляются системой SQL Server, не могут создаваться пользователем. Предоставляют информацию о текущем статусе SQL Server.
Обозначаются @@.....
Переменные конфигурирования
ПРИМЕР: @@CONNECTIONS – число соединений с момента запуска сервера
Статические переменные
ПРИМЕР: @@CPU_BUSY – время затраченное процессором с момента запуска сервера
Системные переменные
ПРИМЕР: @@ROWCOUNT – кол.строк которые использованы в последнем операторе
Индексы
Для ускорения поиска данных можно создавать индексы. Индекс - это
системная таблица, построенная по значениям заданного столбца таблицы.
Значения столбца Строки, в которых встречается такое значение
Кофе 32 33
Крупа 20 21
Молоко 7 8 12 18 22 24 28 31
Мясо 2 6 9 13 14
Овощи 1 3 17 23 15
Рыба 4 5 10 11
Фрукты 25 26 27 29 30
Яйца 16 19
Решение о том, использовать или не использовать какой-либо индекс при обработке
запроса принимается не пользователем, а оптимизатором СУБД, который учитывает множество факторов - размер таблиц, тип используемых структур хранения данных, статистическое распределение данных в таблицах и индексах и т.д.
Несмотря на то, что индексы увеличивают объем базы данных, их следует
использовать как для отдельных столбцов таблицы, так и для комбинации
нескольких ее столбцов (например, для комбинации: Фамилия, Имя, Отчество).
CREATE [UNIQUE] INDEX имя_индекса ON базовая_таблица
(столбец [[ASC] | DESC] [, столбец [[ASC] | DESC]] ...);
Пример: CREATE UNIQUE INDEX tn1 ON i1(tn);
В больших (более 1000 строк) таблицах поиск индексированных значений
выполняется на порядок быстрее, чем поиск неиндексированных, а в очень
больших таблицах - на два-три порядка.
при удалении или добавлении строки таблицы должны быть перестроены все индексы, построенные для ее столбцов, а при изменении значения индексированного столбца - индекс этого столбца. Когда модифицируется много - несколько сотен (тысяч) строк
- и после модификации каждой строки перестраиваются все ее индексы,
время модификации может быть на порядок (несколько порядков) больше
времени модификации строк с неиндексированными столбцами. Поэтому
перед модификацией множества строк таблицы целесообразно уничтожить
индексы ее столбцов.
Целесообразно строить индексы лишь для тех столбцов, которые используются в WHERE и ORDER BY фразах запроса, а перед модификацией большого числа строк таблиц с индексированными столбцами эти индексы следует уничтожить.
DROP INDEX имя индекса.
Представления
это виртуальная таблица, которая сама по себе не существует, но для пользователя выглядит таким образом, как будто она существует.