- •Історія розвитку баз даних
- •2.Перспективи розвитку систем управління базами даних.
- •Перспективи розвитку систем управління базами даних
- •Основні поняття та визначення бд
- •Архітектура бази даних. Фізична та логічна незалежність
- •5. Поняття інформаційно-логічної моделі
- •Етапи життєвого циклу бази даних
- •Основні функції субд
- •Класифікація моделей даних
- •Типова організація сучасної субд
- •11.Ієрархічна модель даних.
- •12.Моделі засновані на інвертованих списках.
- •13.Реляційні бази даних.
- •14.Основні оператори реляційної алгебри.
- •15. Основні елементи er-моделі
- •16. Основні етапи побудови логічної моделі
- •17. Таблиці, унікальність і ключі
- •18. Зовнішні ключі і домени
- •1. Цілісність сутностей
- •2. Цілісність значень
- •21. Перша нормальна форма
- •22. Друга нормальна форма
- •23. Третя нормальна форма
- •Четверта нормальна форма
- •Нормальна форма Бойса-Кодда (нфбк)
- •П’ята нормальна форма
- •Кодування та набори сортування в sql
- •Тема 3. Створення таблиць
- •1. Команда створення таблиці.
- •2. Заборона значення null за допомогою обмеження not null
- •Властивість identity оператора create table
- •Обмеження primary key оператора create table
- •Обмеження foreign key оператора create table
- •Обмеження unique оператора create table
- •Обмеження check оператора create table
- •Обмеження default оператора create table
- •Вказівка стовпців в операторі select
- •42.Використання арифметичних операторів в запиті на вибірку даних
- •43.Використання директиви group by
- •44.Об'єднання результатів запиту за допомогою директиви union
- •45.Використання строкових функцій
- •46.Використання числових функцій
- •47.Додавання даних до таблиці за допомогою оператора insert
- •48.Використання та синтаксис оператора replace
- •49.Використання оператора update
- •50.Видалення даних в sql
48.Використання та синтаксис оператора replace
Оператор REPLACE працює точно так само, як INSERT:
ви можете додати до таблиці дані за допомогою оператора INSERT
-, за винятком того, що якщо старий запис у даній таблиці має те ж значення індексу UNIQUE або PRIMARY KEY, що і нова, то стара запис перед занесенням нової буде видалена.
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...),(...),...
или REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
SELECT ...
или REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
SET col_name=expression, col_name=expression,...
Іншими словами, команда REPLACE не надає доступу до заміщуваного запису. У деяких старих версіях MySQL такий доступ іноді опинявся можливим, але це був дефект, який вже виправлений.
Для використання REPLACE у вас повинні бути привілеї INSERT і DELETE для таблиці.
При використанні команди REPLACE функція mysql_affected_rows () поверне значення, рівне 2, якщо стара рядок була замінена новою.
Пояснюється це тим, що в таблицю вставляється рядок після того, як віддаляється дублікат.Це дозволяє легко визначати, яку дію справила команда REPLACE - додавання або заміщення рядки. Досить просто перевірити, яке число повернула функція mysql_affected_rows () - 1 (рядок додана) або 2 (заміщена).
Слід враховувати, що, якщо не використовуються індекси UNIQUE або PRIMARY KEY, то застосування команди REPLACE не має сенсу, так як вона працює просто як INSERT.
49.Використання оператора update
Для оновлення значень у стовпцях використовується оператор UPDATE. Спрощений синтаксис цього оператора виглядає наступним чином:
UPDATE table_name SET column_name_1 = value [, column_name_n = value] WHERE column_name comparison_operator value
Перше, що ви повинні вказати, - це ім'я таблиці. Як ви вже знаєте, до імені таблиці можна також додати ім'я бази даних і її власника. Як і у випадку оператора SELECT, директива WHERE використовується для визначення рядків, які потрібно змінити. Директива WHERE оператора SELECT дозволяє звузити діапазон пошуку рядків, які потрібно вибрати. А в операторі UPDATE директива WHERE використовується для вказівки рядків, які потрібно змінити, а не відобразити, як в операторі SELECT.
Примітка. За допомогою оператора UPDATE можна виправити помилки, допущені при введенні значень у стовпці.
наступному прикладі в записі про співробітника Боба Сміта змінюються значення в стовпцях Department і Badge (тобто його перевели в інший відділ, в результаті чого змінився його ідентифікаційний номер). Якби в таблиці містилося кілька рядків, відповідних ім'я Боб Сміт, то у всіх цих рядках назва відділу та ідентифікаційний номер були б змінені.
UPDATE Employee SET Department = 'SALES', Badge = 1232 WHERE Name = 'BOB SMITH'
За допомогою оператора UPDATE можна оновити не тільки таблиці, але і види, Для цього в директиві UPDATE замість імені таблиці потрібно просто вказати ім'я виду. Багато операторів звертаються з видами точно так само, як і з таблицями.
За допомогою оператора UPDATE можна змінити декілька рядків, які задовольняють 11 критерієм, визначеним у директиві WHERE. У наступному прикладі значення SALES з шпальти Department змінюється на MARKETING у всіх рядках, де воно зустрічається.
UPDATE Employee SET Department = 'MARKETING' WHERE Department = 'SALES'
Примітка. Використовуючи оператор UPDATE, будьте дуже уважні і вказуйте тільки ті рядки, які необхідно змінити. Якщо ви пропустите директиву WHERE, то зміни, визначені в директиві SET будуть застосовані до кожного рядка таблиці.
Нижче наведено приклад зміни всіх рядків таблиці UPDATE Employee SET Wageclass = 'WO'
Існує дві 'причини, no яким оператор UPDATE:; може не містити директиву WHERE.
По-перше, її могли пропустити випадково.
А по-друге, іноді дійсно необхідно змінити абсолютно всі рядки таблиці. Наприклад, якщо ви додаєте до таблиці новий стовпець з допомогою команди ALTER TABLE, то в наслідку в усі його рядки можуть бути введені елементи NULL. Щоб внести у всі рядки цього стовпця ненульові елементи, слід скористатися оператором UPDATE без директиви WHERE.
Примітка. Щоб дізнатися число рядків, які будуть змінені за допомогою оператора UPDATE, можете використовувати оператор SELECT COUNT (*) з точно такою ж директивою WHERE (тобто критерієм), як і в операторі UPDATE.
Якщо спочатку ви визначите кількість рядків, які збираєтеся оновити, а потім вже застосуєте оператор UPDATE, то, швидше за все, зможете уникнути помилок в завданні критерію (тобто в директиві WHERE).
