Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
statya_chernovik -2.docx
Скачиваний:
9
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Values (50763,'Комп.Технологии','123456',

'Куралбаев З.К. ');

Создание записи «преподаватели». Так как значения для всех столбцов предоставлены и перечислены в том же порядке, что и столбцы в таблице, то не нужно в параметре column_list.указывать имена столбцов:

INSERT INTO DekanatSchema.Teacher

Values ('Ахметова', 'Галия ', 'Сериковна', ' ', ' ',50763,77512);

Создание нескольких записей в одной команде с использованием функции GETDATE():

 

INSERT INTO StudySchema.Progress(Stud_ID, Grup_ID,Subj_ID, Teach_ID, Pr_DATE, OCENKA)

VALUES (1, 1, 2, 1, GETDATE(),9),

(2, 1, 1, 1, GETDATE(),8),

(3, 2, 2, 3, GETDATE(),9);

 

Вставка данных в порядке, отличном от порядка столбцов таблицы

INSERT INTO DekanatSchema.Chair (Chair_NAME, Chair_ID, Chair_CHIEF, Chair_PHONE)

Values ('Комп.Технологии', 50763, 'Куралбаев з.К. ','123456');

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

 

INSERT INTO имя_таблицы [(<список столбцов>) ]

SELECT <список полей> FROM ….

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

Создадим таблицу Читательпри помощи оператора CREATE TABLE

 

CREATE TABLE REARDER

(ID_TICKET bigint,

R_Fam char(20) NOT NULL,

R_Name char(10),

R_OTCH char(15),

R_GRUP int,

R_YEAR datetime )

 

Тогда мы можем сделать всех студентов читателями нашей библиотеки одним оператором:

 

INSERT INTO REARDER (ID_TICKET, R_Fam , R_Name, R_OTCH,R_GRUP, R_YEAR )

SELECT Stud_ID as ID_TICKET,STUD_Fam as R_Fam,STUD_IMYA as R_Name, STUD_Otch as R_OTCH, Grup_Name as GRUP,

YEAR(Stud_Date) AS R_YEAR

FROM StudySchema.Students INNER JOIN StudySchema.Grup

ON StudySchema.Students.Group_Id= StudySchema.Grup.Grup_ID

 

В последнем случае, в таблицу может вставиться более одной записи. Если в таблице есть другие поля требующие заполнения, но не указанные в операторе INSERT, для них будет установлено значение по умолчанию, либо null, если значение по умолчанию не указано.

Так как стандарт языка SQL не предполагает наличия автоинкрементируемых полей, то соответственно не существует и единого подхода. Здесь мы покажем, как это реализуется в MS SQL Server. Оператор

SET IDENTITY_INSERT < имя таблицы > { ON | OFF };

Яндекс.Директ

Промышленный дизайнПроф. переподготовка дистанционно. Диплом. Все Регионы. Звоните!rostbk.comАдрес и телефон

Что случилось в Нижнем Новгороде?Происшествия и чрезвычайные ситуации в Нижнем Новгородеyandex.ruНижний Новгород

отключает (значение ON) или включает (OFF) использование автоинкремента. Поэтому чтобы вставить строку со значением 15 в поле code, нужно написать

 

SET IDENTITY_INSERT Chair ON;

INSERT INTO Chair (Chair_ID,Chair_NAME,Chair_PHONE, Chair_CHIEF)

Values (50766,'Инж.Графики','322223','Иванов а.К.');

 

Удаление строк из таблиц.

 

Это еще одна операция, которую необходимо уметь выполнять для поддержки базы данных. Для удаления строк из таблицы используется команда DELETE.

Синтаксис:

DELETE

[ FROM ] table_name

[ WHERE < search_condition > ]

Замечание:аргументы и ограничения рассматриваются в справке оператора DELETE

Примечания:

· если предложение WHERE не указано, DELETE удаляет все строки из таблицы;

· если указаны условия поиска, они применяется к каждой строке таблицы. Все строки, результат условий поиска для которых — TRUE, помечаются для удаления;

· до проведения удалений для каждой строки в таблице проводится оценка условий поиска;

· все строки, помеченные для удаления, удаляются в конце выполнения инструкции DELETE перед проверкой ограничения целостности;

· сбой инструкции DELETE может произойти, если она нарушит ограничение FOREIGN KEY. Если инструкция DELETE удаляет несколько строк и одна из них нарушает ограничение, происходит отмена инструкции и возврат ошибки, удаления строк не происходит.

Пример кода

В следующем примере показано удаление всех строк из таблицы «Преподаватели»:

В следующем примере показано удаление всех строк из таблицы «Преподаватели», для которых «Должность» равно «Ассистент»:

 

DELETE FROM DekanatSchema.Teacher

WHERE (Teach_Position= 'Ассистент');

Удаление записей из нескольких таблиц

При удалении можно задавать конструкции JOIN связывающие несколько страниц, аналогично тому, как связываются таблицы в запросах выборки SELECT:

DELETE <Имя записи для удаления> FROM <Имя Таблицы1> JOIN <Имя Таблицы2> ON <условие объединения>;

 

Удаление с подзапросом

 

DELETE FROM StudySchema.Students

WHERE Stud_ID IN

(SELECT Stud_ID

FROM StudySchema.Progress

WHERE Оценка = 2 OR Оценка IS NULL

GROOP BY Stud_ID

HAVING COUNT(*) > 2 )

 

В отличие от файловых СУБД, SQL Server не помечает записи как удаленные, а удаляет их физически, то есть восстановлению они не подлежат.

Будьте осторожны с командой DELETE!

 

Полная очистка всех строк

 

TRUNCATE — в языках, подобных SQL, DML - операция очистки всех строк в таблице. Логически эквивалентна операции DELETE без оператора WHERE, однако выполняется быстрее и требует меньших ресурсов системы

TRUNCATE TABLE <Имя Таблицы>

Последствием выполнения такой команды является полное удаление всех строк таблицы <Имя Таблицы>.

Отличия от оператора DELETE

Основные отличия операторов TRUNCATE и DELETE, которые могут присутствовать в различных реализациях СУБД:

· Операция TRUNCATE не записывает в журнал событий удаление отдельных строк. Вследствие чего не может активировать триггеры.

· После операции TRUNCATE для некоторых СУБД (например, Oracle) следует неявная операция COMMIT. Поэтому удаленные в таблице записи нельзя восстановить операцией ROLLBACK. Но существуют и СУБД, в которых операция TRUNCATE может участвовать в транзакциях, например, Microsoft SQL Server.

· Операция DELETE блокирует каждую строку, а TRUNCATE - всю таблицу.

· Операция TRUNCATE не возвращает какого-то осмысленного значения (обычно возвращает 0) в отличие от DELETE, которая возвращает число удаленных строк.

· Операция TRUNCATE в некоторых СУБД (например, MySQL или Microsoft SQL Server), сбрасывает значение счетчиков (для полей с AUTOINCREMENT / IDENTITY).

 

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

Изменение значения поля

 

Для изменения существующих значений в столбцах таблицы используется инструкция UPDATE.

Яндекс.Директ

Курсы дляучителей информатики!Дистанционные курсы дляучителей информатики. ФИПКиП! Диплом! Идет набор!

Интернет вчастный домРОСТЕЛЕКОМИнтернет 30-200 Мбит. Цифровое ТВ. Проверьте адрес на сайте РОСТЕЛЕКОМ!

 

Синтаксис:

UPDATE table_name

[ WITH ( < table_hint > ) ]

SET

{ column_name = { expression | DEFAULT | NULL }} [ ,...n ]

[ WHERE < search_condition > ]

Замечание:аргументы и ограничения рассматриваются в справке оператора UPDATE

 

Примечания

• столбцы идентификаторов обновлять нельзя;

• если не указано предложение WHERE, обновляются все строки в таблице;

•перед обновлением строк в предложении WHERE проводится оценка условий поиска для каждой строки в таблице;

• если обновление строки нарушает ограничение или правило, либо настройку значения NULL для столбца, а также если новое значение является несовместимым типом данных, происходит отмена инструкции и возврат ошибки без обновления записей;

• все столбцы char имеют определенную границу по правому краю, до которой их можно заполнять;

• из данных, добавленных в varchar, удаляются все замыкающие пробелы, за исключением строк, содержащих только пробелы. Такие строки усекаются до одной пустой строки.

 

Пример

В следующем примере показано обновление таблицы преподавателей путем установления ученой степени преподавателю с порядковым номером 2:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]