Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Языки SQL  [new]
anc32
Member

Откуда: Кострома
Сообщений: 146
Для чего в книгах по SQL приводятся входящие в него языки DML, DDL и т.д.? Значение об этих языках имеет какую-нибудь практическую ценность?
10 окт 15, 10:59    [18262008]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
anc32,

А что такое вобще скл в вашем понимании?
10 окт 15, 11:17    [18262049]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
jk1d
Member

Откуда:
Сообщений: 7
anc32,

Классификация же.
10 окт 15, 13:54    [18262308]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34696
anc32
Для чего в книгах по SQL приводятся входящие в него языки DML, DDL и т.д.? Значение об этих языках имеет какую-нибудь практическую ценность?


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

в общем, если тебе лень по это читать, отложи на потом, когда нужно будет - вернешься.
11 окт 15, 08:21    [18263828]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
beggar_21
Member

Откуда:
Сообщений: 27
DDL - Data Definition Language (Statements) - Язык описания данных. Включает в себя предложения создания, удаления, изменения структур - таблиц, представлений, триггеров, процедур т.д. Проще говоря запрос относится к DDL если он начинается с
ALTER, CREATE, DROP, DISABLE, ENABLE, TRUNCATE TABLE, UPDATE STATISTICS (целиком).

DML - Data Manipulation Language - Язык изменения данных. Все что начинается с SELECT, UPDATE, INSERT, MERGE и т.д.

/*DDL - STATEMENT*/
CREATE DATABASE MY_BASE;
GO
USE MY_BASE;
GO
/*DDL - STATEMENT*/
CREATE TABLE MY_TABLE
(
COL NVARCHAR(5)
);
GO
/*DML - STATEMENT*/
INSERT INTO MY_TABLE(COL)
VALUES(N'QWERT');
GO
/*DML - STATEMENT*/
INSERT INTO MY_TABLE(COL)
VALUES(N'ASDFG');
GO
/*DML - STATEMENT*/
UPDATE MY_TABLE
SET COL=N'ZXCVB'
WHERE COL=N'QWERT';
GO
/*DML - STATEMENT*/
DELETE FROM MY_TABLE
WHERE COL='ZXCVB';
GO

Вообще ни DML ни DDL языками не являются. Формально они словари (vocabulary) языка SQL. Но "L" в конце как-то прижилось.
DML и DDL имеют одинаковую практическую ценность.
11 окт 15, 18:31    [18264604]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2407
beggar_21
Проще говоря запрос относится к DDL если он начинается с
TRUNCATE TABLE .
.

правда? "очистить" это разве "описание данных"? скорее таки манипуляция с данными
12 окт 15, 10:59    [18266272]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
o-o
Guest
StarikNavy
beggar_21
Проще говоря запрос относится к DDL если он начинается с
TRUNCATE TABLE .
.

правда? "очистить" это разве "описание данных"? скорее таки манипуляция с данными

холиварчик?
вот мнение раз: Dejan Sarka: Truncate Table – DDL or DML Statement?
а вот мнение MS: TRUNCATE TABLE (Transact-SQL)

К сообщению приложен файл. Размер - 23Kb
12 окт 15, 11:12    [18266337]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8570
DDL - это то, что воздействует на схему объектов БД.
DML - то, что воздействует на данные.
12 окт 15, 11:17    [18266371]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
beggar_21
Member

Откуда:
Сообщений: 27
StarikNavy
beggar_21
Проще говоря запрос относится к DDL если он начинается с
TRUNCATE TABLE .
.

правда? "очистить" это разве "описание данных"? скорее таки манипуляция с данными


Правда-правда: truncate = drop+create
12 окт 15, 11:29    [18266447]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37224
beggar_21
Правда-правда: truncate = drop+create
Это вы сами придумали, или прочитали где?
12 окт 15, 11:30    [18266456]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
beggar_21
Member

Откуда:
Сообщений: 27
Где-то прочитал. И где-то в логах row-based репликации MySQL видел именно drop+create как реакция на truncate. Не спроста же truncate относится к DDL(S).
12 окт 15, 13:13    [18267083]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
beggar_21
Member

Откуда:
Сообщений: 27
не row-based а statement-based.
12 окт 15, 13:15    [18267092]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3637
beggar_21
Где-то прочитал. И где-то в логах row-based репликации MySQL видел именно drop+create как реакция на truncate. Не спроста же truncate относится к DDL(S).


тынц

Инструкция TRUNCATE TABLE обладает следующими преимуществами по сравнению с инструкцией DELETE:
Используется меньший объем журнала транзакций.
Инструкция DELETE производит удаление по одной строке и заносит в журнал транзакций запись для каждой удаляемой строки. Инструкция TRUNCATE TABLE удаляет данные, освобождая страницы данных, используемые для хранения данных таблиц, и в журнал транзакций записывает только данные об освобождении страниц.
Обычно используется меньшее количество блокировок.
Если инструкция DELETE выполняется с блокировкой строк, для удаления блокируется каждая строка таблицы. Инструкция TRUNCATE TABLE всегда блокирует таблицу (включая блокировку схемы (SCH-M)) и страницу, но не каждую строку.
В таблице остается нулевое количество страниц, без исключений.
После выполнения инструкции DELETE в таблице могут все еще оставаться пустые страницы. Например, чтобы освободить пустые страницы в куче, необходима, как минимум, монопольная блокировка таблицы (LCK_M_X). Если операция удаления не использует блокировку таблицы, таблица (куча) будет содержать множество пустых страниц. В индексах после операции удаления могут оказаться пустые страницы, хотя эти страницы будут быстро освобождены процессом фоновой очистки.
12 окт 15, 13:16    [18267097]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37224
beggar_21
Где-то прочитал.
Или вы фигню прочитали, или не про MSSQL, или не так поняли.
beggar_21
И где-то в логах row-based репликации MySQL видел именно drop+create как реакция на truncate. Не спроста же truncate относится к DDL(S).
А вы все выводы о поведении MS SQL делаете на основании своих знаний о MySQL?
12 окт 15, 13:17    [18267100]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8570
beggar_21
StarikNavy
пропущено...

правда? "очистить" это разве "описание данных"? скорее таки манипуляция с данными


Правда-правда: truncate = drop+create


Нет, сиквел не уничтожает метаданные. drop+create работают другие СУБД, но не эта.
12 окт 15, 13:46    [18267247]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2407
o-o
холиварчик

не - разу сдаюсь. учеба уже давно была. раз академически это ддл, пущай будет ддл
12 окт 15, 14:35    [18267570]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2407
StarikNavy,

*сразу
"прошу прощения, был неправ, выспылил, погорячился" (С)
12 окт 15, 14:36    [18267574]     Ответить | Цитировать Сообщить модератору
 Re: Языки SQL  [new]
o-o
Guest
StarikNavy,

не, ну лично я как раз к Dejan Sarka присоединяюсь.
на вопрос "DDL это или DML" можно отвечать: у MS это DDL (ссылка в БОЛ)
а себе как хочешь, так и классифицируешь
12 окт 15, 14:57    [18267707]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить